# 验收测试用例库（T1.6 交付物 · V2）

> **V2 扩充（2026-10-09）**：41 条 → **154 条**；新增 N 组·纯记账模式（双模式兼容）、H/I 组（保证金借款/税费摊销）、Q 组前端与导入边界；新增**规则覆盖矩阵**（41 条规则全部有对应用例，无覆盖死角）。
> 定位：**开发自测 + 测试验收 + 双轨验证**的统一用例库，取代《需求文档》第十三章 TC 摘要表。
> 基线数据：测试账套「长沙宏达贸易有限公司 · 2026-06」（期初 726,240.50；14 张凭证基线）；操作路径以 41 个可交互原型为准。
> 执行原则：**以数据库断言为准，页面表现为辅**；每条"勾稽验证点"须可写成 SQL/接口断言。★ = 详版用例（第四章）。
> 日期：2026-10-09

---

## 一、执行说明

1. 环境：测试账套 + 原型页面（本地服务）作为操作路径与界面参照；**模式 A/B 各自建一套账套**（N 组专测纯记账）。
2. 断言分层：① 状态断言（事项/凭证/票据/期间）→ ② 分录断言（借贷平衡+科目金额）→ ③ 余额断言（科目余额/辅助余额/辅助台账）→ ④ 报表断言（三表勾稽）。
3. 覆盖关系：19 个事件类型 × 41 条规则 × 41 页交互 —— 功能组（A~M）覆盖业务与引擎，N 组覆盖纯记账模式，O~Q 覆盖边界与前端，R 组性能。
4. **回归集**：★ 详版 12 条为每次提测必跑。

## 二、用例总表（154 条）

### A 销售与收入（12）

| 编号 | 场景 / 步骤 | 期望结果 | 勾稽验证点 |
|---|---|---|---|
| A1 | 合同签署（未交付未收款） | **不产生事项与凭证**，仅合同台账 | 事项表该合同 count=0 |
| A2 ★ | 预收 30 万到账 | 事项(预收)→凭证 借1002/贷2203 | 2203 +30,000；6001 不动 |
| A3 ★ | 履约确认（已有预收 30 万），复核→审核→入账 | 凭证 借1122 70,000＋借2203 30,000 / 贷6001 100,000 | 1122 辅助+70,000；2203 −30,000；利润表+100,000 |
| A4 | 事后开票 103,000 | 凭证**仅税额** 借1122/贷2221 3,000 | **6001 无新增发生额**（不重复确认） |
| A5 | 尾款 70,000 到账 → 核销 | 借1002/贷1122＋核销单 | 1122 辅助余额=0 |
| A6 | 部分回款 50,000 | 拆分核销，余 20,000 挂账 | settlement_allocation=50,000 |
| A7 | 销售退货 10,000 | 红字/调整凭证（原凭证保留） | 6001 净额 −10,000；审计链完整 |
| A8 | 合同折让 5,000 | 净额调整 | 收入/应收同步调整 |
| A9 | 时段确认（按进度 40%） | 差额确认 `合同额×进度−已确认` | 累计确认额=合同额×累计进度 |
| A10 | 无合同先收款 20,000 | 事项(预收)（禁止默认收入） | 6001 不动；2203 +20,000 |
| A11 | 同一客户 3 期应收明细 | 辅助余额按期连续 | 核算项目余额表=1122 该客户余额 |
| A12 | 先票后款（开票在前、履约在后） | 开票仅税额；履约后确认收入 | 全程 6001 只发生一次（100,000） |

### B 采购与应付（10）

