财务模块 · 需求文档

会计事项工作台 · 页面需求文档

版本 V1.7 · 2026-10-09 · 支持在线查看与原文下载
下载 Markdown 原文

会计事项工作台 · 页面需求文档

定位:本文是《业财一体化财务核算需求文档》第五章「会计事项需求」的页面级落地——把"业务事件 → 会计事项确认"这一步拆到字段、按钮、接口粒度,供开发和测试直接使用。 原型对照:accounting-events.html(工作台)+ accounting-event-detail.html(事项详情;工作台的复核/补证/裁定/驳回都必须落到详情完成,两页合为一份需求)。 上游文档:《业财一体化财务核算需求文档》§3/§5 ·《自动记账技术方案》§11/§12 ·《会计事项目录》(T1.1/T1.3)·《会计规则目录》(T1.2)·《财务模块开发指南》§2/§3。 基准账套:长沙宏达贸易有限公司 · 2026-06(期初 726,240.50 平;14 张凭证基线)。 日期:2026-10-09 | 修订:2026-10-10 增补 §1.2 三层定位 / §4.6 关联机制 / §7.7 处理时点与节奏 / §7.8 端到端案例 / 附录 A 行业对照


一、页面定位与目标

1.1 在记账管道中的位置

业务动作(合同履约/验收入库/报销批准/收款到账/期末任务…)
   ↓ 业务模块同事务写 outbox_event
【会计事项工作台】← 你现在看的这一环:把"业务事实"翻译成"会计确认"
   ↓ 生成待审核凭证(人工复核通过后)
记账管理(审核 → 入账)→ 账簿 / 报表
   ↘ 旁路:异常处理中心 · 业财对账 · 期末结账 · 规则中心

一句话:事项是防重与追溯的枢纽——同一经济业务的多张发票、多笔收款只对应一组事项;工作台是财务复核岗每天处理的"会计确认队列"。

1.2 三层定位:事件 / 事项 / 凭证(先把"事项是什么"说透)

层 说的是什么话 例子(HT2026-001 第2期)
业务事件 "发生了什么"(业务语言) 第2期履约完成、首款到账
会计事项 "财务该怎么处理"(判断记录):该不该记 / 记什么 / 多少钱 / 凭什么 要确认收入 10 万;依据=合同+验收单;规则=REVENUE_SERVICE_V2
凭证 "账上最终记什么"(会计语言) 记-0048:借 应收 70,000 + 借 合同负债 30,000 / 贷 收入 100,000

四条硬规则:

  1. 不是每个业务事件都产生事项:informational 类(合同签署、下单)不产生;recognition / settlement / adjustment / periodic 类按条件产生。
  2. 同一事件可产生 0 / 1 / 多个事项(按候选会计动作与确认片段 slice);反过来说,多张发票、多笔流水可只对应一组事项(防重目标)。
  3. 事项全量留档:每个事项无论结局都编号存档(含"不确认",保留原因与规则版本)——凭证只记结果,事项才留判断过程(审计追溯的依据)。
  4. 凭证按条件产出,且与事项 N:M:不确认 → 永不出凭证;待补证 / 待裁定 → 处理完才出;按单生成 1 事项→1 凭证,汇总生成 N 事项→1 凭证。

1.3 页面使命

# 使命 体现
1 队列化处理:把当期 128 个业务事件收敛成"应确认 96 项",按状态排队等人处理 状态筛选 + 状态优先级排序
2 例外管理:自动能出凭证的直接出;出不了的(待补证/待裁定/异常)显性化,不让问题沉底 待补证/待裁定 KPI + 原因展示
3 防重与追溯:六要素唯一键防重复确认;一事项 ↔ N 证据 ↔ N 凭证双向可查 事项编号贯穿全站(来源事项列/关联事项列/对账行)
4 盯盘:自动生成率 / 自动入账率 / 异常结清率 / 业财差异额 KPI 区第二行(两率分开统计,不以生成率冒充入账率)

1.4 双模式适配(模式 A 业财一体 / 模式 B 纯记账)

模式 A · 业财一体(默认) 模式 B · 纯记账
事件来源 全部五类(业/资/票/手/期) 票(票据推断)/ 资(银行结算)/ 手 / 期
事项层 用户可见、可处理 自动创建、透明化(用户直接看到"凭证来源",复核动作不变)
本页作用 会计确认主队列 复核队列(N5:详情可下钻,审计留痕不丢)
切换 账套级 run_mode 配置,升降级数据无损(N9/N10) 同左

1.5 上下游页面

方向 页面 关系
上游 仪表盘「业财核算」卡 数字同源,点击进工作台
上游 异常处理中心 异常行"关联事项"直达详情
上游 业财对账 差异行"生成事项 / 前往裁定"直达详情
上游 票据池(证据中心) 票据"关联事项"列 / 待补证徽章直达详情
下游 记账管理 生成凭证后入列(待审核);凭证"来源事项"列回跳详情
旁路 规则中心 / 异常中心 / 结账 / 对账 KPI 与行内链接直达

