PROJECT DOCUMENTATION

5.1. 최종 검수

배포 갱신·접수 완료 · 최종 배포본 재검수 기록 필요기준일 2026-09-20담당 장민석 · PM/아키텍트

설치·실행 재현, 배포 환경 동작, 예외 처리와 유지보수 절차를 확인합니다.

검수 기준

접수 전 검수 대상은 두 가지입니다. ① 로컬 개발 환경에서 핵심 시나리오 재현은 9월 18일에 확인했습니다. ② 배포 주소(localhostdaegu.cloud)의 흐름 검증은 9월 19일 페르소나 10건 모두 상담자료까지 도달했습니다. 후속 수정 18건은 로컬에서 다시 10/10 통과했습니다. 9월 20일 팀 확인 기준 최신 변경 배포 갱신과 접수는 완료했습니다. 최종 배포본의 추가 검수 결과는 별도 기록이 필요합니다. 별도 고객 환경으로의 구축·이전은 현재 작업 목록에 없습니다.

검수 항목 통과 조건 현재 판정
자동 테스트 백엔드·프론트엔드 테스트 결과와 실행 시점 확인 원본 로그 기준 pytest 603 passed · 1 skipped, Vitest 226/46 files(9/19 밤)
핵심 시나리오 질문 → 지도 → 최초 계산·재계산·계획 선택 → 상담자료 → 공식 안내 로컬 통과 — 확장된 깔때기·AI 리포트 E2E PASS(9/18)
배포 환경 배포 주소에서 전체 흐름과 AI 리포트 실시간 전송 첫 배포 검증 통과(9/19) — 페르소나 10/10·SSE 순차 수신
데이터 해석 지표의 분모·기간·건수, 위험도 표현이 확인 가능한 사실만 말함 연도 전달·분모 설명·30일 규칙·상대 순위·추정 라벨 반영 완료. 스냅샷 2~4주 관측 후 재평가

개발 환경 — HW / SW

항목 내용 현재 상태
HW 로컬 개발 머신, 모델 평가 GPU는 NVIDIA RTX 5060 Ti 16 GB qwen + gemma4 동시 상주 11.58 GiB 실측(9/18). 기본 서비스 경로는 Gemini 유지
SW Python 3.14 · FastAPI, Next.js 16 · React 19, PostgreSQL 17 + pgvector, Redis 7 · Neo4j 5(미사용), Docker Compose 로컬 검증
AI 기본 Gemini API, 로컬 대체 qwen3-embedding:4b@2560·gemma4:12b 양쪽 모델 평가 완료. 2560 halfvec 변경·Gemini 재색인·provider 설정화 완료(9/19). 자동 폴백 없음
네트워크 백엔드 8300, 프론트엔드 3300. 데이터 스토어는 127.0.0.1에만 공개(5437·6381·7476·7689) 9/19 Vercel + Cloudflare Tunnel 첫 배포
검수 버전 9/19 밤 작업 로그 기준 최종 제출 커밋·배포 버전은 별도 기록 필요. 코드 프리즈 해제(DEC-018)

개발 내용 Flow와 동작 과정