| 编号 | 场景 / 步骤 | 期望结果 | 勾稽验证点 |
|---|---|---|---|
| B1 ★ | 验收确认（有票）30,000 | 借1403/贷2202 30,000 | 1403 +30,000；应付辅助 +30,000 |
| B2 | 验收无票 → 暂估 | 借1403/贷2202-暂估 | 暂估余额=验收成本 |
| B3 ★ | 发票到达价税 30,000 vs 验收 29,520 | 调差事项仅处理 480 | **成本不重复**（29,520+30,000 不出现） |
| B4 | 付款 55,000 冲应付 | 借2202/贷1002 | 2202 余额=96,750+30,000−55,000=71,750 |
| B5 | 采购预付 20,000 | 借1123/贷1002 | 1123 +20,000；不进成本 |
| B6 | 预付款到货冲抵 | 1123 转 1403/2202 | 1123 归零 |
| B7 | 同一采购单三次分批入库 | **三个事项**（三个 slice） | 唯一键按 slice 区分；无重复异常 |
| B8 | 入库退货红字 | 红字冲暂估/应付 | 1403/2202 回退 |
| B9 | 服务类验收（无实物） | 借方按类别入 6602/1601 | goods_category 决定科目 |
| B10 | 应付到期/账龄提示 | 应付辅助含到期日 | 账龄表与辅助余额一致 |

### C 费用与报销（8）

| 编号 | 场景 / 步骤 | 期望结果 | 勾稽验证点 |
|---|---|---|---|
| C1 ★ | 报销批准 8,200 | 费用确认**一次** 借6601/贷2241 | 6601 +8,200；2241 员工+8,200 |
| C2 | 报销支付 8,200 | 借2241/贷1002 | **6601 不再发生**；2241 归零 |
| C3 ★ | 借款 5,000 发放 → 报销核销冲抵 | 借1221/贷1002 → 借6602/贷1221 | 1221-个人 余额=0 |
| C4 | 借款现金归还 | 借1001/贷1221 | 1221 归零 |
| C5 | 备用金核销（部分） | 核销额+退回额=借款额 | 明细可追 |
| C6 | 费用按部门分摊 | 借方按部门辅助拆分 | 部门辅助余额=分摊额 |
| C7 | 费用类型分流（差旅/招待/办公） | 分别入 6602 对应明细 | 与费用票模板分流一致 |
| C8 | 对公直付（无报销流程） | 借6602/贷1002 直接确认 | 无 2241 中间科目 |

### D 资金与银行（12）

| 编号 | 场景 / 步骤 | 期望结果 | 勾稽验证点 |
|---|---|---|---|
| D1 ★ | 未匹配收款 28,000 | **禁止默认认收入**→待定性→人工裁定四候选 | 裁定前无收入凭证；理由留痕 |
| D2 | 摘要"利息" | BANK_INTEREST：借1002/贷6603 | 6603 贷方发生 |
| D3 | 摘要"手续费" | 借6603/贷1002 | 金额与流水一致 |
| D4 | 摘要"提现" | 借1001/贷1002 | 1001+1002 合计不变 |
| D5 ★ | 内部账户转账 | 借1002-转入/贷1002-转出 | **全系统无损益发生** |
| D6 | 摘要"工资"代发 | 借2211/贷1002 | 与薪资发放衔接（E6） |
| D7 | 票流双向匹配 | 票、流、账三证互查 | 凭证"来源"↔票据"关联事项"双向可达 |
| D8 | 一笔到账拆多笔应收 | 拆分核销 | 各应收余额正确 |
| D9 | 到账净额（扣手续费） | 收入全额＋手续费分录 | 轧差=流水金额 |
| D10 | 退款/冲正 | adjustment 处理 | 原凭证保留 |
| D11 | 流水重复导入 | 拦截（流水号唯一） | bill_pool 无重复行 |
| D12 | 未达账项/银行对账 | 银行↔总账差异清单 | 差异归零或挂未达 |

### E 薪资社保（7）

