2026-04-22
ADR 0010 — Pack 1 회수 유형 UI 분기 설계
결정문
Pack 1 6 회수 유형 (대여금·공사대금·구상금·약정금·임대차보증금·양수금) UI 는:
- 단일 "회수" 탭 (
?tab=recovery) 으로?tab=debt-settlement를 대체. 탭 수 증가 억제. - 탭 내부
RecoveryTab.tsx가caseData.recoveryType으로 분기:"debt"→ 기존<DebtSettlementTab />래핑 (704줄 파일 불변, 회귀 위험 0)- 나머지 5 유형 → 신규
<NonDebtRecoveryRouter />가 type 별 form 컴포넌트 dynamic import
- 유형 선택 UI: 기본 Dropdown (
<Select>), CSS container query 로 폭 여유 시 Segmented Control 업그레이드. 모바일은 Dropdown 고정. - 유형 변경 정책:
caseData.courtCaseNumber미지정 (소 제기 전) → 유형 변경 허용 +AlertDialog경고 + 이전 스냅샷 자동 archivecaseData.courtCaseNumber있음 (소 제기 후) → Dropdown disabled + "새 사건 복제" CTA
- 문서 생성 UX 병존:
- 개별 서면 1종 → 기존
InlineDocGeneratemodal 3-step (back-compat) - 5 서면 묶음 → 신규
DocumentBundleDrawer(우측 슬라이드, 5 탭 + 클립보드 복사)
- 개별 서면 1종 → 기존
- 임대차보증금 공제:
useFieldArray인라인 동적 배열 (별도 서브모달 금지). - 점진 배포:
features.infraHardening.recoveryTypeUi플래그 defaultfalse. 5 PR 전부 머지 후 Chair 가true로 전환.
배경
- Pack 1 Core Layer 3-tier 완성 (엔진 6 · 서면 5 · 어댑터 5 · RecoverySnapshot Server Action #372).
- UI 만
DebtSettlementTab.tsx(704줄) 로 debt 전용. 나머지 5 유형은 코드 존재하나 사용자 접근 경로 없음. - Chair 피드백: "가시적 제품 진전" 강조. 코드만 있고 UI 없으면 진전 없어 보임.
- "베이스 + 유형 팩" 아키텍처 원칙 — Pack 2~5 재사용 가능한 패턴 필요.
대안 검토
대안 A — 유형별 독립 탭 6개 (기각)
- 장점: 유형별 URL 공유 가능.
- 단점: 탭 밴드 포화 (
CaseDetailClient.VALID_TABS현재 8개 + 6 추가 = 14개). 모바일·14" 노트북 wrap. Pack 2 이혼 도달 시 탭 20개. "베이스+유형 팩" 원칙 정면 위반. - 기각 사유: 아키텍처 원칙 및 정보 위계 모두 반대.
대안 B — DebtSettlementTab 즉시 rename·통합 (기각)
- 장점: 파일 일관성.
- 단점: 704줄 파일 대규모 리팩터 → 6-way switch 주입 시 1200줄+.
settlementSnapshotsPath·AddRecoveryModal· debt 전용buildClaimText와 결합. 기존 debt 회귀 위험. - 기각 사유: Phase 0 Week 4 Go/No-Go 일정 보호 + 리팩터 비용 과다.
대안 C — 유형 변경 완전 금지, 새 사건 복제 (기각)
- 장점: 데이터 모델 엄격성. Zod discriminator·engineVersion 호환성 단순화.
- 단점: 변호사 실무상 "대여금 → 구상금" 재분류 월 2-3건 발생. 새 사건 복제는 당사자·증거·기일 재입력 2-3시간 낭비. 사무소 내부 사건번호 추적 혼란.
- 기각 사유: P1·P2 실무 반례 강력. P3·P5 중대 양보로 타협안 수용.
대안 D — 유형 변경 자유 (완전 허용, 기각)
- 장점: 변호사 실무 최대 유연성.
- 단점: 소 제기 후 법원 사건번호 부여된 상태에서 청구취지 변경 시 법원 절차 혼란. 데이터 오염.
- 기각 사유: P3 Anti-Goal 방어선 논리 수용. "소 제기 전/후" 분기가 절충점.
결정 + 근거
핵심 근거
- Pack 2~5 재사용성: "회수" 단일 탭 + 내부 type 스왑은 Pack 2 이혼 (재산분할·양육비) 진입 시 동일 패턴 복제 가능. 베이스+팩 아키텍처 원칙의 UI 레이어 첫 증명.
- 실무 오분류 복구 비용: P1 증언 — 월 2-3건 재분류 발생. "소 제기 전" 변경 허용은 변호사 시간 절약 + 사무소 번호 일관성 유지.
- 회귀 위험 최소화: 기존
DebtSettlementTab704줄 불변, 신규 컴포넌트 병존. Phase 0 Week 4 일정 보호. - 패턴 재사용: 개별 서면 = 기존 modal (back-compat), 번들 = drawer (5 서면 × 계산표 동시 참조). 서로 다른 task 에 적합한 UX.
성공 지표
?tab=recovery진입률 (6 유형 누적 사용)- "회수" 탭에서 스냅샷 저장 → 문서 번들 생성 완료 플로우 소요 시간 (MVP 목표 < 5분)
- 유형 오분류 발생률 (월 0건 목표, Alert Dialog 수용률로 측정)
- 기존 debt 탭 회귀 0건 (테스트 + 실 운영 모니터링)
Minority Report (반대의견)
P4 디자이너 — InlineDocGenerate 단일 패턴 고수 주장 (R2 에서 양보)
"Drawer 신규 도입은 패턴 이중화. 기존
InlineDocGenerate3-step modal 을Step 1 docType에 '5종 묶음 프리셋' + '개별 5 체크박스' 로 확장해 단일 UX 유지하는 편이 유지보수·학습 부담 낮다."
결정과의 차이: 본 ADR 은 modal (개별) + drawer (번들) 병존. P4 는 modal 단일로 5 서면 프리셋 처리 선호.
미해결 우려: drawer 와 modal 양 패턴 이중화로 인한 향후 UX 일관성 리스크. Phase 1 회고 시 재평가.
P5 개발자 — 초기 "유형 변경 금지" 주장 (R2 에서 조건부 철회)
"Zod
z.discriminatedUnion+ RHF resolver 실전 함정. 타입 별 독립 form 인스턴스 분리로 우회 가능하나, 유형 변경 허용은 향후 data migration 부담 누적."
결정과의 차이: 본 ADR 은 "소 제기 전 허용 + 이후 금지" 분기. P5 는 완전 금지 선호했음.
미해결 우려: 자동 스냅샷 archive 로직이 Server Action 에 추가됨 — 복잡도 증가. 실제 변경 빈도 모니터링 필요 (Phase 1 초반).
후속 과제
본 ADR 범위 내 (5 PR)
RecoveryTabshell + URL + 킬 스위치 + debt 래핑RecoveryTypeSelector+RecoveryResultSummary+RecoveryClaimTextPreview+ 유형 변경 Alert- 3 form (construction·agreement·subrogation)
LeaseDepositForm+ useFieldArrayAssignedClaimForm+DocumentBundleDrawer
Phase 1 이관 (별도 안건)
- Q2 소멸시효 경고 UI (유형별 기산일 · 시효 순수 함수)
- Q3 공제 증빙 파일 첨부 (Storage + PII)
- Q4 회수 성공률 상태머신 통일 (
CaseStatusunion 확장) - Q5 모바일 read-only 뷰
- "법원 사건번호" 부여 감지 로직 정교화 (수동 입력 + 이송 시 변경)
InlineDocGenerate+DocumentBundleDrawer일관성 재평가 (P4 Minority Report)
운영
- PR 5개 전부 머지 후 Chair 가
features.infraHardening.recoveryTypeUi: trueseed 실행 - 첫 2주 텔레메트리 수집 (오류율·클릭 수·완료 시간)
- 문제 시 플래그
false원격 롤백
참여자 최종 입장
| 역할 | R1 원초 | R3 최종 |
|---|---|---|
| P1 변호사 | 통합 탭 · 변경 허용 · drawer · 교체 · 인라인 공제 | ✅ 수용 (소 제기 전/후 분기 합의) |
| P2 사무장 | 통합 탭 · 변경+자동 스냅샷 · drawer · RecoveryTab+debt 흡수 · 아코디언 공제 | ✅ 수용 |
| P3 PM | 통합 탭 · 변경 금지 → 분기 · drawer · debt default view · 조건부 섹션 | ✅ 수용 (주요 양보) |
| P4 디자이너 | 통합 탭 · 자유+경고 · modal 재사용 · rename·교체 · 섹션 접힘 | 🟡 modal 부분 Minority Report |
| P5 개발자 | 통합 탭 · 변경 금지 · drawer · 병존 · useFieldArray | 🟡 변경 금지 부분 Minority Report |
Anti-Goal 4개 위반 없음. ADR 0002 (전 사용자 무료) 위반 없음. P1 변호사·P5 개발자 양측 납득 (조건부 양보 포함).