시작 → 설정 확인 → 입력 → 데이터 처리 → AI 추론 → 결과 확인 → 로그 확인 → 종료의 실제 경로입니다. 상세 동작은 상세 설계와 같습니다.

  1. 데이터 스토어와 백엔드·프론트엔드를 실행하고 백엔드 상태 확인(/health).
  2. 첫 화면에 한 문장 입력 → 지역·업종·예산 인식.
  3. 지도에서 행정동 지표·위험도 확인(기본 2025년).
  4. 비용·자금 입력 → 최초안 계산 → 조건 수정·현재안 계산 → 자금 구성 비교·계획 선택.
  5. 상담자료 생성 → 계획·비교·계산표·정책자금·질문·상권 확인 → Markdown 다운로드·브라우저 인쇄/PDF 저장·공식 안내 확인. 지역 분석(review)도 별도 검증.
  6. 수집 로그(logs/*.log)와 서버 로그에서 오류·키 흔적이 없는지 확인.

설치·소스 이전 매뉴얼

서비스 저장소 인수인계 문서에 적힌, 실제로 실행해 확인한 명령입니다.

docker compose up -d db redis neo4j                       # 데이터 스토어
cd backend && .venv/bin/python -m pytest tests/ -q        # 테스트 전용 DB 자동 생성
cd backend && .venv/bin/uvicorn main:app --port 8300      # 백엔드
cd frontend && npm run dev                                # 프론트엔드 :3300
cd frontend && npx vitest run                             # 프론트엔드 테스트
node frontend/tests/funnel.cjs                            # 깔때기 E2E(headless)
  1. 소스 저장소를 받고 main의 검수 버전 확인
  2. Python 가상환경·Node 의존성 설치
  3. 루트 .env 또는 backend/.env에 외부 API 키 입력(값은 커밋하지 않음)
  4. 데이터 스토어 실행, 마이그레이션·마스터 시드 적용
  5. 수집기 실행으로 공공데이터 적재(인허가 전량 약 18분), 검색 색인 생성
  6. 서비스 실행과 /health 확인
  7. 핵심 시나리오 재현(E2E 스크립트)
  8. crontab 등록, 로그 확인·재시작

알려진 재현 제한: 새로 받은 저장소에서는 일부 테스트가 저장소에 없는 원본 데이터 파일을 요구해 그대로 통과하지 않습니다. 새 환경에서 처음부터 설치해 재현하는 절차는 아직 검증하지 않았습니다.

이 Jekyll 문서 사이트의 실행 방법은 저장소 README에 따로 정리했습니다.

로컬 → 배포 환경 이전

배포 구조는 Vercel(프론트엔드)·로컬 GPU 머신 + Cloudflare Tunnel(백엔드)·로컬 Docker(DB)로 정했습니다. 장민석이 구조를 맡고 김충식이 백엔드, 류준이 프론트엔드를 배포합니다. 9월 19일 Cloudflare 네임서버 이전과 첫 배포를 마쳤습니다. 운영 주소에서 페르소나 10건을 확인했으며 9월 20일 팀 확인 기준 최신 변경 배포 갱신과 접수도 완료했습니다. 서비스 저장소에 배포 런북과 가이드를 작성했습니다.

확인 항목 기록할 내용 상태
배포 대상 프론트엔드 Vercel, 백엔드 로컬 머신의 Tunnel, DB 로컬 Docker 첫 배포 완료(9/19) · 배포 갱신 완료(9/20 팀 확인)
환경 대응 Gemini 키, CORS_ALLOW_ORIGINS, 워커 1개, NEXT_PUBLIC_API_BASE, SSE 버퍼링 해제 운영 CORS 두 오리진 허용·타 오리진 400 확인. 추가 수집기 키의 운영 검증 결과는 별도 기록 필요
데이터 보관 로컬 DB 유지, 백업·복원 및 운영 수집 절차 확인 최종 운영 검수 전
연결 확인 도메인·TLS, 프록시 뒤 SSE 스트림, 외부 API 첫 배포 스모크 통과(9/19)
재검증 같은 입력으로 깔때기·AI 리포트 재실행 운영 페르소나 10/10·개선 후 로컬 10/10. 최종 배포본 재검수는 남음
복구 배포 실패 시 되돌리는 절차 미정

사용자 설정·예외 처리

사용자가 조정하는 값 범위·기본값 반영 시점
지도 기준 연도 2019~2026, 기본 2025. 2026은 “(집계 중)” 분석 요청에서 지표·위험도까지 전달, 캐시 프록시 누락 수정·검증
재무 입력 13항목 금액 0 이상, 비율 0 이상 1 미만, 원가율 + 수수료율 < 1. 대출금리 기본값은 최신 중소기업 대출금리(실패 시 4.5%) 시뮬레이션 실행 시
AI 추가 질문 500자 이하 분석 시작 시
상담 계산안 최초안·현재안·선택안·변경 이유, 미입력 확인 목록 계산·선택 시 화면 초안 갱신, 자료 생성 시 서버 스냅샷 기록

검수한 예외 동작(잘못된 입력 422, 없는 분석 요청 404, AI 실패 시 대체 문구)은 TC-004에 정리했습니다.

유지보수와 검수 결과

  • 로컬 자동 테스트 실행 기록 — 9/19 밤, pytest 603 passed · 1 skipped, Vitest 226/46 files
  • 로컬 핵심 시나리오 재현 — 9/18, 깔때기·AI 리포트 E2E PASS
  • 수집 작업의 실패 감지 — 가장 나쁜 종료 코드 기록, 중복 실행 방지(9/18 수정)
  • 데이터 정리 백업 — 타 도시 뉴스 삭제 전 백업과 복원 검증(9/18)
  • 새 환경 설치·실행 절차 재현
  • 첫 배포 주소에서 정상 흐름·SSE·CORS 확인(9/19)
  • 최신 변경 배포 갱신 완료(9/20 팀 확인)
  • 최종 배포본 정상·오류 시나리오 재검수 결과 기록
  • 외부 API 키 재발급·교체 후 단건 200·수집기 정상 종료(9/19 밤)
  • 알려진 제한과 미해결 결함 최종 정리(단일 워커, 검색 기간 필터 없음, 뉴스 수집 종료 코드 등)
  • 검수 일자·버전·수행자·판정 기록

이 페이지의 통과 표시는 원본 서비스 작업 로그의 결과입니다. 최신 수치는 9/19 밤 603/226을 사용하고 개별 검증의 환경·시점은 구분합니다(실행 결과 기준).

현재 판정: 로컬·첫 배포 검증 통과 · 배포 갱신·접수 완료(9/20 팀 확인) · 최종 배포본 재검수 기록 필요. 테스트 번호별 상세 결과는 시나리오 테스트에 있습니다.


맨 위로

053 · DAEGU · 2026