조달청 우수제품 뷰어 아키텍처 — 의사결정 매트릭스

5 옵션 × 5 평가 기준 가중 점수 비교 · 5/22 데모 D-1 기준

작성: 2026-05-21 옵션 수: 5 평가 기준: 5 (가중치 합 100%) 방법: 의사결정 매트릭스

1최종 결론

1위: 옵션 B (hwpx-intelligence/viewer 확장) — 가중 점수 8.95 / 10. 데모일 안 완성 가능성·회귀 리스크·LLM 의존도 3개 핵심 기준에서 모두 1위. eval-system-premium 무손상 + 4시간 작업.

옵션 랭킹

순위옵션가중 점수점수 분포
1B — hwpx-intelligence/viewer 확장8.95
8.95
2C — 별도 repo (oosooproduct 발전)7.65
7.65
3A — apps/oosoo-viewer 신설6.65
6.65
4D — eval-system-premium 내부 분리4.15
4.15
5E — 현재 chat 제거 PR 진행3.75
3.75

2평가 기준 (가중치)

#기준가중치이유
1데모일 (5/22) 안 완성 가능성30%D-1 압박. 완성 못 하면 데모 자체 실패
2회귀/리스크 (기존 코드 영향)25%이미 PR #162 revert 학습. AdminGuard SSR 등 회귀 재발 방지
3H100 LLM 의존도 (적을수록 ↑)15%H100 vLLM 실서빙 미검증 리스크 회피
4데모 후 발전 가능성15%일회성 데모 vs 지속 발전 가능 아키텍처
5코드 분리/응집도15%도메인 경계 명확성. clean architecture

3옵션별 상세 점수

옵션 완성 가능성
(30%)
회귀 리스크
(25%)
LLM 의존
(15%)
발전 가능성
(15%)
분리/응집도
(15%)
가중 점수
B hwpx viewer 확장 9 10 10 7 8 8.95
C 별도 repo 7 9 9 6 7 7.65
A apps/oosoo-viewer 신설 2 8 8 9 10 6.65
D 내부 분리 5 4 4 4 3 4.15
E chat 제거 PR 진행 5 3 5 3 2 3.75

41위 옵션 B — 상세

옵션 B — hwpx-intelligence/viewer 확장
9 × 0.30 + 10 × 0.25 + 10 × 0.15 + 7 × 0.15 + 8 × 0.15 = 8.95

장점 (3개)

장점근거
회귀 0eval-system-premium 무손상. PR #162 / AdminGuard SSR 회귀 / matcher cross-DB 문제 일체 무관
LLM 의존 0hwpx 파서만 호출. H100 vLLM 실서빙 검증 부담 없음. 데모일 인프라 리스크 최소
이미 셋업됨viewer/index.html, detail.html, i18n.js, tokens.css, wrangler.toml 존재 — Cloudflare Pages 배포 1 명령

단점 (3개)

단점완화 방안
hwpx-intelligence repo 와 결합 (분리 응집도 차)장기적으로 옵션 A 로 분리 가능. 데모일까지는 B 가 빠름
vanilla JS — TypeScript / 컴포넌트 안 됨정적 페이지 + fetch 만 — 복잡도 낮아 vanilla 충분
backend 영속화 없음 (in-memory)데모는 1회 시연 시나리오라 무방. 향후 옵션 A 로 발전 시 backend 추가

작업 시퀀스

#단계예상 시간
1viewer/index.html 에 다중 HWPX 업로드 input + fetch 로직 추가1시간
2업로드 progress polling (/api/jobs/{id})30분
3완료 후 ProductRecord fetch (/api/records) + 카드/표 render1시간
4다중 제품 side-by-side compare 화면 (column 자동 분할)1시간
5Cloudflare Pages 배포 (wrangler 명령)10분
6로컬 hwpx-intelligence + viewer e2e 시연 리허설30분
총 ~4시간 — 5/22 데모 D-1 안 충분히 가능.

5상황별 추천

상황추천이유
5/22 데모만 본다면B최단 + 회귀 0 + LLM 의존 0
데모 후 1~2개월 발전 계획B → AB 로 데모 통과 → 데모 후 A 로 monorepo app 마이그레이션
monorepo CI/CD 표준 준수 절대 우선A발전 가능성 9 / 분리 10 최고. 단 D-1 안 불가능 → 데모 늦추거나 B 임시 운영
chat 도 살리고 싶다E현재 PR 보강 — 단 회귀 리스크 7/10, AdminGuard SSR fix 추가 필요

6옵션별 1줄 요약

A — apps/oosoo-viewer 신설

monorepo 안 새 Next.js + FastAPI app. 가장 깨끗하지만 D-1 불가능.

B — hwpx-intelligence/viewer 확장 ★

이미 정적 페이지 + wrangler 셋업 존재. vanilla JS + fetch 만 추가. 4시간.

C — 별도 repo (oosooproduct 발전)

vercel 기존 프로젝트의 hardcoded 부분만 real API 로 교체. 외부 repo 동기화 부담.

D — eval-system-premium 내부 분리

같은 app 안 router prefix /oosoo/* + chat disable. 분리 효과 적음.

E — 현재 chat 제거 PR 진행

7 파일 수정 + DB 마이그레이션 + AdminGuard SSR fix. 회귀 위험 최고.

7액션 플랜 (옵션 B 선택 시)

# 1. hwpx-intelligence 작업 시작
cd ~/Mirror/Github/1_Projects/hwpx-intelligence
git checkout -b feat/viewer-multi-upload-compare

# 2. viewer/ 정적 페이지 수정
#    - index.html: 다중 업로드 input + fetch
#    - detail.html: ProductRecord render
#    - compare.html (신설): side-by-side 비교

# 3. 로컬 e2e
.venv/bin/python -c "import uvicorn; from hwpx_intelligence.web import create_app; \
    uvicorn.run(create_app(output_dir='/tmp/hwpx'), host='127.0.0.1', port=8001)"
# 브라우저: viewer/index.html 열어서 hwpx 파일 drop

# 4. Cloudflare Pages 배포
cd viewer
wrangler pages deploy . --project-name=oosoo-viewer

# 5. on-prem 환경변수 — viewer 가 on-prem hwpx 가리키도록 base URL 변수화
# (script.js 에 const HWPX_BASE = window.HWPX_BASE_URL ?? '...')
주의: hwpx-intelligenceprivate repo. 별도 PAT 또는 sub-repo 권한 확인 필요. CI 통합은 후순위 (데모일에는 로컬 push + 수동 deploy).