二、角色与操作权限(谁来操作)

2.1 角色总览(引用《开发指南》§2 权限矩阵)

角色 在本页能做什么 硬约束
业务经办 只读自己单据关联事项的进度(不展示凭证编辑入口) 不产生任何会计影响;看不到分录编辑
财务复核岗(记账岗) 本页主用户:复核 / 批量复核 / 补证 / 裁定 / 驳回 / 生成凭证 / 手工事项 / 查看凭证 不能审核自己制单的凭证;不能跳过审核直接入账(P1/P2)
财务负责人 复核岗全部 + 大额/跨期例外授权(如超期改期审批)、裁定升级 高风险动作二次授权 + 留痕
规则管理员 只读(查看规则命中与执行解释) 规则改动仅能在规则中心(职责分离 P6)
AI 不操作。提供建议、置信度与解释;生成的项标记"含 AI 生成" 不能裁定、不能过账、不能改规则

2.2 权限点(本页定义,纳入全局权限点字典)

权限点 说明 默认授予
ae:view 查看工作台与事项详情 财务复核岗 / 财务负责人 / 规则管理员(只读)
ae:create_manual 手工创建事项 财务复核岗
ae:approve 复核通过(生成凭证) 财务复核岗
ae:batch_approve 批量复核(≤20 项/次,且仅同规则同金额量级;超限转逐张,P5) 财务复核岗
ae:evidence 补充证据(待补证) 财务复核岗
ae:resolve 人工裁定(待裁定,理由必填) 财务复核岗;金额 > 50 万升级财务负责人
ae:reject 驳回事项(理由必填) 财务复核岗
ae:generate_voucher 生成待审核凭证 财务复核岗(与凭证审核 voucher:audit 分离校验,P1)

三、功能点清单

3.1 会计事项工作台(8 个区块)

# 区块 功能点
1 页头 账套与期间标识(长沙宏达贸易有限公司 · 2026-06);一句话说明;手工事项 / 批量复核两个工具栏按钮
2 KPI 第一行(5 项) 本期事件数 128(去重后接入)/ 应确认事项 96(不含"不确认")/ 待复核(实时,含 AI 生成)/ 待补证(实时,证据不全)/ 异常 5(链接→异常中心)
3 KPI 第二行(4 项) 自动生成率 92%(自动生成凭证事项 ÷ 应生成事项)/ 自动入账率 78%(完成过账 ÷ 应生成事项,≠生成率)/ 异常结清率 58%(已结清 7 ÷ 本月 12)/ 业财差异额 60,880.00(3 项待处理,链接→对账明细)
4 筛选区 期间(全部 / 2026-06 / 2026-05)· 状态(7 态)· 会计动作(收入确认/采购确认/费用确认/应收回款/付款核销/预收/支付职工/期末计提/待定性);三条件叠加生效;右侧来源图例(业/资/票/手/期 五类徽章)
5 事项列表(10 列) 勾选框(仅"待复核"行可勾)· 事项编号 · 来源事件(徽章+摘要)· 业务对象 · 会计动作 · 确认金额 · 金额分层 · 期间 · 状态 · 操作
6 状态图例 7 态徽章与配色(与表格、详情页三处同源)
7 凭证预览抽屉 凭证头(号/日期/状态徽章/来源事项)+分录表+借贷合计;底部"在记账管理中打开"深链
8 轻提示(toast) 复核成功报凭证号;批量复核空选拦截;手工事项示意

3.2 事项详情(9 个区块)

# 区块 功能点
1 头部 返回工作台;AE-编号 · 会计动作;摘要(事件/业务对象/期间);状态徽章;状态驱动的操作按钮组(见 §6.2)
2 金额分层 确认金额 / 已结算 / 已开票 / 税额(四者不必相等;"—"表示未发生)
3 确认依据 命中规则编号 + 版本;确认条件逐条 ✓/✗ + 解释(来自规则执行日志)
4 分录预览 按状态分级:规则模板预览(待复核)/ 裁定前无分录(待裁定)/ 凭证分录只读(已生成·已入账)/ 无会计影响(不确认)
5 结账校验 该事项生成时的校验清单(平衡/期间/科目/唯一性)
6 证据区 发票 / 流水 / 验收影像 N:M 关联;缺失项高亮(待补证的依据)
7 时间线 事件发生 → 接入 → 评估 → 各次状态流转(含裁定留痕)
8 关系与图谱 合同 / 事项-凭证(深链记账管理)/ 核销记录 / 关联事项;节点图谱(合同→履约→票据/流水→事项→凭证)
9 人工裁定弹窗 四候选(现销收入/预收款项/冲应收回款/往来款)+ 裁定说明必填(留痕)

四、数据从哪里来(取数设计)

4.1 数据链路总览(事件 → 事项 → 页面)

