聊聊我从手动审报销单到可视化工作流的一些折腾

14 阅读3分钟

公司财务小姐姐每个月月底都像打仗,对着几十张发票和报销单,一张张核对金额、看发票真伪、查预算够不够。有一次一个同事把一万多的团建餐费报到“办公用品”里,财务没注意就批了,月底复盘时才发现,场面非常尴尬。我就想能不能搞一个自动化的报销助手。

自己写脚本干了两个月。OCR识别发票——不同商家版式不一样,识别率忽高忽低;税务验真接口——白天根本调不动,限流太狠;预算数据——存在ERP里,接口权限申请了一周才拿到。最崩溃的是报销规则经常变:出差补贴从80涨到100,住宿标准分城市三档,每次改规则都要改代码、重新部署,有次改了一个变量名导致整个流程崩了,被财务骂了一顿。

后来研究Agent的时候,去看了Dify和Coze,它们做对话问答很顺手,但报销流程是一个“输入-校验-扣减-推送”的多步流程。而且财务数据必须在本地,不能上云。正愁着呢,在开源社区刷到一个项目,支持私有化部署,还有可视化工作流。节点化设计让我觉得有戏:OCR、HTTP、条件判断、数据库查询、算术运算、消息通知——全都能拖拽。

我花了一整天搭了一个财务报销助手。流程长这样:员工上传发票和填写信息 → OCR抽字段 → 调用税务接口验真 → 查询ERP预算余额 → 三个校验(真伪、预算、品类匹配) → 通过后扣预算、生成凭证 → 推送给财务主管 → 微信通知员工“报销已提交”。不通过的话直接告诉员工哪里不对,省得来回沟通。

有一次财务说“同一张发票号不能重复报销,你加个检测”。我加了一个缓存节点,每次验真通过后把发票号存到本地KV,下次进来先查,重复就拒绝。前后不到半小时,保存生效。以前改这种逻辑少说也得半天。

槽点也真实存在。画布里节点一多,连线密密麻麻,有次我把预算查询节点连到了验真节点后面,结果验真失败了还去查预算,浪费了一次API调用,测试时才揪出来。还有汇率换算这种场景——员工出差国外拿外币发票——工作流里需要调用实时汇率接口并做浮点运算,配置起来比写代码费劲。但大部分国内报销场景已经够用了。

这个助手跑了快两个月,财务说现在每天只需要复核异常单,正常单全自动,省了她一大半时间。老板问我花了多少人力,我说一天半,他以为我在开玩笑。我觉得可视化工作流特别适合那些“规则经常变、流程相对固定”的内部财务工具,不用每次改需求都从头部署。

最后问问大家:你们在做财务自动化、报销审核时遇到过哪些奇葩问题?比如员工上传模糊发票、假发票、或者预算冲突——评论区来交流一下。