PR #173 vs alpha — 머지 영향 분석

pps-mono-repo · safety-net dedupe of ProductRecord rows
base=alpha head=fix/bff-dedupe-product-record · state=OPEN · mergeable=CONFLICTING · 2026-05-22
결론: PR #173 그대로 머지 = 위험. alpha 의 헥사고날 리팩토링(cb52ecd) + 후속 8개 PR(#165~#172)의 작업이 사실상 되돌려집니다. 실제 의도(image_assets / detailed_items dedup)는 1efca9e 1개 커밋 ≈ 114줄이고, 나머지 3,494줄은 pre-hexagonal 회귀 잡음입니다. 해당 dedup 로직만 cherry-pick해 alpha 의 Proposal.apply_extraction()에 이식하는 방식을 권장합니다.
Total files changed
55
Insertions
+3,608
Deletions
−1,893
실제 dedup 코드
~114줄
alpha-only commits
14
PR-only commits
4
Conflicting files
대량
Merge base
b35ad8c

커밋 차이 — alpha-only(14) vs PR-only(4)

PR #173 의 base 가 갈라진 뒤, alpha 는 핵사고날 리팩토링과 8개의 후속 PR을 머지했습니다. PR 측은 dedup 1건만 추가했습니다.

alpha 에만 있는 커밋 (14)PR #173 에만 있는 커밋 (4)
736154bfeat #172 표에 기술/품질인증 컬럼
913bf70feat #171 글로벌 검색창
0c46f72feat #170 기술/품질인증 분리 + 밀도
812be53feat #169 상세 drawer 이미지 갤러리
4c088c2feat #168 DB 전 필드 노출 + race 안정
be78b05fix #167 UploadBar destructure
d5d912bfeat #166 PPS Blue + 상세 drawer
7fab383feat #165 proposal_certifications 정규화
8f5db33bulk CRUD + KRDS/KWCAG 2.2 + 스킬
cb52ecdrefactor: 헥사고날 + 2026 패턴 (대규모)
6181505fix 버튼 label 패턴
b577bbdchore docker-compose 자족화
2fc8326feat chat 제거 + ai_engine 강화
f73d326Revert "Revert #162"
1efca9efix: BFF safety-net dedupe of ProductRecord rows ← 실제 의도
8d7a4a5chore docker-compose 자족화 (alpha 와 중복)
87ac19bfeat chat 제거 + ai_engine 강화 (alpha 와 중복)
956e497Revert "Revert #162" (alpha 와 중복)

변경 분류 — 무엇이 회귀되고 무엇이 신규인가

카테고리대표 파일줄수영향
회귀 헥사고날 데이터 레이어 제거 backend/app/adapters/database/{__init__,proposal_repository,certification_repository,models}.py −4 파일 alpha 의 domain → port → adapter 분리가 무너지고 monolithic models 로 회귀
회귀 Alembic 마이그레이션 재구성 backend/alembic/versions/0001_proposals.py · 0002_bids_and_requirements.py · 0003_proposal_certifications.py −3 파일 alpha 의 마이그레이션 3개 삭제 + 0002_match_tables.py 1개로 대체
회귀 Claude 스킬 삭제 .claude/skills/eval-system-premium/SKILL.md −1 파일 오늘 등록한 프로젝트 스킬 자동 삭제됨
신규 chat/compare 부활 backend/app/api/compare.py · models/match.py · schemas/ai_engine.py +603 lines alpha 가 의도적으로 제거한 (2fc8326) 영역 다시 도입
신규 외부 client (pre-hexagonal) backend/app/adapters/ai_engine_client.py · redis_client.py +248 lines port 추상화 없는 직접 client. 헥사고날 원칙 위배
신규/유용 CI workflow + HANDOFF .github/workflows/eval-system-premium-e2e.yml · HANDOFF.md +281 lines cherry-pick 가치 있음
신규/유용 인프라 보강 infra/compose/postgres/init-databases.sh · infra/portal-nginx/nginx.conf +72 lines init-databases.sh 는 alpha 에 누락된 파일 — 별도 PR 필요
신규 (PR 의 핵심) ProductRecord dedup backend/tests/test_dedup_service.py · services/__init__.py 의 dedupe 함수 ~114 lines 이것만 cherry-pick 해 alpha 의 Proposal.apply_extraction() 에 이식하면 됨

주요 PR 본문 인용 (작성자 본인의 주의사항)

⚠️ alpha 已 refactored to hexagonal — same dedup intent now lives in Proposal.apply_extraction(). Left open for review (covers image_assets + detailed_items which alpha doesn't yet).

즉 PR 작성자도 alpha 가 이미 리팩토링됐음을 인지하고, 머지보다는 리뷰용으로 열어둔 상태입니다. alpha 가 아직 커버하지 못한 부분은 image_assets + detailed_items dedup 두 항목.

권장 vs 비권장

권장

Cherry-pick: dedup 핵심만 alpha 에 이식

  • 1efca9e 의 services/__init__.py dedup 함수 + test_dedup_service.py 만 추출
  • alpha 의 Proposal.apply_extraction() (헥사고날) 에 image_assets / detailed_items 두 항목 dedup 로직 추가
  • 새 PR (≈ 100~150 lines) 생성 후 alpha 로 머지
  • PR #173 은 close (이유: superseded by new cherry-pick PR)
비권장

PR #173 그대로 머지

  • 헥사고날 리팩토링 cb52ecd 가 사실상 revert
  • #165~#172 PR 들과 코드 충돌 → 수동 conflict 해결 비용 큼
  • SKILL.md 등 alpha 의 부수 자산 자동 삭제
  • 5/22 데모 직전에 코드 구조가 흔들림

참고 링크