步 动作 落库 关键规则
1 业务动作发生(合同履约确认/验收入库/报销批准/收款到账/期末任务…),业务模块同事务写发件箱 outbox_event 事务性发件箱,业务提交成功才可能投递
2 发布器投递 → 记账服务消费 inbox_consume 幂等键 (tenant_id, source_system, event_id),重放返回首次结果(O1)
3 事件分类 → 候选会计动作(0/1/多项) business_event(事实不可编辑,更正走新 revision) informational 类不产生事项
4 按六要素唯一键取或建事项 accounting_event 账套+业务对象类型+对象ID+会计动作+确认片段+版本;重复投递不重复建(O1/O10)
5 规则引擎匹配(企业规则→行业模板→通用模板→人工),评估确认条件,关联证据 accounting_rule / rule_execution_log / accounting_event_evidence 规则版本不可覆盖;试运行不写账;执行日志留输入哈希与结果
6 结果分流写状态 accounting_event.status 不确认 / 待补证 / 待裁定 / 待复核 / 直接生成待审核凭证(本系统 D3 决策:一律人工复核后入账)
7 人工复核(本页)→ 生成待审核凭证 voucher + accounting_event_voucher(N:M) 禁重复生成(DUPLICATE_ACCOUNTING_ACTION);汇总凭证靠 N:M 关联,不依赖凭证单一 source_id

4.2 列表字段取数(字段级映射)

页面元素 来源 口径说明
事项编号 AE-0630-001 accounting_event.id 的显示号 规范 AE-{MMDD}-{3位序号}(见《术语表》§五编号前缀)
来源事件徽章 业/资/票/手/期 accounting_event_source → business_event.event_type 归类 业=业务事件(recognition_candidate)· 资=资金结算(settlement)· 票=票据推断(bill_pool 兜底)· 手=手工创建 · 期=期末计提(periodic)
来源事件摘要 business_event.payload.summary(如"履约确认 · HT2026-001 第2期") 由事件契约 payload 生成
业务对象 business_object_type + business_object_id(合同/入库单/报销单/流水/发票/资产卡片/薪资批次) 显示时映射为中文名+"编号"
会计动作 action_code → 中文映射(RECEIVE_AR→应收回款…) 动作字典见《会计事项目录》§四
确认金额 recognized_amount(DECIMAL(20,4),接口传十进制字符串) 未确认时为"—"(如待定性)
金额分层 recognized_amount / settled_amount / invoiced_amount / tax_amount 四个独立字段,不必相等;分层差异是合法信息,不是错误
期间 accounting_period 确认归属期间;≠ 事件 occurred_at(跨期即由此暴露,见 O2/EX-2026-0603)
状态 status 枚举 7 态 → 前端徽章映射,见 §6.1
操作列按钮 前端由状态派生(不改数据) 按钮矩阵见 §5.1/§6.2;后端只校验动作合法性
勾选框可用性 status = 待复核 其他状态行不渲染复选框

4.3 KPI 口径(每个指标的定义与公式)

指标 公式(期间 = 账套当前会计期间) 粒度 / 刷新
本期事件数 COUNT(DISTINCT event_id) FROM business_event WHERE occurred_at∈期间 账套级;页面加载拉取
应确认事项 COUNT(*) FROM accounting_event WHERE accounting_period=期间 AND status<>'NOT_RECOGNIZED'(六要素天然去重) 账套级
待复核 status IN ('READY','NEED_REVIEW')(不含待裁定);实时——复核一项立即 -1 账套级;操作后局部刷新
待补证 status='NEED_EVIDENCE';实时 同上
异常 COUNT(*) FROM accounting_exception WHERE status<>'CLOSED'(未关闭数);点击 → 异常中心 账套级
自动生成率 系统自动生成凭证的事项数 ÷ 应生成事项数(应生成 = 应确认 − 待裁定 − 待补证 − 不确认) 期间级;与入账率分开统计
自动入账率 完成过账(已入账)事项数 ÷ 应生成事项数;不得用生成率冒充(硬规则) 同上
异常结清率 已结清异常数 ÷ 期间异常总数 同上
业财差异额 Σ|业务口径 − 账面口径|的四组合计(合同↔收入 / 收款↔应收 / 采购↔应付 / 银行↔总账),明细在业财对账页 期间级;本页只读展示 + 跳转

原型口径说明:128/96/5 与三个率值为宏观示例值(页面展示稳态);待复核/待补证/差异额为与列表数据咬合的真实计算值。上线后全部改为接口返回值。

4.4 详情页区块取数

