财务对账工作台:把资金对账从 Excel 手工核对做成可审计的智能系统

Y2Ksoft 实战笔记 97 · 2026-10-18 · 金融财税 / 资金对账 / Node.js / SQLite / 资金安全 · 阅读约 13 分钟
这不是一个把 Excel 表格搬到浏览器里的“表格系统”。财务对账的核心不是界面,而是金额不出错、单据不重复核销、差异能找到证据、每一步都能审计。这篇文章完整复盘:我们如何从用户给的财务工作台模板出发,保留原来的九项业务导航,再把它做成 Node.js + SQLite 的完整前后端系统。
10
业务页面+系统内手册
20
演示银行流水
7/7
自动化测试通过
32/32
资金安全审计通过
0
第三方运行时依赖

一、为什么“能对账”不等于“敢管钱”

市面上很多所谓对账工具,本质上是两份 Excel 的 VLOOKUP:按金额、日期或流水号查到一条记录,然后标个“已匹配”。演示时没问题,真正放到资金环境里,马上会遇到另一类问题。

所以这次开发的第一原则不是“功能多”,而是钱的计算和状态变化必须可证明。界面可以漂亮,但资金事实必须由数据库事务、唯一约束、审计链和权限系统守住。

财务软件的智能,不是替人拍板,而是更快找到候选、更早发现异常、更完整保留证据;最终核销仍由有权限的人确认。

二、先把原模板的九项导航做实

用户给出的原模板是:工作台、对账中心、回款管理、应收应付、发票管理、费用报销、资金报表、预警中心、系统设置。这不是九个菜单名,而是一条资金业务链:

工作台→回款管理→对账中心→差异处理→费用报销→资金报表→预警中心

我们没有为了“功能更多”另起一套导航,而是把银行流水放到“回款管理”的完整流水入口,把审批明细放到“费用报销”的审批中心入口,把智能分析放到“资金报表/预警中心”。最后新增“使用手册”,让客户不用去 F 盘翻文档,在系统侧栏就能直接看操作流程、角色权限、截图和 PDF。

🏠
工作台
今日回款、待对账、应收、异常数据、趋势和待办。
🔁
对账中心
候选扫描、评分证据、人工匹配、批量核销和差异处理。
💸
回款管理
客户回款、收款单、银行流水、催收和核销状态。
🧾
发票管理
发票、到期日、回款进度、逾期和账龄。
📝
费用报销
申请、审批、驳回、金额和审计留痕。
📊
资金报表
现金流、资金趋势、经营指标和智能分析入口。

三、完整架构:不是一个 HTML 加 localStorage

浏览器 SPA原生 HTML/CSS/JS、API Client、响应式页面
Node.js 24认证、CSRF、角色权限、幂等和业务路由
SQLiteWAL、事务、外键、唯一索引和审计记录
HMAC 审计服务端密钥保护的前向哈希链
层级关键实现
前端原模板信息架构、威盾深海蓝青背景、呼吸灯、风险警示灯、紧凑字体层级
认证scrypt 加盐密码、HttpOnly Cookie、SameSite=Strict、CSRF Token、登录失败锁定
权限管理员、财务主管、会计、审计员、只读角色
资金写入整数分、BEGIN IMMEDIATE 事务、双向匹配、唯一索引、幂等键
智能能力确定性候选评分、重复付款、金额差异、周末交易、13 周现金流、客户信用风险
审计操作人、实体、前后值、IP、请求 ID、HMAC 前向哈希链

四、对账引擎怎么评分

候选匹配不是“金额一样就确认”。系统把金额、方向、日期和对手方拆成可解释的分项分数,只要存在硬冲突就不进入自动候选。当前评分结构如下:

金额关系
45
日期距离
20
对手方
20
收支方向
15

金额完全一致得满分;配置容差内仍然可匹配;小额差异会标记为“疑似手续费或净额结算”,但不能因此悄悄确认。日期超出容差、对手方明显不一致,都会降级为人工复核或直接排除。

规则处理方式
金额、方向、对手方、日期均强一致高置信度候选,可进入批量确认
金额差在容差内生成候选,展示差异证据
疑似手续费净额保留风险提示,必须人工核销
同对手方同额短时重复支出进入重复付款预警
自动确认阈值默认 0;只有功能上明确开启并配置阈值才可能自动核销

五、真正守住资金的六条硬约束

01 · 金额只用整数分

12.34 存 1234 分,12.345 直接拒绝,不做静默四舍五入。