| 编号 | 场景 / 步骤 | 期望结果 | 勾稽验证点 |
|---|---|---|---|
| E1 ★ | 批次确认→结账时计提 | 借660201（按部门）/贷2211 | 计提额=应发+单位社保 |
| E2 | 发放（含代扣拆分） | 借2211=应发 / 贷1002=实发＋贷2221 个税＋贷2241 社保个人 | 2211 批次归零 |
| E3 | 个税累计 | 累计应缴/已缴/本月应缴 | =薪资表累计列；2221 余额=应缴 |
| E4 | 社保缴纳（单位+个人） | 借2211＋2241/贷1002 | 社保负债归零 |
| E5 | 跨月补缴 | 按月份拆分入账 | 各月明细可查 |
| E6 | 实发合计=发放流水 | 金额一致 | 差异=0 |
| E7 | 薪资产线汇总 | 660201 按部门辅助 | 部门辅助=部门计提额 |

### F 固定资产（6）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| F1 | 资产取得（投用） | 借1601/贷2202 或 1002 | 卡片原值合计=1601 |
| F2 ★ | 结账时计提折旧 | 借660202/贷1602（1,550） | 1602 本期发生=月折旧合计 |
| F3 | 折旧方法与年限（10 年直线） | 月折旧=原值÷120 | 与卡片一致 |
| F4 | 资产变更（部门/用途） | 后续折旧按新维度 | 历史凭证不变 |
| F5 | 资产处置清理 | 借1602＋借1606/贷1601；损益转 5601/6711 | 卡片净值=清理净额 |
| F6 | 在用资产才计提 | 停用/清理后不计提 | 折旧合计=在用卡片 |

### G 库存（6）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| G1 | 采购入库联动 | 验收即入库 | 入库单↔采购事项互链 |
| G2 ★ | 出库成本结转（加权平均） | 借6401/贷1403（58,300） | 结存 900+600−1,166=334；金额 16,700 |
| G3 | 存货汇总=总账 | — | 结存金额=1403 余额 |
| G4 | 库存期初带入 | 期初=科目期初 | 45,000=1403 期初 |
| G5 | 出入库单自动生成（凭证反提） | 按科目提取凭证生成单据 | 单据↔凭证双向 |
| G6 | 负库存/超发 | 拦截 | 库存不为负 |

### H 保证金与借款（8）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| H1 | 缴纳保证金 10,000 | 借1221-保证金/贷1002 | 1221 辅助+10,000 |
| H2 | 收回保证金 | 借1002/贷1221 | 辅助归零；退款记录留痕 |
| H3 | 退还他人保证金 | 借2241/贷1002 | 2241-保证金归零 |
| H4 | 保函手续费 | 借6602/贷1002 | 金额=保函单 |
| H5 | 保证金没收 | 借6711/贷1221，**强制人工确认** | 审批单留痕 |
| H6 | 借款/备用金发放 | 借1221-个人/贷1002 | 员工辅助+金额 |
| H7 | 借款归还 | 借1001/贷1221 | 辅助归零 |
| H8 | 保证金全生命周期台账 | 单号全链可追（缴纳→收回/没收） | 台账与 1221 辅助一致 |

### I 税费与摊销（5）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| I1 | 计提税金及附加 | 借6603/贷2221-附加 | 附加税基数正确 |
| I2 | 结转未交增值税 | 2221-转出未交→2221-未交 | 两明细余额衔接 |
| I3 | 增值税减免（小微） | 借2221/贷6117 | 减免额=政策计算值 |
| I4 | 待摊费用摊销 | 借6602/贷1901 | 余额递减至 0 |
| I5 | 纳税一览表 | 与申报数据一致 | =应交税费科目+申报台账 |