区块 来源
金额分层 事项四金额字段(同上)
确认依据 accounting_rule(code/version/condition_json,版本快照)+ rule_execution_log.evaluation_json(条件逐条结果与解释;历史凭证保留旧版本快照,O5)
分录预览 未生成:规则 entry_json 模板渲染(标注"待生成(预览)");已生成/已入账:voucher_entry 只读(标注"分录来自凭证 记-XXXX(只读预览)"——已入账后权威分录是凭证而非规则模板)
结账校验 生成前校验器输出:借贷平衡 / 期间未锁定 / 科目存在 / 六要素唯一
证据 accounting_event_evidence(relation_type/matched_amount)→ 发票(发票管理)/ 流水(流水管理)/ 验收影像(业务模块);多候选展示原因与置信度
时间线 business_event.occurred_at + 状态迁移日志(op_log,P8 全覆盖)
关系/图谱 accounting_event_source(来源事件)/ accounting_event_voucher(N:M 凭证,深链)/ settlement_allocation(核销)/ supersedes_event_id(更正链)

4.5 页面入口(数据从哪些路径进来)

# 入口 落点
1 左侧菜单「会计事项工作台」 工作台(全部页统一侧边栏)
2 仪表盘「业财核算」卡 → 进入事项工作台 工作台
3 异常处理中心 → 行内"关联事项" 详情(?id=AE-XXXX)
4 业财对账 → 差异行"生成事项 / 前往裁定" 详情
5 票据池"关联事项"列 / 待补证徽章 详情
6 记账管理 → 凭证"来源事项"列 详情

4.6 事项的关联机制("怎么关联到之前的数据")

关联在事项创建时即建立(六要素携带业务对象),不依赖事后人工挂接,也不依赖摘要文字:

关联 实现 例(AE-0630-001)
锚定业务对象 六要素唯一键含 业务对象类型 + ID;同一对象下所有事项自动成组;slice 支持同一对象多次确认 锚 = 合同 HT2026-001 · 第 2 期
触发来源 accounting_event_source(事项 ↔ 业务事件 N:M) 履约/交付事件,源单 = 验收单 YS-0630-01
证据凭据 accounting_event_evidence(事项 ↔ 发票 / 流水 / 验收影像 N:M) 合同、验收单、预收流水 B20260520001(流水在本事项中是"证据"身份)
前序事项的计量联动 收入确认规则按"同一业务对象下合同负债科目余额"自动冲减,非人工挑单 借 合同负债 30,000 —— 冲减 AE-0520-007 的余额;金额分层"已结算 30,000"由前序事项汇总而来
结算核销 settlement_allocation(结算事件 ↔ 目标事项) 回款核销应收(核销单 HX-0602-01)
产物凭证 accounting_event_voucher(事项 ↔ 凭证 N:M) 记-0048

设计意图:把所有"这笔抵那笔"的关系结构化落库(而不是写在摘要里),使防重、自动冲减、审计沿链追溯都可机器校验。

五、按钮清单(逐按钮规格)

5.1 工作台

按钮 位置 可见条件 点击行为 权限点 接口 边界与异常
手工事项 页头工具栏 恒显 打开手工事项抽屉:摘要 / 业务对象(类型+编号)/ 会计动作 / 确认金额 / 期间 / 确认日期 / 证据;附证据 → 生成"手"来源「待复核」事项;未附证据 → 转「待补证」(补齐后自动转待复核);新事项直接进队列与详情(详情按参数动态接入) ae:create_manual POST /accounting/events(source=manual) 六要素防重拦截(同对象+同动作+同期间重复提交 → 拒绝并提示已存在事项号);编号按确认日期 AE-{MMDD}-{序号} 顺延;复核后凭证按所选动作模板就地预览
批量复核 页头工具栏 恒显 把勾选事项批量流转为已生成凭证(逐项建凭证) ae:batch_approve POST /accounting/events/batch-approve {ids[]} 空选拦截提示;>20 项或跨规则/大额转逐张(P5);部分失败逐项回报
全选 表头 列表非空 勾选/取消当前可勾行(仅待复核) ae:batch_approve — 不含不可勾行
复核 行内(待复核) st=待复核 打开事项详情处理 ae:view — —
直接通过 行内(待复核) st=待复核 不打开详情,原地复核通过 → 状态转"已生成凭证",生成待审核凭证(toast 报凭证号),KPI 实时 -1 ae:approve+ae:generate_voucher POST /events/{id}/generate-voucher 幂等:重复点击返回同一凭证(DUPLICATE_ACCOUNTING_ACTION);制单人=审批人时拒绝(P1)
补证 行内(待补证) st=待补证 打开详情补证区 ae:view — —
裁定 行内(待裁定) st=待裁定 打开详情裁定入口 ae:view — —
查看凭证 行内(已生成/已入账) 有凭证关联 就地弹出凭证预览抽屉;抽屉内"在记账管理中打开"深链 accounting.html?vch=记-XXXX ae:view GET /vouchers/{id} 凭证不在当前期间列表时深链页给出提示
详情 行内(已入账/不确认) 终态行 打开详情(只读追溯) ae:view — —
异常 KPI 卡 KPI 行一 恒显 跳异常中心 ae:view — —
对账明细 → KPI 行二 恒显 跳业财对账 ae:view — —
抽屉关闭 / 遮罩 抽屉 抽屉打开 收起抽屉 — — —