02 · 单据只能核销一次

数据库唯一索引+事务二次校验,同一业务单据不能绑定两笔银行流水。

03 · 双向状态一致

银行流水标 matched,业务单据也必须 matched,双方匹配 ID 互相指向。

04 · 重试不重复写钱

资金写接口支持幂等键,相同请求返回第一次结果,不产生第二笔核销。

05 · 批次失败整体回滚

批量核销里任何一组金额、方向或状态异常,整批事务回滚。

06 · 审计链不可悄悄改

审计记录使用服务端 HMAC 链,修改历史内容会导致完整性复算失败。

此外,会话使用 HttpOnly + SameSite=Strict Cookie,所有写请求校验 CSRF;角色权限在服务端执行,不是前端把按钮隐藏一下。生产模式如果仍使用默认账号密码,服务会直接拒绝启动。

六、智能模块:把“聪明”放在可解释的地方

🔍
候选证据
不是只给一个百分比,而是拆开显示金额差、日期差、对手方相似度和方向。
🚨
重复付款
同对手方、同金额、72 小时内支出自动分组,红灯提示人工核查。
🌊
13 周现金流
按应收到期和待付业务单据预测周流入、流出与累计净现金流。
🏦
客户信用风险
把逾期金额、最大账龄与应收集中度合成风险分。
📅
非工作日交易
周末银行收付作为审计关注线索,不改变原始匹配事实。
🔢
异常金额
大额、整万元、频繁同额等规则形成分层预警。

这里刻意没有把最终核销交给 AI。规则引擎负责“找候选、找异常、找证据”,人负责“确认事实”。这条边界,比所谓全自动更接近真实财务环境。

七、UI 不是另起炉灶,而是在原模板上收敛

这次界面经历过一次明显调整:最初我们把它做成了另一套暗色玻璃工作台,后来按用户反馈重新回到原模板的信息结构。现在保留的是:

财务人员每天要盯很多数字。字号不能小到看流泪,也不能大到一屏只剩两个 KPI。最终目标是协调:左侧不抢主内容,表格能快速扫读,风险灯只在需要人动手时亮。

八、系统实拍

01 · 登录页:服务端会话与权限入口

登录成功后使用 HttpOnly 会话;管理员、财务主管、审计员拥有不同操作权限。
财务对账工作台登录页

02 · 工作台:原来的结构,真实的数据

KPI、回款趋势、对账进度、应收应付、发票、流水、待办、审批、预警和操作记录全部由数据库驱动。
财务对账工作台首页

03 · 对账中心:候选、证据与批量核销

扫描只生成候选;勾选高置信度后仍需人工确认。重复核销会被数据库和后端同时拒绝。
对账中心

04 · 回款管理:银行流水进入业务链

回款流水可筛选、核销、创建收款单,并可进入完整银行流水页。
回款管理

05 · 发票管理:到期、回款和逾期风险

发票台账同时服务应收跟踪、账龄分析和催收。
发票管理

06 · 费用报销:审批状态和金额留痕

报销申请、通过、驳回和审计记录形成完整流程。
费用报销

07 · 智能分析:现金流和风险一屏

13 周现金流预测、重复付款、客户信用风险、规则命中全部来自后端计算。
智能分析

08 · 系统内使用手册:客户不用翻硬盘

侧栏直接进入使用手册,包含模块入口、标准流程、角色权限、关键截图、安全红线和 PDF 下载。
系统内使用手册

九、测试和资金安全审计

这个项目不是“打开页面能点”就交付。后端测试覆盖认证、CSRF、幂等、重复核销、金额精度、审批、催收、备份恢复和角色越权。

7/7
接口与资金安全测试
32/32
代码和数据库审计
0
失败检查项
HMAC
审计链密钥保护

十、上线边界与下一步

当前版本是完整的前后端私有化交付版,适合单组织财务团队试用和二次部署。它已经解决了资金精度、重复核销、权限、审计、备份和基础智能分析,但不应该被描述成“永不犯错的财务系统”。

这次从模板出发,最终交付的不只是一个更漂亮的页面,而是一套能把“候选—证据—人工确认—资金事实—审计链”串起来的系统。对财务软件来说,少一点盲目的自动化,多一点可证明,才是真正的好用。

项目源码保存在 Y2Ksoft 本地交付目录,系统内置完整使用手册。
上一篇:家装建材卫浴售后服务管理系统 | 博客首页:www.y2ksoft.cn/blog/