04. 갭 분석 및 PoC 구현 계획
본 문서는 보유 자산으로 즉시 충족되지 않는 요구사항(🟡 부분 / 🔴 미보유)을 솔직히 식별하고, 각 항목의 보유 기반 → 신규 구현 범위 → 난도를 제시한다. 사업계획서 「추진전략 / 리스크 관리」 작성 근거.
핵심 메시지 — 미보유 항목은 모두 기반 기술이 이미 확보되어 있어, 신규 구현이 아니라 기존 컴포넌트 위에 얇은 층을 추가하는 수준이다. 기술적 리스크가 통제 가능.
1. 갭 항목 요약
| # | 요구 | 현 상태 | 갭 | 난도 |
|---|---|---|---|---|
| G1 | 항목별 초안 스트리밍(첫 응답 5초) | 🔴 일괄 응답 | SSE 푸시 계층 신규 | 중 |
| G2 | 예산 80%/100% 알림·차단 | 🟡 토큰 집계만 | 임계 정책·차단 미들웨어 신규 | 하 |
| G3 | LLM Fallback(30초 타임아웃 모델 전환) | 🟡 동종 fallback+retry | 타임아웃 트리거 모델 전환 보강 | 하 |
| G4 | 개인정보 비식별·ZDR·시큐어 삭제·감사로그 | 🔴 보안 기반만 | 마스킹/삭제/로그 모듈 신규 | 중 |
| G5 | 자금 유형 분류체계 | 🟡 유사도 매칭 | 정책자금 자금명 라벨·매핑 테이블 | 하 |
| G6 | KWCAG 2.2 접근성 | 🟡 aria 일부 | 전면 준수·자동 검사 | 중 |
| G7 | 동시 50인·99.5% / K8s | 🟡 Celery 큐 | K8s 매니페스트·부하테스트 | 중 |
2. 항목별 구현 전략
G1. 항목별 초안 스트리밍 — 중
- 보유 기반:
ai_engine의 Celery 항목 단위 분해(rfp_tasks.py),task_prerun/postrun시그널, ai_dashboard의 Redis 캐시 이벤트. - 신규 범위: ① 엔진
stream=True옵션 활성화(OpenAI 호환 API는 SSE 네이티브 지원) ② FastAPIStreamingResponse/SSE 엔드포인트 ③ Redis Pub/Sub로 항목별 부분 결과 푸시 ④ 프론트 EventSource 수신. - 참고 자산: 사내 SSE+Redis Pub/Sub 실시간 진행률 패턴 보유(타 프로젝트). 첫 응답 5초 목표는 "첫 항목 first-token 푸시"로 달성.
G2. 예산 알림·차단 — 하
- 보유 기반:
llm_mixin._track_usage()·logging_mixin._log_llm_call()로 토큰·비용이 이미 집계됨. ai_dashboard에 조회 API 존재. - 신규 범위: ① 일/월 예산 설정 테이블 ② 호출 전 누적 비용 체크 미들웨어(80% 알림 / 100% 차단) ③ 대시보드 알림 위젯. 데이터는 이미 흐르고 있어 정책 계층만 추가.
G3. LLM Fallback 강화 — 하
- 보유 기반:
model_selector.select_model()동종 fallback, Celerysoft_time_limit·max_retries=3. - 신규 범위: 주 모델 호출에 30초 타임아웃 가드 → 예외 시
select_model로 대체 provider 자동 호출(민간↔로컬 vLLM 교차). 팩토리·셀렉터가 이미 있어 연결만 추가.
G4. 개인정보 비식별·ZDR·시큐어 삭제 — 중
- 보유 기반: Infisical 시크릿 관리,
.gitleaks.toml스캔, 네트워크 격리, MinIO/PostgreSQL 분리. - 신규 범위:
- 마스킹: LLM 호출 전 사업자등록번호·기업명 등 정규식/NER 마스킹 → 응답 후 복원(프롬프트 빌더에 전·후처리 훅 삽입).
- ZDR: 민간 LLM 제공사 DPA·비저장 확약(계약/운영 절차) + OpenRouter/Gemini의 no-retention 옵션 적용.
- 시큐어 삭제: 다운로드 완료 시 임시 데이터 즉시 삭제 + 7일 TTL 잡(Celery beat) → MinIO 객체·임시 레코드 purge.
- 감사 로그: 운영 DB와 분리된 로그 스토어(append-only) 3년 보존.
- 데이터 흐름·저장 계층이 명확히 분리되어 있어 훅 지점이 분명함.
G5. 자금 유형 분류 — 하
- 보유 기반:
RFPRequirement.category,rfp_query_service유사도 매칭,PromptRegistry유형별 프롬프트. - 신규 범위: 정책자금 자금명(창업기반·혁신성장·신시장진출 등) ↔ 신청서 서식 ↔ 프롬프트 매핑 테이블 정의. 공단 제공 공고문·서식으로 구축.
G6. KWCAG 2.2 접근성 — 중
- 보유 기반: rfp-gen 프론트 aria 속성 일부, Tailwind 반응형,
role="dialog"/aria-modal. - 신규 범위: 전 컴포넌트 시맨틱·키보드 내비·명도대비·스크린리더 점검 + axe 자동 검사 CI 도입. (사내 a11y axe 진단 도구 보유.)
G7. 동시성·가용성·K8s — 중
- 보유 기반: Celery+Redis 분산 큐(동시 처리 기반),
infra/k8sbase/apps/services 구조 정의. - 신규 범위: K8s 매니페스트 실제 작성(HPA·readiness/liveness), 50인 동시 부하 테스트, SLA 모니터링. Queue 방식은 RFP가 명시적으로 허용.
3. PoC 단계 권고 (8~10주 가정)
| 주차 | 작업 | 보유 자산 활용 |
|---|---|---|
| 1–2 | 정책자금 도메인 데이터 적재(공고문·서식·예시 RAG 인덱싱), 자금 유형 분류 테이블(G5) | data_pipeline·knowledge_hub 그대로 |
| 2–4 | 유형별 프롬프트 작성, HWP/PDF 서식 매핑·출력(B-2) | PromptRegistry·hwpx_generator 그대로 |
| 3–5 | 스트리밍(G1)·Fallback 강화(G3) | ai_engine Celery/셀렉터 확장 |
| 4–6 | 공단 포털 SSO 연동(scope 추가), 웹 에디터 도메인 적용 | portal-nginx·rfp-gen 프론트 |
| 5–7 | 비식별·ZDR·시큐어 삭제·감사로그(G4) | 보안 기반 + 신규 훅 |
| 6–8 | 예산 차단(G2)·대시보드, KWCAG(G6) | ai_dashboard 확장 |
| 7–9 | OnPrem(CSAP형) 배포·부하 테스트(G7)·UAT | docker-compose.onprem 그대로 |
| 9–10 | 안정화·결함 0건·가용률 검증 | — |
4. 리스크 관리
| 리스크 | 대응 |
|---|---|
| 민간 LLM API 장애(공단 인지 한계) | 모델 팩토리 다중 provider + 로컬 vLLM fallback(폐쇄망 모드는 외부 의존 0) |
| 한글 서식 레이아웃 깨짐 | python-hwpx 네이티브 조립(변환 방식 회피) + HWP_EXPORT_REQUIREMENTS 명세 |
| 할루시네이션 | RAG 근거 주입 + Few-Shot + 면책 문구 삽입 |
| 개인정보 유출 | 호출 전 마스킹 + ZDR 계약 + 망 격리 + 감사로그 |
| 동시성 한계 | Celery Queue + K8s HPA, RFP 허용 Queue 방식 |
5. 결론
미보유·부분 항목 7건 중 하(下) 난도 3건은 기존 데이터/컴포넌트에 정책 계층만 추가, 중(中) 난도 4건도 기반 기술(SSE·Celery·격리 저장·a11y 도구)을 보유해 신규 R&D 리스크가 없다. 반면 통상 가장 어려운 CSAP형 외부망 독립 배포·한국어 RAG·HWPX 네이티브 출력은 즉시 보유. 종합적으로 본 PoC는 기보유 자산의 도메인 재적용 중심이며, 정량 목표(30초·80% 적합도·99.5%) 달성 가능성이 높다.