# 수동 증빙 및 잔액대조 Runbook - Source: REQ-003 / BAT-003 / dcy-003 - Last Updated (KST): 2026-06-29 - Owner: 렛저장인 ## 목적 거래내역 파일이 없거나 일부만 import 가능한 계좌(`manual_only`, `partial_import`)를 대상으로 수동 증빙 거래를 입력하고 기준 잔액과 계산 잔액을 대조한다. ## 안전 원칙 1. 운영 DB 변경 전 dcy-002 절차에 따라 DB 상태 evidence를 확인하고 백업을 생성한다. 2. 검증 DB에서 먼저 preview/reconcile을 수행한다. 3. restore는 사용자 명시 승인 없이는 실행하지 않는다. 4. 원문 증빙, 평문 계좌번호, 비밀번호, 민감 counterparty 원문은 문서/로그/커밋에 남기지 않는다. ## 계좌 상태 정의 - `unknown`: 아직 statement 지원 여부가 정리되지 않음. - `import_supported`: 기존 statement import 흐름으로 처리 가능. - `manual_only`: statement-unavailable 계좌. 수동 증빙 및 잔액대조 대상. - `partial_import`: 일부 statement import 가능하지만 누락 구간 수동 보완 및 잔액대조 대상. ## 입력 포맷 잔액대조 report 입력: - `account_id`: 특정 계좌만 대조할 때 사용. 비우면 활성 `manual_only`, `partial_import` 계좌 전체. - `baseline_balance`: 기준 잔액. 없으면 계좌 `last_balance` 사용. - `baseline_at`: 기준 시각. `YYYY-MM`은 해당 월 말일 `23:59:00+09:00`, `YYYY-MM-DD`는 해당일 `23:59:00+09:00`, ISO datetime은 수시 스냅샷 시각. - `source_note`: 예: 월말 앱 잔액, 통장 화면 메모 등 비민감 출처 설명. - `memo`: 운영자 메모. ## 절차 1. 계좌 화면 또는 MCP/service로 `statement_status`를 설정한다. 2. 수동 증빙 거래는 `source='manual'`, 양수 금액, 거래일, 계좌, 비민감 메모를 갖추어 입력한다. 3. `get_balance_reconciliation_report`를 실행한다. 4. 결과를 확인한다. - `OK`: 차액 절대값이 1,000원 이하. - `REVIEW_NEEDED`: 차액 절대값이 1,000원 초과. 후보 판정값 중 하나로 수동 검토한다. - `BASELINE_REQUIRED`: 기준 잔액이 없어 판정 불가. 5. `REVIEW_NEEDED`는 `계좌이동`, `실지출`, `실수입`, `투자이동`, `분석제외`, `확인필요` 중 하나로 수동 확정할 근거를 모은다. ## 판정 기준 - 계좌이동: 같은 소유자의 다른 계좌 입출금과 금액/일자/상대방 근거가 맞음. - 실지출: 외부로 자금이 나갔고 household expense로 보아야 함. - 실수입: 외부에서 들어온 실제 수입. - 투자이동: 증권/투자 계좌 매수·매도·입출금 등 투자 포지션 이동. - 분석제외: 금융 내부 조정, 오류 정정, 분석에 넣으면 왜곡되는 항목. - 확인필요: 근거 부족으로 확정 보류. ## 제외 자동 스케줄링/알림, 전용 워크벤치, 자동 확정 mutation은 이번 runbook 범위가 아니다.