조달청 alpha 로컬 변경사항 — 제거 결정용

로컬 alpha (HEAD 6181505) 4 commits ahead of origin/feat/onprem-h100-deploy · 원격 push 안 됨

작성: 2026-05-21 로컬만 (push 전) 데모일: 2026-05-22 (D-1)

14 commits 요약 (위 = 최신)

#SHA한 줄분류
46181505fix: 업로드 버튼 label 패턴 (file picker 안정성)fix
3b577bbdchore: docker-compose 자족화 + bid_id 동봉 + chat dead-link 정리infra
22fc8326feat: chat 제거 + ai_engine 활용 강화 + bid_id 매핑 버그 수정refactor
1f73d326Revert "Revert #162" — Suman PR #162 코드 복원restore

2Commit 1 — PR #162 복원

f73d326Revert "Revert #162" — Suman PR #162 코드 복원

Suman 의 17 commits 의 squash 결과 (~48 파일 / +4,166 / -81). T1~T8 + Docs + UI 4 전체.

주요 추가 파일

영역파일
Backend DBalembic 0001_chat_tables.py, 0002_match_tables.py
Backend 어댑터ai_engine_client.py (chat + evidence), redis_client.py
Backend APIchat.py (6 endpoints), compare.py (3 endpoints + evidence), internal.py, proposals.py, specs.py
Backend modelschat.py, match.py, InMemoryStore
Backend schemaschat.py (chat 요청/응답 + Envelope + AIEvalChat*)
Backend tests28 tests (chat 14 + specs/proposals/webhook 14)
Backend infraDockerfile, entrypoint.sh, seed_demo_bid.py
Frontend pages/upload, /eval, /admin/(protected)/analysis/[id]/chat, /admin/(protected)/usage/chatbot
Frontend componentsChatPanel.tsx (1243 lines), UploadBar.tsx
Frontend testsPlaywright real-bff 프로젝트 + globalSetup
Frontend infraDockerfile (standalone)
Compose / Nginxapps/eval-system-premium/docker-compose.yml, infra/portal-nginx/nginx.conf, root compose include
Postgres initinfra/compose/postgres/init-databases.sh
Analysis pipelineservices/analysis_pipeline/tasks/analysis_tasks.py
DocsHANDOFF.md

3Commit 2 — chat 제거 + ai_engine 강화 + 버그 fix

2fc8326chat 제거 + ai_engine 활용 강화 + bid_id 매핑 버그 수정

+221 / -2,829 lines. chat 만 빼내고 ai_engine 어댑터는 evidence + summary 에 재활용.

삭제 (chat 9 파일)

파일이유
backend/app/api/chat.pychat 6 API 제거
backend/app/models/chat.pychat_message / chat_feedback ORM 제거
backend/app/schemas/chat.pychat 전용 schemas 제거
backend/alembic/versions/0001_chat_tables.pyDB 마이그레이션 제거
backend/tests/test_chat_api.pychat 14 tests 제거
frontend/...ChatSessionViewer.tsxviewer 제거
frontend/...analysis/[id]/chat/page.tsx페이지 제거
frontend/...usage/chatbot/page.tsxchatbot 사용 현황 제거
frontend/components/ChatPanel.tsx메인 chat 컴포넌트 (1243 lines)

신설

backend/app/schemas/common.pyEnvelope 공용 응답 wrapper
backend/app/schemas/ai_engine.pyAIEvalChatRequest/Response (ai_engine 호출용, chat 무관)

수정 (12 파일)

internal.pybid_id 매핑 버그 fix — designation_no 를 bid_id 로 쓰던 잘못된 매핑 제거
services/__init__.pyproposal_id = spec_id 결정성 (이전 prop-{uuid()} 비멱등)
models/__init__.pySpecRow.bid_id 필드 추가
api/specs.pyPOST /api/specs 에 bid_id Form field 추가
api/proposals.py신규 endpoint POST /api/proposals/{id}/summary — ai_engine 호출 + Redis 캐싱
api/compare.py, adapters/ai_engine_client.pyimport 경로 갱신 (common + ai_engine)
main.pychat router 등록 제거
alembic 0002_match_tables.pydown_revision None (0001 의존 제거)
tests/conftest.py, test_proposals_api.pyimport 경로 + assertion 갱신
frontend e2e/core-compare-mapping.spec.tsproposal_id test 갱신

