财务模块开发指南 —— 业务-记账流程与数据流
怎么用这份文档:新开发直接跳 〇章「30 分钟上手」(含原型点击清单,跑一遍最快);后续按 第一章(总览图)→ 第五章(数据影响链)→ 第六章(走查)深入;开发具体页面时查第三、四、七章,术语不懂查《术语表.md》。
配套:需求见《业财一体化财务核算需求文档.md》、技术实现见《自动记账技术方案.md V3》、规则明细见《会计规则目录.md》、页面评级见《页面原型完整度清单.md》;41 个可交互原型(本地起 HTTP 服务即可点,是活的交互文档)。
日期:2026-10-09
〇、30 分钟上手(新开发从这里开始)
四步剧本:
| 步骤 |
时长 |
做什么 |
| ① 读总览 |
5 分钟 |
《项目说明.md》:双模式 + 管道图(本指南第一章同源) |
| ② 跑原型(最快) |
15 分钟 |
按下方点击清单亲手走一遍全链——交互即答案 |
| ③ 看骨架 |
10 分钟 |
本指南第一章(管道图)+ 第五章(数据影响链) |
| ④ 随时查 |
— |
《术语表.md》(会计概念字典)+ 本指南第八章 FAQ |
启动方式:本地 python3 -m http.server 8731 后开 http://127.0.0.1:8731/财务模块/;或用线上最新快照 https://yx.endatai.cn/latest/财务模块/。
原型点击清单(12 步,每步 1 分钟)
| # |
打开 |
操作 |
学到什么 |
| 1 |
finance-dashboard.html |
看"业财核算"指标区 → 点"进入事项工作台" |
全局 KPI:事件 128 / 待复核 1 / 差异 60,880 |
| 2 |
accounting-events.html |
筛选"待复核" → 打开 AE-0611-011(或直接打开 AE-0630-001 看已生成凭证) |
确认条件逐条 ✓✗、金额分层(确认 100,000/已结算 30,000)、状态→按钮联动 |
| 3 |
accounting-event-detail.html?id=AE-0605-004 |
读四个裁定候选(现销/预收/冲应收/往来) |
"未匹配收款禁止默认认收入"的落地 |
| 4 |
accounting-bills.html |
销项票页签看 FP0061"待补证" → 点徽章 → "补充证据" |
证据中心的冻结态与补证回流 |
| 5 |
accounting.html |
记-0048(AI·待审核)→ 审核(选王五)→ 入账 |
凭证状态机;不可自审;入账后按钮变冲销 |
| 6 |
accounting.html |
记-0007 点"冲销" |
红字凭证 记-0049(借贷反向、关联原凭证) |
| 7 |
accounting-books.html |
明细账选"1002 银行存款" → 点凭证号 |
账证互查:账簿→凭证 |
| 8 |
accounting-recon.html |
"合同履约↔收入"页签 → 点"生成事项" |
差异 32,400 → 0.00 的闭环 |
| 9 |
accounting-close.html |
读 8 项检查(5 阻断+3 警告)→ 一键结账 → 反结账 |
结转损益系统强制生成 记-0038;锁期 |
| 10 |
accounting-rules.html |
REVENUE_SERVICE_V2 → 试运行 → 版本历史 |
规则不入账试运行;v1→v2 预收冲抵 diff |
| 11 |
accounting-exceptions.html |
打开 EX-2026-0601 → 读建议动作 → 关闭(填理由) |
异常处置与留痕 |
| 12 |
finance-config.html → accounting-settings.html |
会计政策页签 → 操作日志 |
规则引擎读的口径;刚才 11 步的动作全有日志 |
跑完这 12 步,你已亲手经历了:业务/票据 → 事项裁定 → 凭证审核入账 → 账簿 → 对账 → 结账 全部环节,且每一步的按钮背后就是你要开发的业务逻辑。
一、一页纸总览:业务发生 → 报表
flowchart LR
subgraph S1["① 业务发生(业务经办)"]
A1["合同履约确认"]
A2["采购验收入库"]
A3["报销审批通过"]
A4["收/付款到账"]
A5["出库 / 薪资批次 / 资产投用"]
end
subgraph S2["② 票据与证据(财务)"]
B["票据池·证据中心<br/>发票 / 流水 / 费用票"]
end
subgraph S3["③ 会计确认(财务复核岗)"]
C["会计事项中心<br/>确认·计量·防重"]
D["规则引擎<br/>41 条规则"]
end
subgraph S4["④ 凭证与账簿(财务复核岗)"]
E["待审核凭证"] --> F["已审核"] --> G["已记账(入账)"]
end
S5["⑤ 账簿·报表·对账·结账"]
A1 --> C
A2 --> C
A3 --> C
A4 --> C
A5 --> C
B -->|候选事项| C
C --> D --> E
G --> S5
G -. "状态回写" .-> B
G -. "状态回写" .-> C
五个阶段的职责一句话(对应侧边栏 ①~⑦ 分组):
| 阶段(侧边栏) |
谁操作 |
做什么 |
产物 |
| ① 业务台账 |
业务经办 |
产生业务事实(合同/验收/报销/收付款…)——不产生会计影响 |
业务单据 |
| ② 票据与资金 |
财务(或自动采集) |
导入流水与发票、银行对账、核销——票据/流水是证据与候选事项来源 |
票据池记录(未记账) |
| ③ 会计确认 |
财务复核岗 |
事项复核、异常裁定、补证、规则维护——确认条件满足才产生会计影响 |
会计事项(七态) |
| ④ 凭证与账簿 |
财务复核岗 |
凭证审核(不可自审)→ 入账——最后一道人工闸门 |
已记账凭证 |
| ⑤ 对账与结账 |
财务负责人 |
业财对账勾稽 → 期末结账(分级拦截)→ 锁期出正式报表 |
锁定的期间 + 正式报表 |
| ⑥⑦ 资产库存/基础配置 |
财务 |
固定资产、库存、科目、政策、规则等支撑 |
主数据 |
一条红线:只有"已记账"凭证参与科目余额汇总——账簿、报表永远从已记账凭证取数。业务审批 ≠ 会计确认 ≠ 入账,三道关各自独立。
双模式(重要):系统同时兼容「业财一体」(模式 A,默认——业务模块发事件驱动记账)与「纯记账」(模式 B——只用本系统做账:建账 → 导入票据/流水 → 自动生成 → 复核 → 账簿报表)。两模式同一引擎、同一数据模型:差别仅在输入源(B 无业务事件,票据推断直达)、UI 启用范围(B 隐藏①业务台账组、对账裁剪为两组)与事项层的透明化(B 下事项由引擎自动创建,用户只做"导入 + 复核"两件事)。模式可升降级、数据无损。开发时注意:菜单渲染与对账组按账套 run_mode 动态裁剪。
二、角色权限矩阵(谁能操作什么)
| 角色 |
系统角色 |
能干什么 |
不能干什么(硬约束) |
| 业务经办 |
业务模块用户 |
建合同/提交验收/发起报销/发起收付款申请;查看自己单据的记账状态 |
不产生任何会计影响;看不到凭证编辑 |
| 财务复核岗(记账岗) |
记账员 |
① 票据池:指定模板(选择已有,一次性)、按单/汇总生成凭证(模板治理在规则中心) ② 事项工作台:复核事项、裁定、补证 ③ 记账管理:审核凭证、入账、冲销、手动记账、复制、凭证号整理 ④ 异常中心:处理/关闭异常(理由必填)⑤ 账簿查询 |
不能审核自己制单的凭证;不能跳过审核直接入账;不能删除已入账凭证(只能冲销);不能手工录结转损益 |
| 财务负责人 |
主管 |
① 会计政策变更 ② 结账"警告项"例外审批 ③ 反结账(授权+留痕)④ 大额凭证审批(>50 万复杂流程)⑤ 反核销审批 |
所有高风险动作留痕、需二次授权 |
| 规则管理员 |
规则配置 |
规则新建/编辑/试运行/发布/停用 |
规则发布与凭证复核职责分离;版本不可覆盖;不能直接过账 |
| AI |
服务 |
推荐模板、解释依据、给出置信度 |
不能直接过账、不能改规则、不能裁定(只输出建议) |
三、页面流转规则(从哪来 → 做什么 → 去哪)
规则:所有跳转都是"从队列到处理页,从数据到源单据"——任何一行数据都能反向追到源头。
阶段② 票据与资金
| 页面 |
入口(从哪来) |
页面动作 |
去向 |
| 发票管理 |
菜单;采购/报销要求补票 |
查票/红冲作废/查看详情 |
未记账徽章 → 票据池;已记账徽章 → 记账管理 |
| 流水管理 |
菜单;银行导入 |
查流水/匹配发票 |
流水号 → 票据池对应行 |
| 票据池(证据中心) |
菜单;发票/流水页回写 |
指定模板(选择已有)/按单/汇总生成凭证;模板新建/治理 → 规则中心 |
生成 → 记账管理(待审核);待定性 → 异常中心;票据号 → 发票/流水/报销页 |
| 核销中心 |
菜单;收/付款页 |
核销/反核销审批/拆分核销 |
关联事项 → 事项详情 |
阶段③ 会计确认
| 页面 |
入口 |
页面动作 |
去向 |
| 事项工作台 |
菜单;仪表盘 |
筛选/复核/批量复核 |
复核 → 生成凭证 → 记账管理;KPI"异常" → 异常中心;"差异额" → 业财对账 |
| 事项详情 |
工作台/异常中心/凭证来源列 |
生成凭证 / 裁定(四候选)/ 补证 / 驳回 |
生成凭证 → 记账管理 |
| 异常中心 |
菜单;票据池"待定性"徽章 |
分派/建议动作/关闭(理由必填)/升级 |
关联事项 → 事项详情;缺规则 → 规则中心 |
| 规则中心 |
菜单;异常中心 |
编辑/试运行/发布/版本对比 |
台账规则 → 台账中心 |
阶段④⑤ 凭证·账簿·结账
| 页面 |
入口 |
页面动作 |
去向 |
| 记账管理(凭证中心) |
菜单;事项/票据池/结账生成后自动入列 |
审核→入账/反审核/反记账/冲销/删除(回收站)/手动记账/复制/凭证号整理 |
"来源"列 → 事项详情/票据池/结账页/流水;"对应单据" → 源单据 |
| 账簿查询 |
菜单 |
总账/明细账/凭证汇总表/科目余额表/核算项目余额表 |
明细账凭证号 → 记账管理(账证互查) |
| 期末结账 |
菜单;业财对账"前往结账" |
8 项检查→一键结账→锁定/反结账 |
结转凭证号 → 记账管理 |
| 业财对账 |
菜单;事项工作台"差异额" |
四组对账/差异行闭环 |
差异行 → 生成事项/前往裁定/查看异常/生成核销 |
| 财务报表 |
菜单;仪表盘 |
标准三表+纳税+管理口径报表 |
未结账角标提示去期末结账 |
四、数据实体与存放地(数据在哪)
| 数据实体 |
落库(技术方案 DDL) |
产生于 |
展示于 |
备注 |
| 业务单据(合同/验收/报销/收付款单) |
业务模块自有表 |
业务台账页 |
各业务页 |
事件源;不是会计数据 |
| 票据池记录 |
bill_pool(UNIQUE: source_type+source_id 去重) |
发票/流水/报销导入 |
票据池、发票管理(记账状态列) |
一表两视图:发票管理=档案,票据池=队列 |
| 标准事件 |
business_event + outbox_event |
业务模块同事务发出 |
无 UI(后台) |
Inbox 幂等 |
| 会计事项 |
accounting_event(六要素唯一键) |
事项中心 |
事项工作台/详情、凭证"来源"列、业财对账 |
防重与追溯的枢纽 |
| 事项-证据关联 |
accounting_event_evidence |
匹配引擎 |
事项详情"证据"区 |
发票/流水/验收 N:M |
| 会计规则 |
accounting_rule(版本不可覆盖) |
规则中心 |
规则中心;引擎消费 |
41 条见《会计规则目录.md》 |
| 凭证 |
voucher + voucher_entry |
事项/票据池/结账/手工 |
记账管理、账簿 |
status ∈ 待审核/已审核/已记账/已报税 |
| 事项-凭证关联 |
accounting_event_voucher(N:M) |
生成时写入 |
凭证"来源"列、事项详情 |
汇总凭证=多事项一凭证 |
| 科目/期初 |
subject / opening_balance |
建账向导/科目档案/初始余额 |
科目档案、账簿、报表 |
期初修改须反结账 |
| 期间结账 |
period_close |
期末结账 |
期末结账"结账记录" |
锁期状态全系统校验 |
| 核销 |
settlement_allocation |
核销中心 |
核销中心、应收回款对账 |
一笔到账可拆多笔应收 |
| 异常 |
accounting_exception |
引擎/人工 |
异常中心 |
关闭理由留痕 |
| 操作日志 |
op_log |
全系统敏感动作 |
核算设置"操作日志"、审计日志中心 |
不可删改 |
五、数据影响链(改一处,波及哪里)★核心章节
A. 正向链(业务 → 报表,每步的落点)
flowchart TD
ENT["业务事件<br/>(履约/验收/报销…)"] --> AE["会计事项<br/>状态:待复核"]
AE -->|"复核通过"| V1["凭证<br/>待审核"]
V1 -->|"审核(不可自审)"| V2["凭证<br/>已审核"]
V2 -->|"入账"| V3["凭证<br/>已记账"]
V3 --> L1["① 科目余额增量"]
V3 --> L2["② 账簿 / 明细账 / 余额表"]
V3 --> L3["③ 报表取数(三表)"]
V3 --> W1["④ 事项 → 已入账"]
V3 --> W2["⑤ 票据/流水/报销 回写:已记账 + 凭证号"]
V3 --> W3["⑥ 辅助台账:存货结存 / 资产净值 / 辅助核算余额"]
每条影响的验收口径(改完必须回头验):
| 入账后联动 |
验收口径 |
| 科目余额 |
凭证汇总表合计 = 科目余额表"本期发生额" |
| 账簿 |
明细账逐笔 = 凭证分录,余额连续 |
| 报表 |
资产负债表平衡(资产=负债+权益);利润表=损益类发生额 |
| 事项回写 |
事项状态=已入账,凭证号可反查 |
| 票据回写 |
票据池/发票/流水/报销 显示"已记账 + 记-XXXX" |
| 辅助台账 |
存货结存金额=1403 余额;资产原值=1601、月折旧=1602 发生额 |
B. 逆向链(纠错必须按顺序)
已入账 → 反记账 → 已审核 → 反审核 → 待审核 → 删除(回收站30天)
已报税/已结账期间:先【反结账】解锁 → 再走上面的逆向
已入账凭证的正确纠错方式 = 【冲销】(红字凭证,借贷反向、关联原凭证),不是删除
每次逆向动作 = 上面 A 表全部联动同步回退(余额、账簿、报表、回写状态)。
C. 支线影响(特定业务的数据连锁)
| 源操作 |
立即影响 |
下游影响 |
| 库存出库单审核 |
成本凭证(借6401/贷1403) |
存货结存↓、利润表成本↑、资产负债表存货↓ |
| 期末计提折旧(记-0036) |
借660202/贷1602 |
资产卡片净值↓、资产负债表累计折旧↑ |
| 薪资批次确认 → 发放 |
计提凭证(2211↑)→ 发放凭证(2211↓ + 代扣2221/2241) |
资产负债表应付职工薪酬归零、个税挂2221 |
| 缴纳社保公积金 |
借2211/2241 / 贷1002 |
2211 单位部分与 2241 个人代扣同步减少 |
| 期初余额修改 |
科目余额表期初 |
资产负债表年初数(前提:反结账) |
| 规则发布新版本 |
之后生成的凭证用新版本 |
历史凭证保留旧版本快照,不追溯 |
| 会计政策变更 |
现行规则读取新口径 |
历史不追溯,生效区间按期间 |
| 冲销 |
红字凭证入队待审核 |
审核入账后 A 表全部对冲 |
D. 勾稽红线(任何开发改动都不能破坏)
- 期初:借方合计 = 贷方合计(当前样例 726,240.50);
- 凭证汇总表合计 = 科目余额表本期发生额;
- 存货汇总表结存金额 = 1403 原材料余额;
- 固定资产原值合计 = 1601;月折旧合计 = 1602 本期发生额;
- 银行已入账流水合计 = 1002 明细账借贷发生;
- 试算平衡 = 0 是结账硬门槛;
- 已记账凭证不可删改(只可冲销);操作日志不可删。
六、四条端到端走查(直接拿这些数据当测试用例)
走查 1|销售闭环(主路径,事件驱动)
① 合同模块:合同 HT2026-001 签署(不发会计事项)
② 预收:流水/收款单到账 30,000 → 事项 AE-0520-007(预收)→ 凭证:借1002 / 贷2203合同负债
③ 履约:验收单确认 → 事项 AE-0630-001(收入确认·待复核)
└ 事项详情复核 → 生成凭证 记-0048:借1122应收70,000 + 借2203合同负债30,000 / 贷6001收入100,000
④ 记账管理:审核(王五,不可自审)→ 入账 → ①应收辅助余额+70,000 ②合同负债-30,000 ③利润表收入+100,000
⑤ 开票:发票管理开票 → 只做税额处理(贷2221),【不重复确认收入】
⑥ 回款:流水 70,000 到账 → 事项(应收回款)→ 凭证:借1002 / 贷1122 → 核销中心冲应收
走查 2|采购闭环(验收在前、发票在后、付款第三)
① 验收入库 RK-2026-06-001 → 事项 AE-0628-002 → 记-0018:借1403 / 贷2202(30,000)
② 发票 FP0063 到达 → 匹配:价税 30,000 vs 验收 29,520 差 480 → 异常 EX-2026-0605(调差,不重复确认成本)
③ 付款 55,000(合并此前应付)→ 记-0015:借2202 / 贷1002 → 应付余额 96,750+30,000-55,000=71,750
走查 3|票据兜底(无业务数据客户)
① 导入销项发票 FP0061(47,000)→ 票据池【待补证】(缺履约证据)
② 补证(验收/交付)→ 事项转"待复核" → 复核 → 凭证:借1122 47,000 / 贷6001 45,720 + 贷2221 1,280
③ 未匹配流水 28,000 → 异常中心【待定性】→ 事项详情人工裁定四候选(现销/预收/冲应收/往来)→ 生成对应凭证
走查 4|月末结账
① 事项工作台清"待复核/待补证" → 异常中心清异常 → 业财对账差异归零
② 期末结账:8 项检查(5 阻断+3 警告可例外审批)→ 一键结账
└ 自动生成:记-0030 计提工资(借660201/贷2211)、记-0036 计提折旧(借660202/贷1602)、
记-0038 结转损益(系统强制:收入103,000 轧入本年利润,净利 6,500)
③ 试算平衡 → 期间锁定 → 报表去"未结账"角标出正式口径 → 结账记录留痕
④ 如需调整:反结账(授权留痕)→ 改期初/反审核 → 重新结账
七、页面速查表(41 页:开发时的定位索引)
| 阶段 |
页面 |
数据进 |
数据出 |
评级 |
| 首页 |
财务仪表盘 / 财务待办 |
聚合指标 |
三中心入口 |
B/C |
| ① |
应收/应付/收款/付款/预收预付/费用/报销/借款/保证金/薪资/社保/税费/预算/财务结算 |
业务单据 |
业务事件 |
B(收付款/报销/薪资含记账状态列) |
| ② |
发票管理 / 发票风险 / 流水管理 / 核销中心 / 票据池 |
导入/采集 |
候选事项、核销分配 |
票据池 A,其余 B |
| ③ |
事项工作台 / 事项详情 / 异常中心 / 规则中心 |
业务事件、候选人 |
待审核凭证 |
全 A |
| ④ |
记账管理 / 账簿查询 / 财务报表 |
待审核凭证 |
科目余额、账簿、报表 |
全 A |
| ⑤ |
业财对账 / 期末结账 / 检测报告 |
业务↔账面口径 |
锁定期、正式报表 |
对账/结账 A,检测 B |
| ⑥ |
固定资产 / 库存管理 |
资产卡片/出入库 |
折旧凭证、成本凭证 |
A |
| ⑦ |
建账向导 / 科目档案 / 初始余额 / 财务配置 / 核算设置 / 审计日志 |
迁移数据/配置 |
主数据、政策、日志 |
A(审计日志 B) |
(评级口径见《页面原型完整度清单.md》;A 级 17 页就是开发 1:1 实现的验收基准。)
八、开发 FAQ(高频疑问)
- 为什么"验收/签合同"不直接产生凭证? 业务变化 ≠ 会计确认。合同签署只建台账;收入在"满足确认条件(验收/履约)"时才形成会计事项。见需求文档 4.1。
- 为什么凭证要过"审核→入账"两道? 生成 ≠ 记账。审核是人工确认(AI 生成强制人工审、制单人不可自审),入账才写余额。账簿/报表只吃"已记账"。
- 发票管理 vs 票据池重复吗? 不重复:一张
bill_pool 两个视图——发票管理=全量档案(红冲/回款跟踪),票据池=待处理队列(未记账/审核中/待定性/待补证)。见需求文档 11.1。
- 事项和凭证为什么 N:M? 支持汇总凭证(记-0046 一张凭证汇总 2 张费用票)与多事项一凭证;同时红字冲销是独立凭证关联原凭证。防重靠事项唯一键(六要素),不靠凭证。
- 数字对不上先查哪里? 固定排查顺序:试算平衡(结账页)→ 凭证汇总表 = 科目余额表发生额(账簿页)→ 明细账逐笔 → 源头单据(凭证"来源"列反查)。
- 反记账和冲销怎么选? 未报税期间改错 → 反记账回退修改;已入账的正式纠错 → 冲销(红字凭证,留审计链);已报税/已结账 → 先反结账。
- AI 在哪些环节出现? 仅三处:票据模板推荐(低置信转人工)、凭证 AI 标记(强制人工审核)、异常解释建议。AI 不碰过账/规则/裁定。
- 新客户数据从哪进? 建账向导(科目余额表七步导入);无账客户走三表兜底;历史凭证只读(LEGACY 标记)。见《账套迁移建账需求文档.md》。
附:配套文档索引
| 想了解 |
看这个 |
| 业务需求与验收标准 |
《业财一体化财务核算需求文档.md》 |
| 技术实现(架构/DDL/API/伪代码) |
《自动记账技术方案.md(V3)》 |
| 41 条规则明细 |
《会计规则目录.md》 |
| 开发排期与任务包 |
《自动记账任务清单.md》 |
| 页面完整度与补全优先级 |
《页面原型完整度清单.md》 |
| 建账迁移细节 |
《账套迁移建账需求文档.md》 |
| 发票分流关键词库 |
《发票管理.md》 |
| 会计概念速查 |
《术语表.md》 |
| 干活的时候 |
起本地服务打开原型(41 页可点,交互即答案) |