5.2 事项详情 · 头部按钮(按状态可见)

状态 按钮 行为 权限点 接口
待复核 生成凭证 生成待审核凭证 → 状态转"已生成凭证";分录区改为凭证只读预览 ae:generate_voucher POST /events/{id}/generate-voucher(禁重复)
待补证 补充证据 上传/关联证据(缺项高亮)→ 补齐后自动转"待复核" ae:evidence POST /events/{id}/resolve(type=evidence)
待裁定 人工裁定 打开裁定弹窗(四候选 + 说明必填)→ 按裁定规则出分录并转"待复核" ae:resolve POST /events/{id}/resolve(type=adjudicate)
待复核/待补证/待裁定 驳回 退回来源方补充;留痕 ae:reject POST /events/{id}/reject {reason}(理由必填)
已生成凭证 / 已入账 查看凭证 就地预览凭证分录(只读);已入账附"更正走红字冲销"提示 ae:view GET /vouchers/{id}
不确认 (无按钮) 终态文案:"该事项已判定不确认(终态)" — —

5.3 人工裁定弹窗

元素 规格
四候选 现销收入(借银行/贷收入+销项税)· 预收款项(借银行/贷合同负债)· 冲应收回款(借银行/贷应收)· 往来/借款(借银行/贷其他应付款)
裁定说明 必填(留痕要求);未填点确认 → 拦截提示"裁定说明必填"
按钮 取消 / 确认裁定(ae:resolve)
落库 resolution_json(候选+说明+操作人+时间);条件区追加"裁定留痕"行;时间线留痕

5.4 凭证预览抽屉

元素 规格
凭证头 凭证号 / 日期 / 状态徽章(待审核/已审核/已记账/已报税)/ 来源事项
分录表 借/贷 · 科目 · 辅助核算 · 金额;合计行
底部 "在记账管理中打开"→ accounting.html?vch=记-XXXX(记账管理高亮该行并展开抽屉);"关闭"

六、状态机与"状态 → 按钮"变更机制

6.1 七态定义(页面态 ↔ 后端枚举)

页面态 建议枚举 含义 进入条件 出口
待评估 RECEIVED/EVALUATING 事件已接入,规则评估中/待重评 事件消费后 评估完 → 四分支之一
待复核 READY/NEED_REVIEW 条件满足,等待人工复核(含 AI 生成) 规则命中 + 条件全满足 生成凭证 / 驳回
待补证 NEED_EVIDENCE 缺履约/交付证据 条件缺证据类 补证 → 待复核
待裁定 NEED_REVIEW(原因=AMBIGUOUS_MATCH/未匹配流水) 款项无法自动定性 流水无业务单据 裁定 → 待复核
不确认 NOT_RECOGNIZED 判定无会计影响(终态,保留原因+规则版本) 规则判不确认 不可逆(更正走调整事项)
已生成凭证 VOUCHER_DRAFTED 已生成待审核凭证(覆盖凭证「待审核 / 已审核」阶段;凭证记账后转「已入账」) 复核通过 凭证入账 → 已入账
已入账 POSTED 凭证已记账,事项完成 凭证记账回写 纠错只能冲销(O6),不可删改

「已调整」在凭证层以红字冲销 + 调整事项承载,不单列事项状态(与需求文档 §五的对应关系在状态字典 T1.x 统一)。

凭证层 ↔ 事项层 对照(回写规则):凭证「待审核 / 已审核」→ 事项「已生成凭证」;凭证「已记账」→ 事项「已入账」(记账时自动回写);凭证「已报税」→ 事项仍「已入账」(报税状态只存在于凭证层,界面表现为期间锁定)。记账管理里"还没操作"的凭证(待审核)对应工作台正是「已生成凭证」。

6.2 状态 × 按钮矩阵(三处联动,同源派生)

① 工作台行内操作

状态 行内按钮 去向
待复核 复核(→详情)· 直接通过(原地流转) 详情 / 原地
待补证 补证 详情
待裁定 裁定 详情
已生成凭证 查看凭证 就地抽屉
已入账 详情 详情
不确认 详情 详情
待评估 (无行内操作,等待评估) —

② 详情页头部按钮

状态 主按钮 驳回 分录区
待复核 生成凭证 ✅ 规则模板预览("待生成(预览)")
待补证 补充证据 ✅ 规则模板预览;补证后转待复核
待裁定 人工裁定 ✅ "裁定前无分录"
已生成凭证 查看凭证 ❌ 凭证分录只读
已入账 查看凭证 ❌ 凭证分录只读(更正走冲销)
不确认 无(终态文案) ❌ "无会计影响"

③ 状态徽章配色(工作台图例 / 表格 / 详情页三处同源):待评估 灰 · 待补证 青 · 待复核 黄 · 已生成凭证 紫 · 已入账 绿 · 不确认 灰划线 · 待裁定 红。