### J 票据兜底（9）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| J1 ★ | 导入销项票 FP0061（无业务单） | 入池=**待补证**；不可生成 | 生成接口阻断；缺证据清单可见 |
| J2 | 补证→复核→凭证 | 借1122 47,000/贷6001 45,720＋贷2221 1,280 | 拆税正确；补证留痕 |
| J3 | 重复导入（同代码+号码） | 拦截/合并 | 无重复行 |
| J4 | 模板"未指定" | 禁止生成→人工指定→生成 | 阻断码返回 |
| J5 | 汇总生成（2 张费用票） | 记-0046 一张凭证多事项 | 事项↔凭证 N:M 正确 |
| J6 | 队列口径流转 | 未记账→审核中→已记账 | 待处理队列 SQL 断言 |
| J7 | 费用票 16 类模板分流 | 按关键词命中对应模板 | 模板命中率与关键词库一致 |
| J8 | 红冲票锁定 | 红冲票禁止报销/付款/合同关联 | 接口拒绝 |
| J9 | 三向可追 | 票据↔凭证↔事项 双向可跳 | 关联表完整性断言 |

### K 期末结账（9）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| K1 ★ | 八项检查分级 | 阻断/警告两级；警告可申请例外 | 未启用模块自动跳过 |
| K2 ★ | 一键结账 | 计提（记-0030/0036）＋**系统强制结转损益**（记-0038） | 损益归零；净利 6,500 进 4103；试算 0 |
| K3 | 试算不平 | **阻断**＋差额定位报告 | 期间未锁；无结转凭证 |
| K4 | 结账后锁定 | 改/删/录凭证全部拒绝 | PERIOD_CLOSED |
| K5 | 反结账 | 解锁+留痕（二次授权） | op_log 记录 |
| K6 | 期初修改（反结后） | 影响资产负债表年初数 | 试算平衡重验 |
| K7 | 结转下期 | 下期期初=本期期末 | 期初借贷平衡 |
| K8 | 例外审批放行 | 警告项经批准后结账 | 审批留痕 |
| K9 | 报表口径切换 | 未结账角标→结账后正式口径 | 报表数值前后一致（仅口径标识变） |

### L 建账与迁移（9）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| L1 | 科目余额表导入（金蝶 KIS 格式） | 科目+期初自动生成 | 期初试算平衡 |
| L2 | 非常规表头列映射 | 人工确认后导入成功 | 映射模板可保存 |
| L3 | 科目对照 | 自动命中≥90%＋人工映射 | 对照表闭环 |
| L4 | 试算不平 | 阻断＋差异报告 | 报告科目级定位 |
| L5 | 三表兜底建账 | 报表项目→科目映射 | 不生成历史凭证 |
| L6 | 历史凭证只读 | 可查不可改（LEGACY） | 反结账不得越过迁移点 |
| L7 | 级次推断（4-2-2-2 / 4-2-2） | 层级正确重建 | 父子关系断言 |
| L8 | 映射模板复用（第二客户） | 仅上传即完成 | 人工干预≤10% |
| L9 | 导入重复行 | 按策略覆盖/合并 | 无脏数据 |

### M 科目/账簿/报表（10）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| M1 | 科目停用 | 历史凭证/账簿不受影响 | 停用科目余额仍可查 |
| M2 | 辅助核算联动 | 应收-客户/应付-供应商强制非空 | 缺辅助阻断 |
| M3 ★ | 凭证汇总表 vs 科目余额表 | 两表发生额一致 | 差额=0 硬断言 |
| M4 | 明细账=凭证逐笔 | 逐笔一致、余额连续 | 抽样≥10 笔 |
| M5 | 资产负债表 | 资产=负债+权益（706,340.50） | 平衡断言 |
| M6 | 利润表 | =损益类本期/累计发生额 | 净利润=6,500 |
| M7 | 核算项目余额表 | 按客户/供应商汇总 | =辅助余额 |
| M8 | 账簿期间切换 | 任意期间数据隔离正确 | 期初期末衔接 |
| M9 | 凭证号整理 | 断号重排＋原号留痕 | 排序无断号 |
| M10 | 数量金额账/多栏账（P2 预留） | 数量金额列正确 | 数量×单价=金额 |

