조달청 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 | 한 줄 | 분류 |
| 4 | 6181505 | fix: 업로드 버튼 label 패턴 (file picker 안정성) | fix |
| 3 | b577bbd | chore: docker-compose 자족화 + bid_id 동봉 + chat dead-link 정리 | infra |
| 2 | 2fc8326 | feat: chat 제거 + ai_engine 활용 강화 + bid_id 매핑 버그 수정 | refactor |
| 1 | f73d326 | Revert "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 DB | alembic 0001_chat_tables.py, 0002_match_tables.py |
| Backend 어댑터 | ai_engine_client.py (chat + evidence), redis_client.py |
| Backend API | chat.py (6 endpoints), compare.py (3 endpoints + evidence), internal.py, proposals.py, specs.py |
| Backend models | chat.py, match.py, InMemoryStore |
| Backend schemas | chat.py (chat 요청/응답 + Envelope + AIEvalChat*) |
| Backend tests | 28 tests (chat 14 + specs/proposals/webhook 14) |
| Backend infra | Dockerfile, entrypoint.sh, seed_demo_bid.py |
| Frontend pages | /upload, /eval, /admin/(protected)/analysis/[id]/chat, /admin/(protected)/usage/chatbot |
| Frontend components | ChatPanel.tsx (1243 lines), UploadBar.tsx |
| Frontend tests | Playwright real-bff 프로젝트 + globalSetup |
| Frontend infra | Dockerfile (standalone) |
| Compose / Nginx | apps/eval-system-premium/docker-compose.yml, infra/portal-nginx/nginx.conf, root compose include |
| Postgres init | infra/compose/postgres/init-databases.sh |
| Analysis pipeline | services/analysis_pipeline/tasks/analysis_tasks.py |
| Docs | HANDOFF.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.py | chat 6 API 제거 |
| backend/app/models/chat.py | chat_message / chat_feedback ORM 제거 |
| backend/app/schemas/chat.py | chat 전용 schemas 제거 |
| backend/alembic/versions/0001_chat_tables.py | DB 마이그레이션 제거 |
| backend/tests/test_chat_api.py | chat 14 tests 제거 |
| frontend/...ChatSessionViewer.tsx | viewer 제거 |
| frontend/...analysis/[id]/chat/page.tsx | 페이지 제거 |
| frontend/...usage/chatbot/page.tsx | chatbot 사용 현황 제거 |
| frontend/components/ChatPanel.tsx | 메인 chat 컴포넌트 (1243 lines) |
신설
backend/app/schemas/common.py | Envelope 공용 응답 wrapper |
backend/app/schemas/ai_engine.py | AIEvalChatRequest/Response (ai_engine 호출용, chat 무관) |
수정 (12 파일)
| internal.py | bid_id 매핑 버그 fix — designation_no 를 bid_id 로 쓰던 잘못된 매핑 제거 |
| services/__init__.py | proposal_id = spec_id 결정성 (이전 prop-{uuid()} 비멱등) |
| models/__init__.py | SpecRow.bid_id 필드 추가 |
| api/specs.py | POST /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.py | import 경로 갱신 (common + ai_engine) |
| main.py | chat router 등록 제거 |
| alembic 0002_match_tables.py | down_revision None (0001 의존 제거) |
| tests/conftest.py, test_proposals_api.py | import 경로 + assertion 갱신 |
| frontend e2e/core-compare-mapping.spec.ts | proposal_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 의존 strip | docker-compose.yml | postgres + redis 만 필수. ai-engine / hwpx / knowledge-hub optional |
| dev override 신설 | docker-compose.override.yml | hot-reload (volume + uvicorn --reload) |
| entrypoint 보강 | backend/entrypoint.sh | seed_demo_bid 자동 + BFF_WORKERS env |
| FE bidId 동봉 | frontend/lib/hwpx/client.ts | UploadOptions.bidId + FormData append |
| useUploadJobs bidId | frontend/lib/upload/UploadBar.tsx | 옵션 추가 |
| dead-link fix | frontend/admin/(protected)/usage/page.tsx | redirect 타겟 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-have | LLM 요약 사라짐 | 데모 안 쓰면 제거 OK |
| - SpecRow.bid_id + Form field | 미연동 OK | 멀티 입찰 안 됨 | 유지 |
| commit 3 b577bbd 인프라 + FE bidId + dead-link | 인프라 | 의존 다시 4개로 | 상황별 |
| - compose 의존 strip | 온프렘 인프라 | postgres+redis 만 → 다시 4개 의존 | 온프렘이면 유지 |
| - compose.override.yml | dev only | hot-reload 사라짐 | 데모일이면 제거 OK |
| - entrypoint 보강 (seed 자동) | 데모 편의 | 수동 seed 필요 | 유지 권장 |
| - FE bidId 동봉 | 미연동 OK | 멀티 입찰 안 됨 | 유지 권장 |
| - dead-link fix | UX | /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, stub | commit 2 의 summary endpoint, commit 3 전부 |
| B. 데모 + 데이터 정확성 (권장) | commit 1, 2, 3 의 fix 부분, 4, stub | commit 3 의 compose 자족화만 (온프렘 안 띄우면) |
| C. 데모 + 온프렘 배포 | 전부 | — |
9액션 옵션
| # | 액션 | 명령 |
| 1 | C 시나리오 (전부 유지) — push 후 PR | git push origin alpha + gh pr create |
| 2 | B 시나리오 — compose 자족화만 빼고 push | commit 3 분해 → 새 commit 으로 재구성 |
| 3 | A 시나리오 — commit 2/3 의 일부 revert 후 minimal 재구성 | cherry-pick + selective revert |
| 4 | 모두 폐기 | git reset --hard origin/feat/onprem-h100-deploy |