6.3 状态迁移图

stateDiagram-v2
    [*] --> 待评估: 事件接入
    待评估 --> 待复核: 条件满足
    待评估 --> 待补证: 缺证据
    待评估 --> 待裁定: 款项待定性
    待评估 --> 不确认: 规则判不确认
    待补证 --> 待复核: 补充证据
    待裁定 --> 待复核: 人工裁定(四候选+理由)
    待复核 --> 已生成凭证: 生成凭证/直接通过/批量复核
    待复核 --> [*]: 驳回(回流来源方)
    已生成凭证 --> 已入账: 凭证记账(记账管理)
    已入账 --> 已入账: 更正=红字冲销(新凭证)
    不确认 --> 不确认: 终态留痕

6.4 硬约束(红线)

  1. 制单人不可自审:生成凭证者与凭证审核者不得同一人(P1);
  2. AI 不裁定:AI 只给建议与置信度(P2);
  3. 驳回必填理由、裁定必填说明(留痕);
  4. 已入账不可删改:纠错只能红字冲销(O6);
  5. 已结账期间锁定:期间内事项不得生成凭证(迟到单据走跨期异常 + 授权调整,O2);
  6. 生成凭证幂等:同一事项重复生成返回同一凭证(O1/O3);
  7. 待补证/待裁定不可跳过:不补证不能生成凭证,不裁定不能出分录(D1:未匹配收款禁止默认认收入)。

七、业务流程

7.1 主流程(自动生成路径,以销售闭环为例)

flowchart LR
    A[业务动作<br/>履约确认/验收入库<br/>报销批准/收款到账] --> B[业务模块<br/>同事务写 outbox]
    B --> C[记账服务消费<br/>inbox 幂等]
    C --> D[事件分类<br/>候选会计动作]
    D --> E[六要素取或建事项<br/>防重]
    E --> F[规则引擎<br/>条件评估+证据关联]
    F --> G{结果}
    G -->|条件满足| H[待复核]
    G -->|缺证据| I[待补证]
    G -->|无法定性| J[待裁定]
    G -->|无会计影响| K[不确认]
    H --> L[财务复核<br/>本页操作]
    L --> M[生成待审核凭证<br/>记账管理]
    M --> N[审核→入账<br/>事项转已入账]
  1. 业务动作发生在业务模块(不经财务手工发起);
  2. 记账服务消费事件 → 事项创建 → 规则评估;
  3. 工作台出现"待复核/待补证/待裁定"条目(队列化);
  4. 复核岗处理(直接通过 / 进详情 / 批量)→ 生成待审核凭证;
  5. 记账管理审核 → 入账 → 事项状态回写"已入账";
  6. 账簿/报表/对账自动取数;KPI 自动更新。

7.2 分支一:待补证(补证 → 待复核)

触发:销项票推断收入但缺履约/交付证据(如 AE-0610-005 FP0061 47,000)。 处理:详情证据区缺项高亮 → 财务上传/关联验收单 → 条件行转 ✓ → 事项转"待复核" → 正常生成凭证。

7.3 分支二:待裁定(未匹配流水,红线场景)

触发:到账流水无业务单据(如 B20260605002 · 28,000 · 广东粤海贸易)。 处理:系统不自动判定、不出分录(D1 红线)→ 裁定弹窗四候选 → 选"现销收入" + 填说明 → 按候选规则出分录(借银行 28,000 / 贷收入 27,184 + 销项税 816)→ 转"待复核" → 生成凭证。理由、操作人、时间留痕。

7.4 分支三:驳回回流

复核发现证据/金额不对 → 驳回(理由必填)→ 事项回退来源方补充;若凭证已生成但未入账,旧凭证入回收站,票据回"未记账"重指定模板再生成(O3);全程不产生重复事项。

7.5 期末衔接

结账检查读工作台口径:未处理事项清单必须清零或逐项留痕(待裁定/待补证不得静默挂账)→ 计提/调整/结转凭证 → 全部必要凭证审核入账 → 试算平衡与业财勾稽 → 结账锁期 → 税费管理申报完成 → 记账管理批量标记"已报税"(期间锁定,K 组)。

7.6 异常与跨期

异常 页面表现 处理分流
未匹配流水 待裁定事项 + 异常中心 EX-xxxx 裁定闭环
跨期单据(迟到) 事项期间 ≠ 事件期间(如 FP0064 落入 2026-05) 跨期异常 + 授权调整,禁静默改期(O2)
缺科目规则 待评估滞留 异常中心 → 规则中心补规则 → 同类自动命中(O9)
重复事项 同对象同动作多候选 合并/作废其一(O10)
金额不符 发票 vs 验收差异 按政策调整(O11)

7.7 处理时点与节奏(什么时候做)

