会计事项工作台 · 页面需求文档
定位:本文是《业财一体化财务核算需求文档》第五章「会计事项需求」的页面级落地——把"业务事件 → 会计事项确认"这一步拆到字段、按钮、接口粒度,供开发和测试直接使用。
原型对照: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 |
四条硬规则:
- 不是每个业务事件都产生事项:informational 类(合同签署、下单)不产生;recognition / settlement / adjustment / periodic 类按条件产生。
- 同一事件可产生 0 / 1 / 多个事项(按候选会计动作与确认片段 slice);反过来说,多张发票、多笔流水可只对应一组事项(防重目标)。
- 事项全量留档:每个事项无论结局都编号存档(含"不确认",保留原因与规则版本)——凭证只记结果,事项才留判断过程(审计追溯的依据)。
- 凭证按条件产出,且与事项 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 硬约束(红线)
- 制单人不可自审:生成凭证者与凭证审核者不得同一人(P1);
- AI 不裁定:AI 只给建议与置信度(P2);
- 驳回必填理由、裁定必填说明(留痕);
- 已入账不可删改:纠错只能红字冲销(O6);
- 已结账期间锁定:期间内事项不得生成凭证(迟到单据走跨期异常 + 授权调整,O2);
- 生成凭证幂等:同一事项重复生成返回同一凭证(O1/O3);
- 待补证/待裁定不可跳过:不补证不能生成凭证,不裁定不能出分录(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/>事项转已入账]
- 业务动作发生在业务模块(不经财务手工发起);
- 记账服务消费事件 → 事项创建 → 规则评估;
- 工作台出现"待复核/待补证/待裁定"条目(队列化);
- 复核岗处理(直接通过 / 进详情 / 批量)→ 生成待审核凭证;
- 记账管理审核 → 入账 → 事项状态回写"已入账";
- 账簿/报表/对账自动取数;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 组 |
结账前"未处理事项清零"检查 |
十二、原型口径与边界(已知简化)
- KPI 宏观值:"本期事件数 128 / 应确认事项 96 / 异常 5"与三个率值为稳态示例;"待复核 / 待补证 / 业财差异额"为与数据咬合的真实值。
- 驳回为 toast 示意(真实实现:理由必填);手工事项已实现完整表单(证据为原型级示意附件,未接真实文件上传)。
- 复核后新凭证号(记-0048 之外顺延 记-0050…)只在事项页就地预览;记账管理基线为 记-0007~0048,深链未命中时给出提示。
- 批量复核未实现金额/规则上限校验(真实实现需按 P5 约束)。
- 关联异常未阻断:如 AE-0610-005 与 AE-0630-001 的疑似重复(EX-2026-0604)目前在异常中心呈现,未在本页阻断生成。
- 列表无分页/排序控件(样例 12 条全量展示),真实实现按 §10 性能要求分页。
附录 A 行业对照与设计取舍(背景参考)
| 产品线 |
架构 |
中间层性质 |
| 金蝶账无忧 / 云会计(小微、代账) |
票据/单据 → 凭证模板 → 凭证(两层) |
无中间层 |
| 金蝶云·星空(大中型) |
业务单据 → 智能会计平台 / DAP → 业务凭证 → 总账凭证 |
"业务凭证"本质已是凭证(一单一张、便于修改与联查) |
| 本设计 |
业务事件 → 会计事项 → 凭证 |
事项是判断记录:可无分录(待补证/待裁定/不确认)、六要素防重、承载确认条件与证据 |
- 凭证模板模式解决"自动生成";事项模式解决"自动判断"(能不能记、记多少、证据够不够、重复没有)——这是本设计未照搬两层做法的原因。
- "以事项为核算最小单元"的提法与用友 BIP「事项会计」一致;银行核心、保险(IFRS 17)的"会计引擎 / 事件驱动会计"是该架构的成熟实践。
- 可借鉴之处:凭证模板可配置化(对应《会计规则目录》41 条)、按单/汇总两级生成(对应 N 事项→1 凭证的 N:M 关联)、业务单据双向联查(对应事项-凭证双向追溯)。
资料参考:金蝶云社区(vip.kingdee.com)、金蝶开发者中心(developer.kingdee.com)"智能会计平台 / 凭证模板 / 业务凭证"公开文档。
关联文档:《财务模块开发指南.md》(§2 角色矩阵 / §3 页面流转 / 30 分钟上手点击清单)·《会计事项目录.md》(事件契约)·《会计规则目录.md》(41 条规则)·《验收测试用例库.md》(154 条)。