본문으로 건너뛰기

Pack 1 Phase 0 구현 체크리스트

기반 ADR: 0001~0006 전체 · Pack 1 Spec

개요

Pack 1 Phase 0 (4주, 56 eng-day) 착수·진행·종결 체크리스트. 2명 풀스택 병렬 가정. Go/No-Go 관문 명확.

착수 전 필수 (Phase 0 시작 전 완료)

🔴 ADR 0005 §10 Fail-Closed 2건 (Chair 결정)

  • 사이버 배상책임보험 10억+ 가입 (4주·연 500~800만)
  • 수임약정서·DPA 법률자문 완료본 배포 (4주·200만 자문비)

🔴 ADR 0006 Chair 우선 실행 1 (Amended 2026-04-20)

  • AI·데이터 전문 변호사 자문 확보 (300만~700만, 2건 의견서)
    • 공공누리 유형 확인 (국가법령정보·법고을 등 공공 판례 DB)
    • 변호사법 §109·AI 가이드라인 서면 의견서 (면책 자료)

엘박스 스타터 계약 체결 — Chair 2026-04-20 "서비스는 엘박스와 독립" 방침 반영, retracted.

🟡 준비 작업 (병행 가능)

  • 국가법령정보센터 DRF API 키 발급 (1~2일)
  • Ko-LegalQA 100문제 변호사 섭외 (시니어 2명·주니어 1명, 예산 600만 중 Pack 1 분)
  • Gemini API quota 상향 요청 (Vertex AI)
  • Vertex AI Vector Search 인덱스 권한 설정
  • Document AI (OCR) API 활성화
  • 팀 구성 확정 (풀스택 2명·ML 1명·디자인 0.5명·변호사 자문 1명)
  • Phase 0 seed 사무소 섭외 (dogfood 변호사 3명 + beta tenant 5개소)
  • Monitoring·Pagerduty·Slack 알림 채널 구축

Phase 0 Week-별 진행 (4주)

Week 1 — 기초 인프라

엔지니어링 (P12·P17 영역, ~14 eng-day) — 13 eng-day 완료 (자율 세션 2026-04-20):

  • apps/web/lib/ai/provider.ts AiProvider 인터페이스 신설 (2 ed) ✅
  • lib/ai/providers/gemini.ts GeminiProvider 구현 (3 ed) ✅
  • lib/ai/client.ts → providers 배럴 래퍼 리팩터 (기존 호출 0 수정) (1 ed) ✅
  • embeddingVersion 필드 Day 0 유틸 + 규약 문서 (Firestore seed 는 실제 RAG 구현 시점) ✅
  • assertTenantFilter 3중 방어:
    • Layer 1 런타임 guardedAdminCollectionGroup·guardedClientCollectionGroup + 유닛 테스트 ✅
    • Layer 2 ESLint no-restricted-syntax + 기존 7건 마이그레이션 ✅
    • Layer 3 Sentry 알림 (Sentry 연결 선행 → Phase 1)
  • assertEmbeddingVersion 유닛 테스트 (silent corruption 방어) ✅
  • Cloud Logging 구조화 로그 인프라 (lib/logging/logger.ts) ✅

품질 (P15 영역):

  • Ko-LegalQA v0.1 (Pack 1 기준 40문제 + 조문 30) 변호사 작성 착수
  • Ragas 설치 · tools/eval/ 디렉토리 (1 ed)
  • tools/eval/citation_validator.py 스켈레톤 (국가법령정보 API 연동) (1 ed)

Week 2 — 계산 엔진 + 비식별화

계산 엔진 (P12 영역, ~12 eng-day) — 전체 완료:

  • apps/web/app/(workspace)/cases/[caseId]/_lib/debt-settlement.ts 순수 함수 엔진
    • 법정충당 A방식 (이자→원본, 제477·479조) (3 ed) ✅
    • 법정이율 코드 상수 테이블 lib/legal/statutory-rates.ts (1 ed) ✅
    • KST 일할 계산 (lib/utils/date-diff.ts, 초일불산입·말일산입 4조합) (2 ed) ✅
    • 지정충당 (appropriationOverride) 처리 (민법 제476조) (1 ed) ✅
    • 정수 원·Math.floor 절사 (원미만) (1 ed) ✅
  • 엔진 단위 테스트 17 케이스 (윤년·경계일·과납·지정충당·Error 검증 등) (3 ed) ✅
  • fast-check property test 7 invariant × ~1,200 랜덤 (1 ed) ✅

