6. 예비 테스트 (D-1 운영 점검)
2026-05-19 운영 환경 (fingu.grinda.ai) 직접 호출 결과 · KSEL 시험 D-1 시점
CRITICAL — KPI 2 / KPI 3 단건 시연 실패
운영 도메인에서 POST /api/kpi/2/sample 와 /api/kpi/3/sample 호출 시 HTTP 500. 원인은 ENABLE_FINETUNED_PIPELINE=true 인데 finetuned vLLM 엔드포인트가 HTTP 400 Bad Request 반환. 시험 5 단계 (단건 시연) 에서 KPI 2 · 3 시연 시 검토자 화면에 500 에러 노출 위험.
권장 즉시 액션 (시험 시작 전): ① vLLM 엔드포인트 URL · 요청 schema 점검 ② 또는 ENABLE_FINETUNED_PIPELINE=false 로 임시 전환 → stub fallback 동작 ③ 또는 vLLM 서버 헬스 확인 후 재기동. 5/20 13:30 시작 전 30분 안에 처리 권장.
TL;DR
운영 read-only 5/5 정상, Pages 4/4 정상, 단건 sample 4/6 정상 (KPI 2/3 500), PR #62 CI 4/4 통과. KPI 2/3 vLLM 400 이슈 외에는 시험 진행 가능 상태.
운영 read-only5 / 5
단건 sample4 / 6 · KPI 2,3 500
Pages 라이브4 / 4
PR #62 CI4 passed
운영 deploy_id97f6660 (PR #61 머지)
6.1 운영 read-only 엔드포인트 (5/5 통과)
| # | 경로 | 상태 | 응답 시간 | 주요 응답 |
| 1 | GET /api/health | 200 | 6.35 s cold | deploy_id=97f6660, kpi_count=7, real=true, finetuned=true, agent=claude-sonnet-4-5 |
| 2 | GET /api/kpi | 200 | 0.97 s | KPI 7 메타 (id · name · target · pass_threshold · conditional_threshold) |
| 3 | GET /api/personas | 200 | 0.87 s | 6명 (jiyu / minjae / eunyoung / soyeon / junho / jaesung) |
| 4 | GET /api/agent/tools | 200 | 0.98 s | 8 도구 — full input_schema 포함 |
| 5 | GET /healthz | 200 | 0.73 s | "ok" |
첫 /api/health 가 6.35초 — cold start (real pipeline 모델 lazy load 추정). 두 번째 호출부터는 1초 이하 예상.
6.2 단건 sample 호출 (4/6 통과 · KPI 2/3 500)
| KPI | 상태 | 응답 시간 | 결과 / 오류 |
| ① 재무 F1 | 200 | 44.5 s cold | actual="budget_planning", assertion=exact_match. HF 모델 첫 로드 — 후속 호출 정상화 예상 |
| ② 텍스트 분류 | 500 | 1.03 s | RuntimeError: KPI2 finetuned vLLM endpoint 호출 실패: HTTP Error 400 |
| ③ BLEU | 500 | 0.63 s | RuntimeError: finetuned vLLM endpoint 호출 실패: HTTP Error 400 |
| ⑤ 개인화 | 200 | 0.56 s | score 0.279, 4 전략 점수 정상 (basic 0.20 / rec_driven 0.26 / engagement 0.30 / rec_engagement 0.36) |
| ⑥ NQ 검색 | 200 | 0.85 s | actual 5건 반환, recall_at_5=0.0 (단건 페르소나만 호출 → expected 빈 배열) |
| ⑦ 상품추천 | 200 | 0.58 s | Top-10 추천 정상 (insurance_whole_life 등), F1=0.0 (expected 없음) |
KPI 4 는 timing/스트림 별도 경로 → sample 호출 제외 (테스트 코드와 동일 정책).
KPI 2/3 에러 트레이스 (서버 로그)
File "/app/src/measurement/__init__.py", line 111, in _run_kpi2
raise RuntimeError(f"KPI2 finetuned vLLM endpoint 호출 실패: {e}") from e
RuntimeError: KPI2 finetuned vLLM endpoint 호출 실패: HTTP Error 400: Bad Request
File "/app/src/pipelines/finetune_inference.py", line 228, in _finetuned_generate
raise RuntimeError(f"finetuned vLLM endpoint 호출 실패: {e}") from e
RuntimeError: finetuned vLLM endpoint 호출 실패: HTTP Error 400: Bad Request
호출 위치: urllib.request.urlopen(req, timeout=60) → vLLM 서버가 400 응답. 요청 body schema 또는 endpoint URL 변경 가능성.
6.3 종합 리포트 페이지 외부 링크 (4/4 라이브 · GitHub 2건 404 false-positive)
6.4 PR #62 CI 최종 상태
| Job | 결과 | 시간 |
| api (통합 step 포함) | pass | 1m 21s |
| docker-build | pass | 36 s |
| frontend | skipping | — |
| CodeRabbit | pass | — |
| detect-changes | pass | 7 s |
mergeable: MERGEABLE, mergeStateStatus: BLOCKED (브랜치 보호 정책 — admin merge 필요). 시험 종료 후 사용.
6.5 시험 시작 전 조치 권장 (우선순위 순)
- vLLM 엔드포인트 점검 —
FINETUNED_KPI2_API_URL, FINETUNED_KPI3_API_URL 의 실제 URL 동작 확인 (헬스체크 호출). 400 원인이 요청 schema 변경인지 endpoint 다운인지 분리.
- 일시 ENABLE_FINETUNED_PIPELINE=false 전환 옵션 — vLLM 미해결 시 stub fallback 으로 KPI 2/3 단건 시연이 200 응답 유지 (실측 점수는 stub 기준). KSEL 시험관에게 사전 설명 필요.
- cold start warmup — 시험 30분 전
/api/health + KPI 1 sample 1회 호출 (HF 모델 RAM 로드 강제) → 첫 시연 응답 시간 단축.
- EBS 스냅샷 — DeprovisionAfter 2026-05-21 대비 시험 직후 1회 생성.
- 로그 스트리밍 세션 사전 가동 — 별도 노트북에서
docker logs -f fingu-tips-api 또는 /admin/logs 페이지 사전 열기.
6.6 통과 요약
| 구분 | 통과 / 전체 | 상태 |
| 운영 read-only | 5 / 5 | 정상 |
| 단건 sample | 4 / 6 | KPI 2/3 500 |
| 리포트 Pages | 4 / 4 | 정상 |
| 외부 GitHub PR 링크 | 2 / 2 | curl 404 · 브라우저 정상 |
| PR #62 CI | 4 / 4 | 통과 |
| 로컬 통합 테스트 (참고) | 23 / 23 × 3 회 | 결정성 보장 |