出纳工具 v1.0→v1.5:29 条规则怎么长出来
出纳流水处理工具从 v1.0 到 v1.5,半年 5 个版本,29 条业务规则不是一次写出来的,是一笔笔错账喂出来的。
本节要点:29 条规则分 5 版长出来;每版跑 2 周实测发现错账再加规则;最大教训——v1.5 的 bug 根因是中间 Excel 丢字段。
半年 5 个版本
出纳流水处理工具的版本史:
| 版本 | 核心增量 | 规则数 |
|---|---|---|
| v1.0 | 10 家银行格式统一 + 基础凭证 | 5 |
| v1.1 | 凭证规则补 12 条(税款/理财/退回) | 17 |
| v1.2 | 9 项修复(结汇/内转/高速费/往来编码) | 20 |
| v1.3 | 差旅 31 部门 + 税款 8 编码 + 退回翻转 | 29 |
| v1.4 | 紧急修复(摘要合并) | 29 |
| v1.5 | 付款申请单 bug(字段丢失根因) | 29 |
29 条不是一次设计出来的,是每版跑 2 周实测,发现错账→定位→加规则,一笔笔喂出来的。
v1.0:地基是格式统一
第一版只做一件事:把 10 家银行导出的 Excel 统一成一张表。每家银行一个 parser(解析器),输出统一 schema(日期/金额/对方/摘要/余额)。
这一版没碰凭证规则——地基没打牢别盖楼。格式统一跑通 2 周,才进 v1.1。
v1.1→v1.3:规则怎么长出来
v1.1 加的规则(典型)
- 税款摘要 → 应交税费 8 个明细编码
- 理财产品名 → 提取到交易性金融资产
- 中国银行退回 → 借贷翻转(别家不翻)
v1.2 的 9 项修复
结汇、内转、高速费、往来单位编码、附单据数、宁波日报格式、摘要、费用说明——都是实测发现的小坑。
v1.3 的重头戏
- 差旅费 31 个部门精确映射——摘要里出现"差旅费+部门名",进对应部门费用科目。31 个部门,错一个进错科目。
- 税款 8 编码——增值税/个税/印花税等 8 个明细。
- 退回翻转——中国银行退回交易借贷方向与别家相反。
到 v1.3,29 条规则齐了,工具基本能用。
v1.4:紧急修复摘要
v1.3 投产后,出纳反馈"T+ 凭证摘要看着别扭"。原来是摘要用了工具生成的话术,跟原始银行摘要脱节。
v1.4 改成:摘要 = 支付方式 + 对方户名 + 银行原始摘要。保留银行原始信息,会计能对上。
教训:生成的凭证要保留原始痕迹,不要为了"好看"丢掉源头信息。
v1.5:最难找的 bug
v1.4 后出纳报:"有些付款申请单的凭证科目不对,Rule 11/13 全面误判。"
排查了一周,根因让人意外:中间 Excel 序列化时丢了「是供应商付款」字段。
数据流是:
工具处理 → 导出中间 Excel → 重新读入 → 生成凭证
中间 Excel 没有「是供应商付款」这列,重新读入时这个标记 = 默认值(false),导致 Rule 11/13 判断全部走错分支。
修复:把「是供应商付款」加到中间 Excel 输出列。一行代码的事,但找了 1 周。
最大教训:数据管道里字段丢失 = 下游默认值 = 全面错判。这个坑后来写进了经验沉淀库 §2.25。
方法论沉淀
5 个版本做下来,方法论:
- 每版跑 2 周实测——不实测不知道哪里错
- 错账加规则——每笔错账是一条新规则的来源
- 规则配置化——写 Excel 映射表,不写死代码(新增部门改 Excel)
- 保留原始痕迹——生成的凭证要能对回银行原始摘要
- 数据管道盯字段——中间环节丢字段 = 下游全错
实测数据(v1.5 最终)
| 指标 | 改造前 | v1.5 |
|---|---|---|
| 日报耗时 | 5 小时/天 | 15 分钟/天 |
| 月错账 | 8 笔 | 0-1 笔 |
| 凭证规则 | 在会计脑子里 | 29 条成文 |
| 单元测试 | 0 | 23 条全通过 |
给同行的建议
如果你也要做这类工具:
- 先做格式统一(v1.0 地基),别一上来写凭证规则
- 每版小步跑实测,别憋大招
- 错账是规则来源,建个"错账台账"记录每笔错怎么修
- 中间数据管道要审字段完整性,这是 v1.5 教的
- 规则配置化,别让新增部门/科目要改代码
工具不是"写完就完",是跟业务一起长的。
本节要点
- 29 条规则分 5 版长出来,不是一次设计
- 每版 2 周实测 + 错账加规则
- v1.5 最难 bug:中间 Excel 丢字段 → 下游默认值 → 全面错判
- 方法论:格式统一先行 / 错账台账 / 规则配置化 / 保留原始痕迹 / 盯字段完整性