비식별화 (P12·P7 영역, ~10 eng-day) — 3단계 완료:

  • 1단 정규식 apps/web/lib/ai/redaction.ts (주민번호·계좌·전화·금액 광역화) + fail-closed (2 ed) ✅
  • 2단 NER (Gemini zero-shot) — Chair 승인 후 착수 예정 (3 ed)
  • 3단 재식별 스캐너 lib/ai/reidentification-scanner.ts — 패턴 탐지 (k-anonymity 집계는 Phase 1) (3 ed) ✅
  • 4단 수동 검토 큐 UI (사무소 변호사만, 사무원 차단) — Week 3 UI 세션 (2 ed)
  • 기존 cases/_lib/ai-helpers.ts:maskPII 는 호환성 유지 (단순 마스킹)

Week 3 — 사건 상세 UI + CSV 파서

사건 상세 "채권계산" 탭 (디자인·풀스택, ~10 eng-day) — 대부분 완료 (2026-04-20 밤샘):

  • 탭 추가 (CaseDetailClient.tsx + _tabs/DebtSettlementTab.tsx) ✅
  • 3뷰 토글 (요약·계산표·청구취지) ✅
  • CSV 가져오기 모달 + Server Action 연결 ✅
  • 스냅샷 저장 + 10건 목록 + diff 2개 비교 ✅
  • 시맨틱 토큰 준수 · 반응형 · 접근성 (aria-label·sr-only·role) ✅
  • 인라인 편집 테이블 ✅ (2026-04-20, PR #245) — 계산표 뷰 행별 연필 아이콘 → AddRecoveryModal 연동. 키보드 네비·완전 inline 고도화는 Phase 1 후속

CSV 파서 (Phase 0: 국민·카카오뱅크·토스뱅크 3개, ~6 eng-day) — 전체 완료:

  • _lib/bank-csv-parsers/ BankAdapter 인터페이스 + csv-utils + classifier + dedupe (1 ed) ✅
  • KookminAdapter · KakaoBankAdapter · TossBankAdapter 3개 구현 (3 ed) ✅
  • 적요 규칙 기반 분류 (성명·키워드·월 조합) (1 ed) ✅
  • 중복 해시 dedupe (거래일+금액+적요 djb2 해시) (1 ed) ✅
  • 파서 → 엔진 bridge (csv-to-settlement-bridge.ts) ✅

CSV 모달 UI — 완료 (PR #238, 2026-04-20):

  • 은행 드롭다운 · 채무자명 · 붙여넣기 · 10행 미리보기 ✅
  • importBankCsvAction Server Action · sourceHash 중복 방어 ✅
  • appropriationOverride 자동 매핑 (이자·원금 키워드) ✅

Week 4 — 생성·PDF·Audit + 통합 테스트

청구취지 생성 (결정론 템플릿, AI 0, ~4 eng-day) — 완료 (PR #237, 2026-04-20):

  • 3 프리셋 로직 (청구취지 · 준비서면 계산표 · CSV) _lib/settlement-output/
  • UI 클립보드 복사 버튼 (청구취지 · 계산표) · CSV 다운로드 링크 ✅

별지 계산서 PDF (~3 eng-day) — print CSS 로 선제 대응 (PR #244):

  • A4 세로 7열 (거래일·적요·차변·대변·잔액·이자 기산일·이율 근거) ✅
  • 수기 메모 여백·검토·결재 도장란 (P9 요구) ✅
  • 정식 PDF 라이브러리 (@react-pdf/renderer vs pdf-lib) Chair 판단 후 교체

스냅샷 시스템 (~3 eng-day) — 완료 (PR #240·#241, 2026-04-20):

  • SettlementSnapshotSchema Zod + assertCurrentEngineVersion + SnapshotStaleError
  • computeSettlementDiff + summarizeDiff 유틸 ✅
  • createSettlementSnapshotAction Server Action + 목록 onSnapshot 구독 ✅
  • 스냅샷 2개 선택 → diff 4 카드 + 요약 한 줄 UI ✅

Audit 로그 (~3 eng-day) — 스키마 완료:

  • Zod 5종 (ai·rag·docSign·winrate·redaction) lib/audit/types.ts
  • 보존 기간 매트릭스 (AUDIT_RETENTION_DAYS) ✅
  • writeAuditLog Server Action + WORM 경로 (Chair 승인 후)

Feature Flag·킬스위치 (~1 eng-day):

  • features.infraHardening.debtSettlement Firestore metadata ✅ (2026-04-20, PR #248·#250)
  • Feature flag seed 스크립트 + dry-run ✅ (scripts/seed-infra-debt-settlement.ts, PR #248)
  • isDebtSettlementEnabled 헬퍼 + 3개 Server Action 킬 스위치 ✅ (2026-04-21, PR #251)

통합·dogfood 테스트 (~5 eng-day):

  • 내부 변호사 3명 dogfood 시작
  • Ko-LegalQA v0.1 (100문제) CI 통과 확인
  • Ragas 품질 측정 (Faithfulness 0.85+·Citation Precision 0.95+)
  • End-to-End E2E 테스트: 사건 생성 → 대여·변제 입력 → 계산 → 스냅샷 → 청구취지 → PDF

Go/No-Go 관문 (Phase 0 종료)

All AND 조건 충족 시에만 Phase 1 진입:

정량 지표

  • 대여금 계산 정확도 99.5%+ (10 단위 테스트 + property test 불변식 0 위반)
  • 내부 변호사 3명 dogfood 주 3회+
  • 엑셀 병행 이탈률 70%+ (dogfood 변호사 설문)
  • Ko-LegalQA v0.1 Faithfulness 0.85+
  • Citation Precision 0.95+ (hard gate, non-negotiable)
  • Retrieval Recall@10 0.85+
  • 편집률 중앙값 < 0.35

정성 점검

  • 비식별화 4단 End-to-End 정상 작동 · 회로차단기 fail-closed 발동 확인
  • Audit 로그 완결성 (5종 WORM 저장 검증)
  • assertTenantFilter CI 0건 우회 (PR 이력 확인)
  • embeddingVersion 미필터 silent corruption 방어 테스트 통과
  • 재식별 스캐너 공공 판례 샘플 1% 수동 검토 통과
  • 변호사 과실 배상 보험 가입 확인
  • 수임약정서 표준 조항 법률자문 완료본 배포 준비
  • 3건 외부 법률자문 의견서 수령 (공공누리·민간 계약·변호사법 §109)

법적·절차

  • 변협 연수 pilot 1곳 (서울·경기 지역변회) 접촉
  • 개인정보위 사전 협의 (비공식 간담회) 타진
  • 별지 계산서 PDF 법원 제출 샘플 변호사 승인

첫 PR 순서 (Week 1 시작)

권장 머지 순서 (작은 PR 단위, 의존성 순):

PR #1 — AiProvider 인터페이스 (독립적)

  • apps/web/lib/ai/provider.ts 신설
  • interface AiProvider + ProviderId type
  • 단위 테스트 없음 (인터페이스만)
  • 리뷰 포인트: ADR 0004 §4 Firebase AI Logic 단일 · ADR 0005 §2 정합

PR #2 — GeminiProvider + 배럴 래퍼 (PR #1 후)

  • lib/ai/providers/gemini.ts 구현
  • lib/ai/index.ts 배럴 — 기존 generateLegalDoc 등 함수는 얇은 래퍼로 유지
  • 단위 테스트 (mock Gemini 응답)
  • 리뷰: CLAUDE.md "use server" 원칙 · Server Action 시그니처 유지

PR #3 — embeddingVersion 필드 + seed

  • Firestore 3개 컬렉션 확장
  • seed 스크립트 scripts/seed-embedding-version.ts --dry-run 필수 (CLAUDE.md 정책)
  • 기존 문서 "gemini-text-embedding-004" 백필

PR #4 — assertTenantFilter 3중 방어

  • 유닛 테스트 + CI AST 파서 + 런타임 Sentry
  • scripts/check-tenant-filter.ts 추가
  • GitHub Actions .github/workflows/tenant-filter.yml

PR #5 — 법정이율 상수 테이블

  • apps/web/lib/legal/statutory-rates.ts
  • 민사 5%·소촉법 12% (2019.6.1~)·상사 6%·이자제한 20%
  • 단위 테스트

PR #6 — 계산 엔진 (순수 함수)

  • _lib/debt-settlement.ts
  • 10 단위 테스트 + fast-check property test
  • Firebase 의존 0 확인 (CLAUDE.md)

PR #7 — 비식별화 4단

  • 4개 작은 PR 로 쪼개기:
    • #7a 정규식 1단 (fail-closed)
    • #7b NER 2단 (Gemini zero-shot)
    • #7c 재식별 스캐너 3단
    • #7d 수동 검토 큐 UI (사무원 차단)

PR #8 — 사건 상세 UI (채권계산 탭)

  • 인라인 편집 테이블 · 3뷰 토글 · 시맨틱 토큰

PR #9~12 — CSV 파서 3개 은행 어댑터 + 모달

PR #13 — 청구취지 결정론 템플릿

PR #14 — 별지 계산서 PDF

PR #15 — 스냅샷 시스템

PR #16 — Audit 로그 5종

PR #17 — Feature Flag 킬스위치

각 PR 조건:

  • 크기 ≤ 500 LOC
  • 작업 단위별 분리 (CLAUDE.md Git 컨벤션)
  • pnpm type-check · pnpm lint · pnpm test 로컬 통과
  • ADR 근거 주석 필수 (PR 설명에)
  • Co-Authored-By: Claude Opus 4.7 필수 (CLAUDE.md)

리스크 대응 플레이북

리스크대응
법고을 공식 협약 지연 (9~12개월)Phase 0 는 조문·법령 단독으로 진행 가능. 판례 본문 RAG 는 협약 성사 후 Phase 1+
Gemini API 가격 인상모델 티어링 (Flash-Lite 전환) · 소버린 전환 준비 가속
계산 엔진 엣지 케이스 발견features.infraHardening.debtSettlement 킬스위치 원격 롤백
RAG 품질 저하 (Faithfulness 0.85 미달)Phase 0 Week 4 품질 게이트에서 발견 · Phase 1 연기
콜드 스타트 누적 8~12초핵심 RAG 경로 Cloud Run min=1 warm pool ($40/월)
변호사 신뢰 붕괴 (Mata 재현)사건번호 재조회 자동 삭제 · DocSignGate 3단 체크

Phase 0 완료 후

Phase 1 (~12M) 착수 조건

  • Phase 0 Go/No-Go 전 관문 통과
  • 법고을 공식 협약 진척도 점검 (성사 시 공공 판례 RAG 도입)
  • 개인정보위 비공식 간담회 완료
  • Ko-LegalQA Phase 1 확장 300문제 변호사 섭외
  • 팀 확장 (ML 엔지니어 2명·디자이너 1명)

Phase 1 주요 작업 요약

  • B방식 정식 도입
  • 지연손해금 자동 기산
  • 시나리오 A/B
  • AI 적요 분류 (weight 1)
  • 공탁 이벤트 타입
  • 시효 중단 플래그 연동
  • 은행 5개 추가 (신한·하나·우리·농협·IBK) + 커스텀 템플릿
  • /legacy Phase 0~2 완성
  • 세대 간 지식 이전 kill feature
  • DPIA 1차 수행 (Phase 1 말 18M)

관련 문서