news 2026/8/28 18:15:09

合同管理系统从纸质合同到 AI 审查:一家制造企业合同系统演进的技术复盘

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
合同管理系统从纸质合同到 AI 审查:一家制造企业合同系统演进的技术复盘

长三角一家汽车零部件制造商,年产值约 6 亿,供应商 400+。三年前合同全靠纸质 + 微信传输,3 名法务 + 1 名合同管理员,全年处理约 1500 份合同。本文不讲故事,复盘它旧架构 → 新架构的演进路径、关键模块与踩坑,重点回答"审批效率提升 80%"是怎么在工程上堆出来的。


一、旧架构:人肉状态机

旧模式没有任何系统,合同状态靠人脑维护:

[纸质起草] → [微信传阅] → [线下签字] → [抽屉归档] │ │ │ └─ 卡在谁手里? 无人知道 ────┘

问题量化:平均流转 9.5 天,法务 60% 时间花在催签、找版本、对齐条款;一年因"忘了质保金回收节点"损失约 80 万。状态不可见、版本不唯一、节点不预警——典型的"无状态机"系统。


二、新架构:分层 + OCR 入库 + 审批流引擎

旧架构 新架构 ──────────────── ──────────────────────────────── 纸质/微信 对象存储(MinIO) + 事务库(Postgres) 人工状态 Activiti/Flowable 状态机 人工催办 BullMQ 延时任务(超时提醒) 人工记忆Excel obligations 表 + 定时扫描预警 无审查 Ollama 自托管 (Review/Redline Agent)

阶段一:模板标准化(第 1 月)

把 12 类高频采购合同做成模板库,变量自动填充。关键是用模板引擎而非自由文本:

# 采购合同模板变量定义(TipTap + 模板引擎)template:purchase_ordervariables:-supplier_name:string-amount_cents:int-payment_term_days:int# 账期-warranty_rate:float# 质保金比例-delivery_date:date

起草时长从 3 小时降到 25 分钟——本质是"填空"替代"从零写"。

阶段二:审批流上线(第 2 月)

可视化流程配置多级审批 + 超时提醒,串行并行混合。用状态机描述:

// 审批状态机(串行+并行混合)constapprovalFlow={nodes:['LEGAL','FINANCE','VP'],parallel:[['LEGAL','FINANCE']],// 法务与财务并行then:'VP',// 汇合后副总批timeoutHours:48,};// 超时由 BullMQ 延时任务推送催办

纸质 9.5 天 → 线上平均 4 天。

阶段三:AI 审查接入(第 3 月)

引入 Redline + Review 代理(参考 draft-legal 思路,自托管 Ollama),人工只复核高风险项。之所以选自托管而非公有云 API,是出于图纸与报价的私密性——合同技术附件含核心工艺参数,不能出服务器。aakd 的自托管方案契合这点,对制造业是底线而非加分项。


三、OCR 入库流水线

纸质合同先过 OCR 入库。普通解析把表格行列揉成一团,金额日期错行,义务提取准确率仅 71%。换成带版面分析的解析器(保留坐标 + 表格结构)后升到 94%。

PDF/扫描件 │ OCR(版面分析, 保留坐标+表格) ▼ 版面 JSON(blocks + bbox) │ 条款分块(按"第X条"切) ▼ clauses 表(embedding + meta_json) │ 义务提取 Agent ▼ obligations 表 → BullMQ 预警

四、80% 是怎么算出来的

口径定义:从合同提交到最终签署完成的时间。

阶段平均耗时说明
改造前9.5天纸质跑签+人工催办
模板+审批流后4.0天流转在线化
接入AI审查后1.9天人工只复核高风险

(9.5 − 1.9) / 9.5 ≈ 80%。不是魔法,是流程 + AI 把无效等待挤掉。法务月审合同量从 120 份升到 540 份,没加人头。


五、落地结果与踩坑

  • 质保金回收遗漏归零,首年追回约 75 万;
  • 供应商资质在起草时自动校验,拦下 2 家异常名录企业;
  • 合同数据第一次成"资产"——管理层随时看供应商风险分布。

踩坑:① Ollama 首次加载 32B 模型冷启动慢(首份 ~30s),用常驻进程 + 预热请求解决;② 模板变量类型没校验,早期有人填payment_term_days: "三十"导致流程异常,加 JSON Schema 校验拦下;③ 审批流并行节点汇合后状态丢失,Flowable 需显式配置"会签完成"事件。


开放性问题

如果给你们合同流程算一笔账,卡在"流转等待"上的时间占了百分之几?你们的系统里,审批状态是用工作流引擎管,还是用几张表 + 代码硬写的?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 18:06:25

SpringBoot电商秒杀系统架构设计与高并发实战

简介:高并发系统设计是后端开发的核心挑战之一,其核心原理在于通过分层、缓存、异步等手段应对瞬时流量冲击。在电商、社交、金融等互联网应用场景中,秒杀、抢购等业务模式对系统性能和数据一致性提出了极高要求。从技术价值看,掌…

作者头像 李华
网站建设 2026/8/28 18:04:10

JavaScript实例化全解析:从new到工厂模式,掌握对象创建核心

1. 项目概述:从“new”到“工厂”,JS实例化的深度探索在JavaScript的世界里,“实例化”这个词听起来有点学术,但说白了,就是“造东西”。我们写代码,本质上是在定义蓝图(类或构造函数&#xff0…

作者头像 李华
网站建设 2026/8/28 18:03:43

强化学习驱动持久图空间随机动力学:方法与实践

这个课题从标题看就很有特点:它把拓扑数据分析(TDA)中的持久图(Persistence Diagram)、随机动力学(Stochastic Dynamics)和强化学习(Reinforcement Learning)三个看似不相…

作者头像 李华
网站建设 2026/8/28 18:01:07

用U-blox NINA-B4做社交距离可穿戴设备:BLE RSSI测距实战

我做了个能挂在胸前的社交距离可穿戴设备,核心模组选了U-blox的NINA-B4蓝牙模块。戴上它的两个人只要靠近到设定阈值距离,设备就会同时亮灯加震动。之所以没用手机App方案,是因为车间和工地上没人会一直开着蓝牙App,后台扫描还经常…

作者头像 李华
网站建设 2026/8/28 18:00:50

RL训练被推理瓶颈拖慢?教你将推理服务化独立扩展提速

今天聊一个在 RL 工程化里很容易被低估的问题: 推理(Inference)才是强化学习训练流水线里最容易被卡死的环节 。 很多人跑过 PPO、GRPO 这类在线策略强化学习后会有一个共同感受:策略模型参数更新本身并不慢,真正把…

作者头像 李华
网站建设 2026/8/28 17:56:41

500W Class II医疗电源设计实战:从安规到量产避坑

做医疗设备电源,跟做普通消费类电源完全是两个世界。这个项目名字很直白:500W Class II Supplies Target Medical Gear,拆开看就是一台输出功率500W、绝缘等级Class II(双重绝缘、无保护接地)的医疗级电源,…

作者头像 李华