4Commit 3 — 인프라 자족화 + FE bidId + dead-link

b577bbddocker-compose 자족화 + bid_id 동봉 + chat dead-link 정리

+106 / -30 lines (6 files). 외부 LLM 의존 strip + FE bidId 미연동 갭 해결 + chat dead-link redirect 정리.

변경파일효과
compose 의존 stripdocker-compose.ymlpostgres + redis 만 필수. ai-engine / hwpx / knowledge-hub optional
dev override 신설docker-compose.override.ymlhot-reload (volume + uvicorn --reload)
entrypoint 보강backend/entrypoint.shseed_demo_bid 자동 + BFF_WORKERS env
FE bidId 동봉frontend/lib/hwpx/client.tsUploadOptions.bidId + FormData append
useUploadJobs bidIdfrontend/lib/upload/UploadBar.tsx옵션 추가
dead-link fixfrontend/admin/(protected)/usage/page.tsxredirect 타겟 chatbot → feedback

5Commit 4 — 업로드 버튼 label fix

6181505업로드 버튼 label 패턴 (file picker 안정성)

+16 / -16 lines (1 file). HTML 표준 패턴으로 변경 — 일부 브라우저에서 display:none input 의 ref.click() 무시되는 버그 회피.

이전<button onClick={ref.click()}> + <input className=hidden>
이후<label> + <input className=sr-only> — 자식 input 클릭이 자동 위임

6추가 stub 파일 (커밋 안 됨)

파일이유
frontend/src/app/data/mock-analysis-list.ts/admin/analysis 페이지가 import 하는데 Suman 의 PR #162 에서 누락 → eval-system 에서 복사
frontend/src/app/data/demoDocs.ts/eval/docs/[docId] 페이지가 import 하는데 누락 → stub 신설

7제거 의사결정 매트릭스

데모일 핵심 = 다중업로드 + 파싱 + LLM structured output + 비교 (4 기능)

Commit / 변경데모 핵심?제거 시 영향권장
commit 1 f73d326 Revert revert★ 필수모든 기능 사라짐유지
commit 2 2fc8326 chat 제거 + 매핑 fix + summary★ 핵심chat 잔재 / bid_id 버그 / summary 사라짐유지
- chat 9 파일 삭제scope 정리chat 재현유지
- bid_id 매핑 fix비교 정확성같은 입찰 분산유지
- proposal_id 결정성일관성webhook/list 다른 id유지
- summary endpoint 신설nice-to-haveLLM 요약 사라짐데모 안 쓰면 제거 OK
- SpecRow.bid_id + Form field미연동 OK멀티 입찰 안 됨유지
commit 3 b577bbd 인프라 + FE bidId + dead-link인프라의존 다시 4개로상황별
- compose 의존 strip온프렘 인프라postgres+redis 만 → 다시 4개 의존온프렘이면 유지
- compose.override.ymldev onlyhot-reload 사라짐데모일이면 제거 OK
- entrypoint 보강 (seed 자동)데모 편의수동 seed 필요유지 권장
- FE bidId 동봉미연동 OK멀티 입찰 안 됨유지 권장
- dead-link fixUX/admin/usage 404유지 권장
commit 4 6181505 업로드 버튼 label fix★ 핵심업로드 버튼 안 눌림유지
stub mock-analysis-list.ts컴파일 통과/admin/analysis fail유지
stub demoDocs.ts컴파일 통과/eval/docs/[id] fail유지

8시나리오별 권장

시나리오유지제거
A. 데모 최소 (chat 없이 4 기능만)commit 1, 2(chat 제거 부분), 4, stubcommit 2 의 summary endpoint, commit 3 전부
B. 데모 + 데이터 정확성 (권장)commit 1, 2, 3 의 fix 부분, 4, stubcommit 3 의 compose 자족화만 (온프렘 안 띄우면)
C. 데모 + 온프렘 배포전부

9액션 옵션

#액션명령
1C 시나리오 (전부 유지) — push 후 PRgit push origin alpha + gh pr create
2B 시나리오 — compose 자족화만 빼고 pushcommit 3 분해 → 새 commit 으로 재구성
3A 시나리오 — commit 2/3 의 일부 revert 후 minimal 재구성cherry-pick + selective revert
4모두 폐기git reset --hard origin/feat/onprem-h100-deploy