总原则:录入由业务触发(不存在"什么时候录"的手工决策),处理由状态定人,底线是本期内清零、结账前清零。

环节 触发时机 谁 时机约束
事项进入工作台 业务动作提交的瞬间(事件驱动,实时;期末任务由结账引擎发起;手工事项由人工提交) 系统自动 —
复核 / 生成凭证 状态=待复核后随时(队列制,非定时) 财务复核岗 必须在凭证生成之前;建议日常日清/周清(资金与往来类尤甚)
审核 凭证生成(待审核)后 复核/记账岗 必须在记账之前;制单人不可自审
记账(入账) 审核(已审核)后 记账岗 同一开放期间内;日清或期末集中均可,拖到下期 = 跨期异常
期末清零 结账检查时 财务负责人 + 复核岗 待复核 / 待补证 / 待裁定必须清零或逐项留痕,否则结账阻断
报税锁定 申报完成回写 系统 结账后按账套+期间批量标记"已报税",期间锁定

两个概念不混:复核管事项(该不该记、记什么、证据够不够),审核管凭证(科目金额对不对、能否入账);顺序固定:复核 → 生成凭证 → 审核 → 记账。

及时入账原则(三时点独立):记账跟着"业务发生"走、收入跟着"履约完成"走、资金跟着"到账"走——三者各归各期间,互不等待。以 HT2026-001 为例:5-20 收款归 2026-05、6-30 履约归 2026-06、7-31 尾款归 2026-07;"等尾款再一起记"会把 5 月账做错(银行对不上、报表失真)并触发跨期异常。

7.8 端到端案例:合同 HT2026-001(预收 → 履约 → 回款)

该案例已完整落在原型中(AE-0520-007 / AE-0630-001 两份完整版详情 + 凭证 记-0003 / 记-0048),可直接作为演示与测试基准。

# 业务节点 事项 凭证 结局
1 3-01 合同签署 100 万(informational) 不产生事项 — 仅台账
2 5-20 首款 30,000 到账(收款单 SK-0520-01 / 流水 B20260520001) AE-0520-007「预收」· ADVANCE_RECEIPT_V1 记-0003 借 银行存款 / 贷 合同负债 5-21 入账;期间 2026-05
3 6-30 第 2 期履约确认(验收单 YS-0630-01) AE-0630-001「收入确认」· REVENUE_SERVICE_V2 记-0048 借 应收 70,000 + 借 合同负债 30,000 / 贷 收入 100,000 已生成凭证(记-0048 待审核 → 审核 → 记账 → 事项回写已入账)
4 开票(销项票) 不重复确认收入,仅税额处理 + 证据关联 — 关联 AE-0630-001
5 尾款 70,000 到账(待发生) 应收回款事项 + 核销 借 银行存款 / 贷 应收账款 约定 2026-07-31

三条可直接用于验收的断言:① 预收阶段无收入凭证(防"收款即认收入");② 确认收入时自动冲减合同负债 30,000(按余额,非人工挑单);③ AE-0520-007 与 AE-0630-001 同属一组(同一业务对象),状态各自独立推进。

八、跳转关系与深链

从 到 触发 参数
工作台行内 事项详情 复核/补证/裁定/详情 accounting-event-detail.html?id=AE-XXXX
工作台行内 凭证预览抽屉(本页) 查看凭证 —
抽屉 记账管理 在记账管理中打开 accounting.html?vch=记-XXXX(高亮行 + 展开抽屉)
详情关系区 记账管理 事项-凭证 accounting.html?vch=记-XXXX
详情证据区 发票/流水/票据池 证据链接 各页带定位参数
工作台 KPI 异常中心 / 业财对账 点击 —
反向 工作台/详情 异常中心关联事项 / 对账差异行 / 票据池关联事项 / 凭证来源事项列 ?id=AE-XXXX

九、接口契约(本页所用)

对齐《自动记账技术方案》§12;stats 为本页新增约定。

方法 路径 用途 关键入参 权限点 主要错误码
GET /api/v1/accounting/events 列表 + 三筛选 book_id, period, status, action, keyword, page, size=50, sort=状态优先级 ae:view AUTH_FORBIDDEN
GET /api/v1/accounting/events/stats KPI 九项(口径见 §4.3) book_id, period ae:view —
GET /api/v1/accounting/events/{id} 详情(金额分层/条件/证据/时间线/关系) id ae:view —
POST /api/v1/accounting/events 手工事项 business_object, action_code, amount, evidence[] ae:create_manual DUPLICATE_ACCOUNTING_ACTION
POST /api/v1/accounting/events/{id}/evaluate 人工重评 — ae:view(触发) RULE_NOT_FOUND
POST /api/v1/accounting/events/{id}/resolve 补证 / 裁定 type=evidence|adjudicate, payload, reason★ ae:evidence / ae:resolve EVIDENCE_REQUIRED AMBIGUOUS_MATCH
POST /api/v1/accounting/events/{id}/generate-voucher 生成待审核凭证(禁重复,幂等) — ae:generate_voucher DUPLICATE_ACCOUNTING_ACTION PERIOD_CLOSED UNBALANCED_VOUCHER SUBJECT_MAPPING_MISSING
POST /api/v1/accounting/events/{id}/reject 驳回回流 reason★ ae:reject —
POST /api/v1/accounting/events/batch-approve 批量复核 ids[](≤20,同规则约束) ae:batch_approve 部分失败逐项回报
GET /api/v1/accounting/vouchers/{id} 凭证预览(抽屉/深链) id ae:view —