### N 纯记账模式（10）★双模式兼容组

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| N1 | 模式配置 `bookkeeping_only` 生效 | ①业务台账组菜单隐藏 | 菜单树按 run_mode 返回 |
| N2 ★ | 纯记账全流程直通 | 建账→导入票据流水→自动生成→复核入账→账簿出表，**无业务模块参与** | 全链无事件通道调用 |
| N3 | 高置信票据直接生成 | 事项自动创建（透明化）直达待审核凭证 | 凭证"来源"列显示自动事项 |
| N4 | 对账页裁剪 | 仅"收款↔应收、银行↔总账"两组 | 无业务事件的对账组不渲染 |
| N5 | 事项层透明化 | UI 以"凭证来源"呈现；用户只做导入+复核 | 事项详情可下钻（审计保留） |
| N6 | 手工补录凭证 | 正常生成待审核 | 与自动凭证同状态机 |
| N7 | 期末结账（无薪资/资产数据） | 计提项自动跳过 | 检查清单按数据裁剪 |
| N8 | 报表口径 | 与模式 A 完全一致 | 三表勾稽同 M5/M6 |
| N9 | **模式升级**（B→A） | 接入业务模块后数据无损 | 历史票据/凭证/事项全在 |
| N10 | **模式降级**（A→B） | 业务模块停用后记账不受影响 | 对账/菜单自动裁剪 |

### O 幂等/跨期/异常（12）

| 编号 | 场景 | 期望 | 勾稽验证点 |
|---|---|---|---|
| O1 ★ | 事件重放 100 次 | 1 事件+1 事项+1 凭证 | 三层唯一键断言 |
| O2 ★ | 已结账期间迟到单据 | 跨期异常＋授权调整，**禁静默改期** | 原期间凭证数不变 |
| O3 | 复核驳回重生成 | 旧凭证入回收站；票据回未记账；新凭证 | 无重复事项 |
| O4 | 汇总任务重跑 | 结果一致 | 凭证数不变 |
| O5 | 规则版本发布 | 历史保留旧版本快照 | voucher.rule_version 断言 |
| O6 ★ | 已入账纠错 | 删除被拒→冲销红字（−90,000 关联原凭证） | 余额对冲归零 |
| O7 | 异常①未匹配流水 | 待定性→裁定 | 关闭留痕 |
| O8 | 异常②跨期单据 | 期间裁定（含"重开期间"审批流） | 留痕 |
| O9 | 异常③缺规则 | 补规则后同类自动命中 | 自动生成→补→再跑通过 |
| O10 | 异常④重复事项 | 合并/作废其一 | 事项唯一键 |
| O11 | 异常⑤金额不符 | 按发票/验收调整 | 调整事项生成 |
| O12 | 事件乱序（source_revision 判序） | 按 revision 重建 | 最终状态一致 |

### P 权限与安全（9）

| 编号 | 场景 | 期望 |
|---|---|---|
| P1 | 制单人自审 | 拒绝＋日志 |
| P2 | AI 凭证未审核直接入账 | 无入口＋接口拒绝 |
| P3 | 跨账套/跨租户访问 | 拒绝，无泄露 |
| P4 | 反结账权限 | 无权限拒绝；有权限留痕（二次授权） |
| P5 | 批量审核边界 | 仅同模板小额；超限转逐张 |
| P6 | 规则发布与凭证复核分离 | 角色互斥生效 |
| P7 | 敏感字段脱敏（税号/账号） | 列表脱敏、详情按权限 |
| P8 | 操作日志全覆盖 | 审核/入账/冲销/反结账/规则发布等关键动作全有记录 |
| P9 | 大额凭证（>50 万） | 走复杂流程（制单→审核→审批→记账） |

### Q 前端交互与导入边界（8）

