본문으로 건너뛰기

ADR 0027 — Pack 5 계약 분쟁 도메인 확장

  • Status: Implemented (PR-1~PR-8 전부 머지 완료 2026-04-26 — enum + CaseData 필드 + ContractInfoSection UI + 청구취지 빌더 2 종 + DocKind + 에디터 진입 + next-actions 분기 + E2E)
  • Date: 2026-04-27
  • Decision Drivers: roadmap.md Phase 3 (36M+) Pack 5 (부당이득·계약 손배) 명시. Pack 1~4 (채권·이혼·부동산·상속) 완료 후 자연스러운 도메인 확장. Pack 1 채권 엔진 일부 재사용 가능 (시효 분기 동일).
  • Anti-Goal Compliance: ADR 0001 Anti-Goal "민사 외 형사·행정·IP" 미위반. 계약 분쟁은 민사 핵심.

결정

Pack 1 (채권 6) + Pack 2 (이혼 1) + Pack 3 (부동산 3) + Pack 4 (상속 2) 위에 Pack 5 = 계약 분쟁 (2 종) 도메인을 추가한다.

신규 recoveryType 2 종:

  • "unjust-enrichment" — 부당이득 반환 (민법 §741 — 법률상 원인 없는 이득)
  • "contract-damages" — 계약 손해배상 (민법 §390 — 채무불이행 손해)

배제 (의도적):

  • 손해배상 일반 (불법행위 §750) — 손해배상 사건은 빈도 낮고 사실관계 복잡, Phase 4 검토
  • 매매·임대차 등 특정 계약 분쟁 — Pack 1 (lease-deposit 등) · Pack 3 (real-estate) 가 이미 흡수

배경

부당이득 반환 (§741):

  • 법률상 원인 없이 타인의 재산으로부터 이익을 얻고, 그로 인하여 타인에게 손해를 가한 자는 그 이익을 반환할 의무.
  • 발생 사례: 매매계약 무효·취소 후 매매대금 반환 / 변제자가 잘못 변제 (이중지급) / 결혼식 비용 양가 정산 분쟁 등.
  • 시효: 민법 §162 ① 일반 채권 10년 (상사면 상법 §64 5년).
  • 청구취지: "피고는 원고에게 [반환액]원 및 [지연이자]를 지급하라" — Pack 1 debt 와 형식 유사하지만 발생 원인 명확히 구분.

계약 손해배상 (§390):

  • 채무자가 채무의 내용에 좇은 이행을 하지 아니한 때에는 채권자는 손해배상을 청구.
  • 발생 사례: 공급계약 미이행 / 도급계약 하자보수 미이행 / 임대차 약정 위반 등.
  • 시효: §162 ① 10년 (상사 5년).
  • 청구취지: "피고는 원고에게 [손해액]원 및 [지연이자]를 지급하라" — debt 와 형식 동일하지만 손해액 산정 (적극 손해 + 일실 이익) 핵심.

Pack 1 채권 엔진을 부분 재사용:

  • 시효 계산 — statute-of-limitations.ts 의 §162 ①·§64 분기 그대로
  • 청구취지 빌더 — Pack 1 의 demand-notice / complaint 패턴 유사
  • 결정론 빌더 + KST 날짜

대안 검토

대안평가
(1) Pack 1 debt 에 sub-type 으로 부당이득·계약 손배 흡수sub-type 처리 비용 (구상금 사례) 가 enum 분리보다 큼
(2) Pack 5 = 2 enum 분리 (선택)Pack 4 패턴 동일 — 도메인별 명확 분기
(3) Pack 5 보류 (Pack 4 까지로 마감)roadmap.md 명시 진행. Pack 1~4 momentum 활용 권장
(4) 손해배상 일반 (불법행위) 까지 포함도메인 면적 과다. Phase 4 별도

Pack 5 PR 계획

PR산출
PR-1recoveryType enum 2 추가 (unjust-enrichment, contract-damages) + 라벨 + 모든 sync 곳 (Pack 4 PR-1 패턴)
PR-2CaseData 도메인 필드 (causeType · benefitDate · breachType · damageBreakdown 등) + updateCaseContractAction
PR-3ContractInfoSection UI (overview 탭)
PR-4buildUnjustEnrichmentText (부당이득 청구취지 + 시효, 10+ tests)
PR-5buildContractDamagesText (계약 손배 청구취지 + 시효, 10+ tests)
PR-6DocKind 2 추가 (unjust-enrichment-complaint, contract-damages-complaint) + 에디터 진입
PR-7next-actions 계약 분기 + dashboard expiring-statute label
PR-8E2E + ADR Implemented + roadmap ✅

데이터 모델 (PR-2 정의 예정)

// 부당이득 + 계약 손배 공용
contractCauseType?: "unjust-enrichment" | "contract-damages";
contractCauseDescription?: string; // 발생 사실 자유 기술 (예: "매매계약 무효 후 대금 반환")
benefitDate?: string; // 이득 발생일 / 채무불이행일 (YYYY-MM-DD, 시효 기산)
benefitAmountKrw?: number; // 청구 원금 (반환액 또는 손해액)
contractDate?: string; // 원 계약 체결일 (재사용 — Pack 3 와 충돌 점검 필요)
breachType?: "non-performance" | "incomplete" | "delay"; // 채무불이행 유형
damageBreakdown?: string; // 손해 내역 (적극 손해 + 일실 이익)
contractNote?: string; // 메모

충돌 점검: contractDate 는 Pack 3 (이전등기) 의 매매계약일과 의미 같으므로 재사용 OK. 다만 Pack 5 추가 시 description 갱신 필요.

Anti-Goal 검증

  • ✅ 1번 "민사 외 형사·행정·IP" 미위반 — 부당이득·계약 손배는 민사.
  • ✅ 2번 "법률 조언 AI" 미위반 — 청구취지 결정론 빌더, 발생 사실은 변호사 입력.
  • ✅ 3번 "의뢰인 B2C 매칭" 미위반.
  • ✅ 4번 "변호사 매칭·광고" 미위반.

Minority Report

  • P5 (개발자) 우려: enum 14 → 16. CLAUDE.md 의 RecoveryTypeCaseDomainType rename 후속 ADR 이 Pack 5 후 더 시급. 다만 break 비용 큰 변경이라 Pack 5 끝낸 후 일괄 처리 권장.
  • P3 (PM) 우려: roadmap timeline (36M+) 으로는 Pack 5 가 약 3년 뒤. 지금 진입은 가속화. V2 검색 품질·포털 메시징 같은 가로 기능 vs 새 Pack 진입의 trade-off — 사용자 명시 자율 진행 따름.
  • P1 (변호사) 양보 불가: 부당이득과 계약 손배는 발생 원인이 다름 — 청구원인 본문에서 명확히 구분되어야. 결정론 빌더의 causeType 별 분기 필수.

후속 과제

  • ✅ Pack 5 PR-1~PR-8 완료 (2026-04-26)
  • enum 이름 RecoveryTypeCaseDomainType 일괄 rename ADR 0028 (Pack 5 완료 후)
  • 손해배상 일반 (불법행위 §750) Phase 4 검토
  • 상사 §64 5년 분기 정밀화 — isCommercial 필드 추가 시점에 next-actions 시효 계산 분기 (현재 §162 ① 10년 단일 적용)