十、非功能要求

# 要求
1 幂等:事件消费、生成凭证、批量复核均幂等(O1/O4);重复点击"直接通过"返回同一凭证
2 并发:同一事项两处并发操作 → 乐观锁(version)拒绝后到者并提示"已被他人处理"
3 留痕:复核/裁定/补证/驳回/生成凭证全量写 op_log(P8);不确认保留原因与规则版本
4 性能:列表(50/页)首屏 ≤ 800ms;KPI 与列表并行拉取;操作后 KPI 局部刷新不整页重置
5 权限:按钮可见性由权限点渲染;接口二次校验(前端隐藏≠后端放行)
6 金额规范:一律十进制字符串传输、DECIMAL(20,4) 落库,前端千分位展示
7 双模式:run_mode 决定来源图例与对账组渲染,状态机两模式共用

十一、验收要点(映射《验收测试用例库》)

用例 覆盖本页什么
A2/A3 ★ 预收 30 万 / 履约确认(含预收冲抵)——主流程分录与状态流转
B1/B3 ★ 采购验收与暂估调差——"采购确认"动作与金额分层
C1/C3 ★ 报销确认一次 / 借款核销——"费用确认"不重复
D1 ★ 未匹配收款 28,000——待裁定红线(裁定前无分录 + 理由留痕)
D5 ★ 内部账户转账——裁定候选"往来/借款",全系统无损益
D7 票-流-账三证互查——详情证据区与关系区双向可达
D9/D11 到账净额拆手续费 / 流水重复导入拦截——金额分层与防重
E1/E2 薪资批次确认/发放——"期末计提"来源(AE-0630-010)
N2/N3 ★ 纯记账全流程直通 / 事项透明化——模式 B 适配
N5/N9/N10 事项层透明化 / 升降级——本页在模式 B 的行为
O1/O3 事件重放 100 次仅 1 链条 / 复核驳回重生成——幂等与回流
O2 ★ 已结账期间迟到单据——跨期异常(EX-2026-0603 ↔ AE-0611-011)
O6 ★ 已入账纠错——删除被拒、红字冲销
O7~O12 五类异常处理——待裁定入口与异常中心分工
P1/P2/P5 制单人自审拒绝 / AI 不能直接入账 / 批量边界
P8 操作日志全覆盖——本页全部动作
K 组 结账前"未处理事项清零"检查

十二、原型口径与边界(已知简化)

  1. KPI 宏观值:"本期事件数 128 / 应确认事项 96 / 异常 5"与三个率值为稳态示例;"待复核 / 待补证 / 业财差异额"为与数据咬合的真实值。
  2. 驳回为 toast 示意(真实实现:理由必填);手工事项已实现完整表单(证据为原型级示意附件,未接真实文件上传)。
  3. 复核后新凭证号(记-0048 之外顺延 记-0050…)只在事项页就地预览;记账管理基线为 记-0007~0048,深链未命中时给出提示。
  4. 批量复核未实现金额/规则上限校验(真实实现需按 P5 约束)。
  5. 关联异常未阻断:如 AE-0610-005 与 AE-0630-001 的疑似重复(EX-2026-0604)目前在异常中心呈现,未在本页阻断生成。
  6. 列表无分页/排序控件(样例 12 条全量展示),真实实现按 §10 性能要求分页。

附录 A 行业对照与设计取舍(背景参考)

产品线 架构 中间层性质
金蝶账无忧 / 云会计(小微、代账) 票据/单据 → 凭证模板 → 凭证(两层) 无中间层
金蝶云·星空(大中型) 业务单据 → 智能会计平台 / DAP → 业务凭证 → 总账凭证 "业务凭证"本质已是凭证(一单一张、便于修改与联查)
本设计 业务事件 → 会计事项 → 凭证 事项是判断记录:可无分录(待补证/待裁定/不确认)、六要素防重、承载确认条件与证据

资料参考:金蝶云社区(vip.kingdee.com)、金蝶开发者中心(developer.kingdee.com)"智能会计平台 / 凭证模板 / 业务凭证"公开文档。

关联文档:《财务模块开发指南.md》(§2 角色矩阵 / §3 页面流转 / 30 分钟上手点击清单)·《会计事项目录.md》(事件契约)·《会计规则目录.md》(41 条规则)·《验收测试用例库.md》(154 条)。