| 编号 | 场景 | 期望 |
|---|---|---|
| Q1 | 40 页导航一致性 | 38 链接结构统一、自高亮正确、流水线顺序 |
| Q2 | 凭证筛选（状态/AI/关键字） | 组合筛选准确 |
| Q3 | 票据池队列口径切换 | 待处理/全部切换正确、计数联动 |
| Q4 | 异常关闭理由校验 | 空理由拦截 |
| Q5 | 规则试运行 | 不写账（DB 无新凭证） |
| Q6 | Excel 异常表头导入 | 人工映射兜底成功 |
| Q7 | 千行批量导入 | 性能与完整性 |
| Q8 | 空态与窄屏 | 空态友好；窄屏表格横滚不挤压 |

### R 性能（4）

| 编号 | 场景 | 目标 |
|---|---|---|
| R1 | 事件接入受理 | p95 < 500ms |
| R2 | 事件→待审核凭证 | p95 < 30s |
| R3 | 万级凭证账簿查询 | ≤ 2s |
| R4 | 期末结账（万级凭证） | 单期 ≤ 60s（含结转生成） |

## 三、规则覆盖矩阵（41 条规则 → 用例，无死角）

| 域 | 规则 → 用例 |
|---|---|
| 业务确认（8） | REVENUE_SERVICE_V2→A3 · REVENUE_PROGRESS_V1→A9 · PURCHASE_GOODS_V1→B1 · PURCHASE_EST_V1→B2 · EXPENSE_REIMB_V1→C1 · ASSET_ACQUIRE_V1→F1 · INVENTORY_ISSUE_V1→G2 · BORROW_OFFSET_V1→C3 |
| 资金结算（18） | SETTLE_AR→A5 · ADVANCE_RECEIPT→A2 · PAY_AP→B4 · PREPAY_PURCHASE→B5 · EXPENSE_PAY→C2 · BANK_INTEREST→D2 · BANK_FEE→D3 · BANK_WITHDRAW→D4 · BANK_SALARY→D6 · BANK_TRANSFER→D5 · PAYROLL_PAY→E2 · PAYROLL_SI_PAY→E4 · DEPOSIT_PAY→H1 · DEPOSIT_RECOVER→H2 · DEPOSIT_REFUND→H3 · DEPOSIT_FEE→H4 · BORROW_OUT→H6 · BORROW_REPAY→H7 |
| 期末任务（6） | PERIOD_PAYROLL→E1 · PERIOD_DEPR→F2 · TAX_ACCRUE→I1 · TAX_VAT_TRANSFER→I2 · TAX_VAT_RELIEF→I3 · AMORTIZE→I4 |
| 调整更正（4） | SALES_RETURN→A7 · EST_VARIANCE→B3 · ASSET_DISPOSAL→F5 · DEPOSIT_FORFEIT→H5 |
| 开票税务（1） | INVOICE_OUTPUT→A4 |
| 票据兜底（4） | REVENUE_BY_INVOICE→J1/J2 · EXPENSE_BY_INVOICE→J7 · PURCHASE_BY_INVOICE→J7（进项变体） · BANK_UNMATCHED→D1/O7 |

## 四、详版用例（12 条，回归必跑）

### A3 ★ 履约确认（含预收冲抵）
- 前置：A1（合同 100 万）、A2（预收 30 万入账）；验收单 YS-0630-01 已签。
- 步骤：合同模块确认履约 → 事项工作台出现"收入确认·待复核" → 详情核对（条件逐条 ✓、金额分层 100,000/30,000、分录预览）→ 复核 → 记账管理王五审核 → 入账。
- 期望：凭证 `借1122 70,000＋借2203 30,000 / 贷6001 100,000`；事项转已入账；合同/票据回写。
- 验证：1122 客户辅助 +70,000；2203 −30,000；利润表 +100,000；三表平衡。

### A2 ★ 预收 30 万
- 步骤：收款到账 → 裁决 RECEIVE_ADVANCE → 复核 → 入账。
- 期望：`借1002/贷2203`；**6001 无发生**。验证：2203 +30,000；资产负债表合同负债正确。

