财务模块 · 技术文档

财务模块开发指南 —— 业务-记账流程与数据流

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

财务模块开发指南 —— 业务-记账流程与数据流

怎么用这份文档:新开发直接跳 〇章「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. 勾稽红线(任何开发改动都不能破坏)

  1. 期初:借方合计 = 贷方合计(当前样例 726,240.50);
  2. 凭证汇总表合计 = 科目余额表本期发生额;
  3. 存货汇总表结存金额 = 1403 原材料余额;
  4. 固定资产原值合计 = 1601;月折旧合计 = 1602 本期发生额;
  5. 银行已入账流水合计 = 1002 明细账借贷发生;
  6. 试算平衡 = 0 是结账硬门槛;
  7. 已记账凭证不可删改(只可冲销);操作日志不可删。

六、四条端到端走查(直接拿这些数据当测试用例)

走查 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(高频疑问)

  1. 为什么"验收/签合同"不直接产生凭证? 业务变化 ≠ 会计确认。合同签署只建台账;收入在"满足确认条件(验收/履约)"时才形成会计事项。见需求文档 4.1。
  2. 为什么凭证要过"审核→入账"两道? 生成 ≠ 记账。审核是人工确认(AI 生成强制人工审、制单人不可自审),入账才写余额。账簿/报表只吃"已记账"。
  3. 发票管理 vs 票据池重复吗? 不重复:一张 bill_pool 两个视图——发票管理=全量档案(红冲/回款跟踪),票据池=待处理队列(未记账/审核中/待定性/待补证)。见需求文档 11.1。
  4. 事项和凭证为什么 N:M? 支持汇总凭证(记-0046 一张凭证汇总 2 张费用票)与多事项一凭证;同时红字冲销是独立凭证关联原凭证。防重靠事项唯一键(六要素),不靠凭证。
  5. 数字对不上先查哪里? 固定排查顺序:试算平衡(结账页)→ 凭证汇总表 = 科目余额表发生额(账簿页)→ 明细账逐笔 → 源头单据(凭证"来源"列反查)。
  6. 反记账和冲销怎么选? 未报税期间改错 → 反记账回退修改;已入账的正式纠错 → 冲销(红字凭证,留审计链);已报税/已结账 → 先反结账。
  7. AI 在哪些环节出现? 仅三处:票据模板推荐(低置信转人工)、凭证 AI 标记(强制人工审核)、异常解释建议。AI 不碰过账/规则/裁定。
  8. 新客户数据从哪进? 建账向导(科目余额表七步导入);无账客户走三表兜底;历史凭证只读(LEGACY 标记)。见《账套迁移建账需求文档.md》。

附:配套文档索引

想了解 看这个
业务需求与验收标准 《业财一体化财务核算需求文档.md》
技术实现(架构/DDL/API/伪代码) 《自动记账技术方案.md(V3)》
41 条规则明细 《会计规则目录.md》
开发排期与任务包 《自动记账任务清单.md》
页面完整度与补全优先级 《页面原型完整度清单.md》
建账迁移细节 《账套迁移建账需求文档.md》
发票分流关键词库 《发票管理.md》
会计概念速查 《术语表.md》
干活的时候 起本地服务打开原型(41 页可点,交互即答案)