ADR 0003 — Pack 1 채권 계산 기능 사양
2026-04-20
- 상태: Accepted (2026-04-20) · Amended (2026-04-20, Pack 순서)
- 날짜: 2026-04-20
- 보강 날짜: 2026-04-20 (#005 R3 수렴 반영)
- 회의:
#001 채권 계산(Tier A, R1·R1.5·R2·R3) - 참여자 (R1~R2): P1 변호사 · P2 사무장 · P3 PM · P4 디자이너 · P5 개발자 · P6 Growth · P8 도메인 · P9 대형 로펌 파트너 · P10 회계 사무원 (9인)
- 선행 ADR: 0001 Vision · Core Value (Amended 2026-04-20) · 0002 AX · 사무소 자산 · 전 기능 무료
결정
1. 기능 범위 · 전 사용자 무료
Pack 1 채권 계산 은 민법 제477·479조 법정변제충당 규칙을 자동 적용하는 결정론 계산기로, 모든 기능이 전 사용자에게 무료로 제공된다 (ADR 0002 정합).
전 사용자 무료 항목:
- 계산 자체 (단일 대여·복수 대여·복수 변제)
- 스냅샷 저장 (무제한)
- PDF·CSV 출력 (무제한, 어뷰징 방지 기술 rate limit 만)
- 시나리오 A/B (의뢰인 vs 상대방 주장 비교)
- AI 적요 분류 (assistLimit 한도 내, #005 에서 재정의)
- 합의서·약정서 업로드 (무제한)
- 세대 간 지식 이전 RAG (ADR 0002)
2. 계산 방식
- 기본값: A방식 (개별 채권 충당, 민법 정원칙)
- Phase 1 에 B방식 정식 도입: 잔액 정산 (대법 96다54416, 2007다37400 계열 판례)
- UX: 탐지 사실만 중립 표시 ("계약서에 '계속적 거래' 문구 발견") — 자동 권고·AI 판단 금지
- 데이터 모델: Phase 0 에
loan.method: "A"|"B"필드 예약 - 기본 랜딩·온보딩: A방식 중심, B는 문서·헬프에서 동등
3. Phase 로드맵
Phase 0 (4주, 5~7 eng-day + UI 통합)
- 단일 대여·복수 변제 법정충당 A방식 계산기
loan.method필드 예약 · 확장 슬롯 필드 (연대채무·보증·양도·공탁 등) 예약- CSV 파서 3개 은행 (국민·카카오뱅크·토스뱅크) — AI 없는 결정론
- 청구취지 결정론 템플릿 (AI weight 0) — 3종 프리셋 (청구취지형·준비서면 계산표형·CSV)
- 별지 계산서 PDF · CSV 내보내기
- 스냅샷 불변 +
engineVersion태깅 features.infraHardening.debtSettlement킬 스위치- 10 테스트 케이스 (윤년·법정이율 경계·복리/단리·방식 A 안분·과납·지정충당·asOf·이자율 0%)
Phase 0 go/no-go 관문: 베타 유저 10명 엑셀 병행 이탈률 70%+
Phase 1 (4주, 7~10 eng-day)
- 복수 대여·복수 변제 + 지연손해금 연 5%/12% 자동 기산 (민사·소촉법 2019.6.1 경계 분기)
- B방식 정식 도입 + 계속적 거래 약정 업로드 유도·폴백 권고 경고
- 당사자특약 (합의충당) 토글 + 합의서 파일 첨부 필드
- 시나리오 A/B (의뢰인 vs 상대방) — 전 사용자 무료
- AI 적요 분류 (
settlementParse) — weight 1, 전 사용자 접근 - 공탁 이벤트 타입 (민법 487조, 연 0.1% 보관금 이자, 공탁일 = 변제일 간주)
- 시효 중단 플래그 연동 (기존 시효 모듈, 민법 168조 승인)
- 은행 어댑터 확장 5개 (신한·하나·우리·농협·IBK) + 커스텀 컬럼 매핑 템플릿 저장
Phase 1 지표: 사건 등록→소장 제출 평균 소요 30% 단축
Phase 2 (6주, 3~4 eng-day + UI, = 2a)
- 판결 후 재계산 + 소촉법 12% 자동 분기
engineVersion스냅샷이 판결 기준 재계산을 입력으로 받아 새 스냅샷 생성- "판결 선고일" 필드 + 기산일 자동 변환
Phase 2 지표: 사건당 계산기 호출 중앙값 3회+ (전 사이클 내내 사용)
Phase 3 (= 2b, 차후)
- 집행·배당기일 재재계산 (전부명령·공탁소 출급 연계)
- 어쏘→파트너 승인 워크플로우 (대형 로펌 기능, ICP 외이므로 Phase 3)
- 세무 신고용 정산서 PDF (의뢰인 재방문 트리거, 종소세 참고)
4. 데이터 모델
cases/{caseId}/
loans/{loanId} — 대여 건
repayments/{repaymentId} — 변제 건
interestRates/{rateId} — 이자 이력
settlements/{settlementId} — 정산 스냅샷 (기준일 별 동결)
loan:
{
id: string
principal: number // 정수 원 (KRW) 단위
lentAt: Timestamp
dueAt: Timestamp | null
method: "A" | "B" // Phase 0 예약, Phase 1 활용
note?: string
createdAt: Timestamp
createdBy: string
// 확장 슬롯 (Phase 0 예약, Phase 1+ 활용)
coObligors?: string[] // 연대채무자
guarantors?: string[] // 보증인
assignedFrom?: string // 채권양도 양도인
assignedAt?: Timestamp
}
repayment:
{
id: string
loanId?: string // 특정 채권 지정 or 전체
amount: number
paidAt: Timestamp
appropriationOverride?: "principal" | "interest" | null // 당사자 지정충당
source?: "계좌" | "현금" | "상계" | "공탁" | "대물변제"
evidenceIds?: string[]
statuteOfLimitationEffect?: boolean // 시효 중단 플래그 (민법 168조)
}
interestRate:
{
id: string
loanId?: string // null = 모든 채권 공통
rate: number // basis points (정수) e.g. 1200 = 12%
basis: "agreed" | "statutory" | "delay"
effectiveFrom: Timestamp
effectiveTo: Timestamp | null
compounding: "simple" | "monthly" | "annual"
}
settlementSnapshot:
{
id: string
asOf: Timestamp
method: "A" | "B"
totalPrincipal: number
totalInterest: number
totalDelay: number
totalRepaid: number
outstanding: number
breakdown: StepRow[] // 각 변제 → 원금/이자/지연 분해
engineVersion: string // 엔진 버전 태그 (필수)
scenarioId?: string // 시나리오 A/B 식별
parentSnapshotId?: string // Phase 2 판결 후 재계산 이어받기
createdBy: string
name: string // "소장 첨부본 2026-02-10" 등
frozen: boolean
}
위치:
- 계산 엔진:
apps/web/app/(workspace)/cases/[caseId]/_lib/debt-settlement.ts(순수 함수, Firebase 의존 0) - Server Action:
_actions/settlement-actions.ts(CRUD + 스냅샷 동결) - 법정이율 테이블:
apps/web/lib/legal/statutory-rates.ts(코드 상수, AI 접근 금지)
5. AI 사용 정책
- 계산 자체 = weight 0 (결정론 TypeScript 함수) — 숫자 할루시네이션 허용 불가
- 청구취지 문구 = weight 0 (결정론 템플릿 치환)
- AI 적요 분류 (
settlementParse) = weight 1 (변제/이자/무관 3분류, 폴백 "미분류" 수동 배치) - 계산표 자연어 해설 = weight 1
- 대형 로펌 거래내역 1차 분류 (Phase 3) = weight 1
- 법리 리스크 스캐닝 (Phase 3) = weight 3 (전략 보고서 재사용)
- 모든 AI 출력 하단 "AI 초안 · 변호사 검토 필수" 워터마크 고정 (ADR 0002 공통 전제)
- 감사 로그
tenants/{tid}/auditLog/연동
6. 신규 에러 코드
SETTLEMENT_INPUT_INVALID— Zod 검증 실패 (음수 원금·역순 날짜·중복 이자구간)SETTLEMENT_RATE_MISSING— 계산 구간에 적용 가능한interestRate없음 (기본값 자동 주입 금지)SETTLEMENT_SNAPSHOT_STALE— 동결된 스냅샷 대상 변경 시도
7. UI 배치
- 사건 상세에 신규 탭 "채권계산" 추가 (Overview·Recoveries 와 분리)
- 탭 순서:
overview | documents | evidence | hearings | 채권계산 | recoveries | messages | notes - 결과 3뷰 토글: 요약카드 · 충당표 · 타임라인
- 인라인 편집 테이블 + 키보드 네비 (Tab·Enter·Cmd+Enter)
- 대여(+)·변제(-) 섹션 분리
- 이자율 프리셋 드롭다운 + 수기 입력
- 엑셀 붙여넣기 (CSV/TSV paste)
- 시나리오 A/B 탭 스위처 (우상단)
- 자연어 수식 서술 병기 ("원금 50,000,000 × 연 5% × 92일/365일 = 629,452원")
8. 기술 원칙 (P5·P12 제공)
- 정수 원(KRW) 단위 저장 — 부동소수점 금지.
Math.floor(principal × rate × days / 365) - KST 일할 계산 —
dateToKstIsoDate+ 문자열 diff.getTime()차이 TZ 의존 금지 - 법정이율 이력 — 코드 상수 테이블. Firestore override 역할만
- 스냅샷 불변 — engineVersion 태그로 과거 재현 보장
- 서버 액션에서 tenantId 세션 주입 (클라이언트 입력 금지)
- property-based testing (
fast-check) — "총 변제액 ≤ 총 채권액 + 지연이자" 같은 불변식
배경
현재 페인
- 변호사·사무장이 엑셀로 수기 계산. 개인 사무소 1건당 반나절
하루, 대형 로펌 기업 사건(5001,000행)은 어쏘 2일 + 사무장 1일. - 입력 실수 한 칸 = 전체 계산표 폐기. 버전 관리 혼란 (
계산표_v3_최종_진짜최종.xlsx). - 계산 오류 → 일부 기각 → 소송비용 안분 → 변호사 과실배상 청구 (연 1~2건 실제 발생).
- 대여금·공사대금 사건 70% 이상이 중간 변제 있는 케이스. 순수 단건은 드묾.
국내외 경쟁 공백
- 국내 민간 판례 검색 SaaS (로앤비·엘박스·인텔리콘·케이스노트 등) — 판례 검색 DB, 계산기 기능 없음
- Clio·MyCase·Practice Panther·Smokeball·Leap — 영미 Practice Management, 한국 민법 이자·KST·원화 미지원
- 대법원 전자소송·법률구조공단 — 단일 채권 지연손해금만, 충당 순서 로직 없음
- 국내 리걸테크에서 진짜 비어 있는 슬롯 — 너홀로프로 Pack 1 Killer Feature
대안 검토
A/B 방식 위상 (C1)
- 채택: A 기본 + 메뉴 노출 동등 + Phase 0
method필드 예약 + Phase 1 B 정식 - 대안: B 를 "고급 모드·숨김 기능" 으로 격하 → 대형 로펌 시장 포기 위험 (P9 반대)
- 대안: B 자동 권고 배너 → 변호사가 "제품이 권고했으니 맞겠지" 로 검증 건너뛸 위험 (P1 반대)
AI 파싱 시점 (C4)
- 채택: 3단 분해 (P10 제안)
- (a) CSV 컬럼 매핑 = 결정론 = Phase 0
- (a') 추가 은행·커스텀 = 결정론 = Phase 1
- (b) 적요 3분류 = AI weight 1 = Phase 1
- (c) 적요 → 충당 금액 분해 = out-of-scope (AI 금지)
- 대안: "Phase 2 AI 파싱" 뭉뚱그림 → (a) 결정론 파서 누락으로 사무장 엑셀 회귀 (P10 반대)
Free 개방 수준 (C5)
- 채택: 전 사용자 무료 (ADR 0002 반영)
- R2 원안: 스냅샷·PDF·시나리오·AI 크레딧 4축 유료화 매트릭스 → ADR 0002 Chair 재확인 시 철회
집행 단계 (C9)
- 채택: Phase 2 = 2a (판결 후 재계산 + 소촉법 분기) · Phase 3 = 2b (배당·집행)
- 대안: 전부 Phase 2 → 복잡도 폭발 (공탁·전부명령·배당표 파싱), 사건 빈도 낮음 (P5 반대)
결정 근거
결정론 고정 (AI 금지 수치)
- P1 과실 배상 우려가 변호사 도입의 결정적 게이트
- P5 기술 평가: 부동소수점·법정이율 이력 정확성 보장 불가 (AI 할루시네이션)
- P8 도메인: 판례 번호 오인·이자 계산 오류는 변호사법·보험 직결
- Anti-Goal "법률 조언 AI ✗" 와 완벽 정합
A방식 기본값
- 재판부 표준 포맷 (원금 A+B+C 에 대한 각 이자 구조, 판결 주문 양식)
- 개인 사무소 ICP 빈도 높음
- Phase 1 B 정식 도입으로 대형 로펌 수요도 흡수
전 사용자 무료 (ADR 0002 정합)
- Chair 2026-04-19·04-20 재확인
- PLG 효과: 엑셀 탈출 허들 제거
- 유료화 축 (스냅샷·PDF·시나리오) 은 오히려 사무장 월말 재계산 루프에서 엑셀 회귀 유발
- 투자 유치 전환 (#005 지표 재정의)
8개 은행 CSV 단계적 지원
- Phase 0 개인 대여 빈도 상위 3개 (국민·카카오뱅크·토스뱅크)로 개인 의뢰인 ~60% 커버
- Phase 1 5개 추가로 개인 90%·법인 75% 커버 (P10 수치)
- 커스텀 템플릿 저장으로 대형 로펌 법무팀 양식 대응 (P9 요청)
Minority Report (반대의견 보존)
P9 대형 로펌 파트너 — 집행·승인 워크플로우 Phase 2 포함 주장
- 주장: 계산은 실무상 3회 발생 (소장/판결 직후/배당요구). Phase 2 가 배당까지 커버 못 하면 "반쪽"
- 수용 범위: Phase 2 = 2a (판결 후 재계산) 포함
- 유예: Phase 3 = 2b (배당·전부명령·승인 워크플로우) — ICP 5인 이하 이탈 방지
- 재검토 조건: 대형 로펌 시장 진입 가능성 평가 후 Phase 3 활성화
P1 개인 변호사 — 과실 배상 방어책 필수
- 주장: "틀린 계산은 지는 것보다 무섭다" — 변호사 과실 배상 직결
- 방어책 (수용):
- 원화 소수점 버림·절사 재판부 관행 일치
- 수동 오버라이드 보존 (AI 재계산 시 플래그 표시)
- 50건 실제 사건 테스트 선행
- 3단 검증 (인용 실재·조문 실재·변호사 서명 체크리스트)
features.infraHardening.debtSettlement킬 스위치 (원격 1-click 롤백)
P6 Growth — 유료화 매트릭스 철회 (ADR 0002 반영)
- 원 주장: 스냅샷 2개·PDF 월 3회·시나리오 B Pro 전용·AI 크레딧 종량제 4축 유료화
- 철회 이유: ADR 0002 "전 기능 무료" 재확인으로 전면 무효화
- 대안 지표: #005 에서 활성 사무소 수·Pack 깊이·리텐션·NPS 로 재정의
P10 회계 사무원 — CSV 파서 3단 분해 수용
- 주장: AI 파싱을 통으로 Phase 2 로 미루면 사무장 엑셀 회귀
- 수용: (a) Phase 0 · (a') Phase 1 · (b) Phase 1 AI · (c) out-of-scope
- 추가 수용: 공탁 이벤트 타입 Phase 1 포함 (민법 487조)
P8 리걸테크 — 품질 가드 Audit 전제 흡수
- 주장: 판례 인용 실재 확인 · 조문 실재 확인 · 변호사 서명 체크리스트 3단 필수
- 수용: ADR 0002 "모든 축적은 감사 가능성·철회 가능성·격리성을 전제한다" 공통 전제로 흡수
P2 사무장 — 스냅샷 이름 붙이기 현장 수용
- 주장: "계산 스냅샷 = 사건의 공식 버전" 으로 승격
- 수용:
settlementSnapshot.name필드 ("소장 첨부본 2026-02-10" 형태)·diff 요약 제공
후속 과제
즉시 (Phase 0 구현)
_lib/debt-settlement.ts순수 함수 엔진 구현 (5~7 eng-day)- Firestore 스키마 마이그레이션 —
cases/{caseId}/loans·repayments·interestRates·settlements - 신규 에러 코드 3종 —
ActionErrorCodeunion 확장 - Phase 0 테스트 10 케이스 + fast-check property test
- 법정이율 코드 상수 테이블 —
lib/legal/statutory-rates.ts - 국민·카카오뱅크·토스뱅크 CSV 어댑터 —
parseBankStatement(format, content): { rows: TransactionRow[] }인터페이스 - 사건 상세 신규 탭 "채권계산" UI — 인라인 편집 테이블 + 3뷰 토글
- 청구취지 결정론 템플릿 3종 — 청구취지형·준비서면 계산표형·CSV
- 별지 계산서 PDF 출력 — A4 세로 7열 (날짜·원금·이자·변제·잔액)
features.infraHardening.debtSettlement킬 스위치 Firestore metadata
단기 (Phase 1)
- B방식 엔진 구현
settlementParseAI feature- 공탁 이벤트 타입
- 시효 중단 플래그 연동
- 은행 어댑터 5개 추가 + 커스텀 템플릿
중기 (Phase 2)
- 판결 후 재계산 + 소촉법 자동 분기
engineVersion스냅샷 이어받기
장기 (Phase 3)
- 집행·배당 재재계산
- 승인 워크플로우 (대형 로펌용)
- 세무 신고용 정산서 PDF
변경 이력
- 2026-04-20: 초안 작성 (Accepted). #001 R3 수렴 결과 반영.
- 2026-04-20 (Amended): #005 R3 수렴 반영.
- Pack 순서 변경: 부동산 → 상속 → 계약 → 이혼 (Pack 2) → 부동산 (Pack 3) → 상속 (Pack 4) → 계약 (Pack 5) (Chair "이혼 포함" 지시)
- 손배 feature: 원안 유지 — Phase 2 후반 교통·산재 단건 경량 모듈 (회수 엔진 위)
- 집단소송 모듈 → Phase 4 (가장 마지막) 이관 (Chair 2026-04-20 결정)
- DPIA 시점 앞당김: Phase 2 → Phase 1 말 (18M) (개인정보 보호 규제 환경 강화 대응)
- Provider 다중화 조항 삭제: OpenAI·Anthropic 대체 provider 어댑터 금지. Firebase AI Logic → 국산 소버린 AI 만. (memory
project-ai-stack.md정합, Chair 2026-04-20 재확인) - 상세는 ADR 0004 §1 로드맵 + Pack 순서 참조