### B1/B3 ★ 采购验收与暂估调差
- 步骤：B1 验收 29,520 确认（`借1403/贷2202`）→ 发票 FP0063（30,000）到达 → 调差 480 事项 → 复核入账。
- 期望：成本净额与实收一致（不出现 29,520+30,000）；EX 异常关闭。验证：2202-暂估清零；2202 正式=30,000。

### C1 ★ 报销确认一次
- 步骤：报销批准 8,200 → CONFIRM_EXPENSE → 复核入账；随后 C2 支付。
- 期望：6601 仅 +8,200 一次；支付只冲 2241。验证：6601 发生额断言（==8,200）。

### C3 ★ 借款核销
- 步骤：借款 5,000 发放 → 报销含 borrow_linked → OFFSET_BORROW。
- 期望：1221-个人 余额=0。验证：借贷轧差=5,000。

### D1 ★ 未匹配收款（红线）
- 步骤：导入流水（无业务单）→ 观察事项 → 人工裁定"冲应收"。
- 期望：裁定前**零收入凭证**；裁定后 `借1002/贷1122`＋核销；理由留痕。验证：6001 全程不动（本用例）。

### D5 ★ 内部转账
- 期望：`借1002-转入/贷1002-转出`；**全系统无损益发生**。验证：6001/6603 期初期末无变化。

### E1/E2 ★ 薪资全链
- 步骤：批次确认（结账时计提）→ 发放（代扣拆分）→ 缴纳社保。
- 期望：2211 批次归零；2221=应缴个税；2241 归零。验证：薪资表累计列=个税累计。

### J1/J2 ★ 票据兜底待补证
- 步骤：导入 FP0061 → 观察阻断 → 补证 → 复核 → 凭证。
- 期望：两步间严格阻断；`借1122 47,000 / 贷6001 45,720＋贷2221 1,280`。验证：票据三态流转。

### K1/K2 ★ 结账
- 步骤：检查（阻断全绿/警告例外）→ 一键结账。
- 期望：记-0030/0036 计提＋**记-0038 结转损益自动生成**；损益归零；净利 6,500。验证：试算 0；4103=6,500。

### N2 ★ 纯记账全流程
- 步骤：`run_mode=bookkeeping_only` 建账套 → 导入科目余额表 → 导入发票+流水 → 自动生成 → 复核入账 → 账簿报表。
- 期望：全程无业务模块参与；财务仅"导入＋复核"；出表与模式 A 一致。验证：菜单裁剪断言；三表勾稽同 M5/M6。

### O1/O6 ★ 幂等与冲销
- O1：重放 100 次 → 三层唯一键各 1 条。O6：删除被拒 → 冲销 −90,000 关联原凭证 → 余额对冲归零。

## 五、双轨验证方案（切换前执行）

1. **并行期**：旧逻辑（票据直出凭证）与新引擎同库并行 1 个月；模式 A/B 客户各选 1 户试点。
2. **日终比对**：以**科目余额表**逐科目比对，差异清单归档；模式 B 试点额外比对"导入量→凭证量"的自动化率。
3. **差异归因**三类：旧逻辑缺陷（登记修正项）/ 新规则配置错（改规则）/ 数据问题（异常处理）。
4. **切换门槛**：连续 5 个工作日差异归零 ＋ 财务抽检回执 → 灰度切新引擎。

## 六、通过标准（P0 验收门槛）

1. **A~R 组 154 条全绿**（或正式获批的受限例外，逐条登记）；其中 **N 组（纯记账模式）与 A/B/D/J/K/M 组为必验收组**；
2. R 组性能达标；规则覆盖矩阵 41/41 无死角；
3. 财务牵头人工核查 ≥20 笔：原始单据 → 事项 → 凭证 → 总账 → 核销，全链无断；
4. 旧账迁移未被破坏：期初试算平衡一致，历史凭证只读可查；
5. 双模式各完成一轮端到端验收（N2 + A3 为代表路径）。
