产出能比对
一张草稿单对着原文看,字段对不对、数量差没差,业务员三十秒就能判。说不清对错的 AI,没法验收,也没法追责任。
场景越窄,越能回答三个问题:它做对了吗?做错了会怎样?它到底动了哪些数据? 这三问答不上来,功能上得再热闹,客户也不敢让它碰真单子。
一张草稿单对着原文看,字段对不对、数量差没差,业务员三十秒就能判。说不清对错的 AI,没法验收,也没法追责任。
它交出来的是草稿,后面仍是原来那道审核、那次信用校验、那笔过账。判错最多让人多改两下,不会把账做坏。
它只在两个已有的东西之间搬数据:单据模型,和审批/过账引擎。不新增流程,也不改任何一条口径。
五步,每步都写着机器做哪半段、人保留哪半段。中间任何一步断了,后面都不许硬走。
{
// 来件留着原样,后面能翻回原文
"source": "mail/2026-11-02-0931.eml",
"customer": { "raw": "宏远机械 王工", "match": "C-0021", "score": 0.96 },
"lines": [
{ "raw": "6061 铝板 3mm 200 张",
"item": "M-0188", "qty": 200, "price": null, "score": 0.93 },
{ "raw": "M8 沉头螺钉 若干",
"item": null, "qty": null, "score": 0.31 }
],
"delivery": null,
// 缺的列出来,不猜、不套历史价
"needsReview": [
"第 2 行未匹配到料号,也没有数量",
"第 1 行没写单价",
"交期只写了「月底前」,没落成具体日期"
]
}
这份解析结果里最要紧的不是匹配成功的那两行,而是三处 null 和下面那三条
needsReview。系统据此做两件事:草稿里对应字段留空标黄,页面顶部提示还差哪几项。
C-0021,置信度 0.96——只有在这种把握下它才敢自动填,否则就让人从候选里点。这段结构也可以直接当接口契约看:AI 服务只产出这种 JSON,落单由服务端做, 这样「模型换了」和「单据逻辑改了」互不影响。
不挑「最难的」,挑「重复最多的」。这三个场景的共同点是:输入是人写的自然语言, 输出是系统里本来就有的一张单——中间那段纯属搬运。
客户真正在意的不是它有多聪明,是它会不会乱来。这五条不是产品策略,是代码里已经定死的位置: AI 服务交完草稿就退出,后面整条链上都没有它的位置。
产出永远是草稿。审批链、信用额度校验、过账走的是原来那段代码,AI 不在链上,也拿不到那颗审核按钮。
缺数量、缺交期、缺规格,就留空并标出来。宁可让人填两格,也不给一个「看起来合理」的假数——假数比空着危险。
来件只在你的实例里解析,模型可本地或私有化部署。要接云端模型,得在配置里显式打开,页面上会写明数据发到哪。
不改单价、不做核销、不生成凭证。它给依据——原文怎么写、历史成交多少——决定仍由人做。
每张草稿挂着它的来源与置信度;谁改了什么记在修正台账里,别名怎么来的也查得到。查得到出处,才敢让它参与业务。
没做完的不装作做完了。下表逐条标了状态:哪些已经能用、哪些只做了一部分、哪些明确不做—— 这张表会随版本更新,而不是一次写完挂着不动。
| 能力 | 状态 | 说明 |
|---|---|---|
| 六类主数据 xlsx 导入(预检到行列、整批回滚) | 已具备 | 解析的上一代做法:模板固定,人照着填 |
| BOM 多层展开与缺料分析 | 已具备 | 采购建议的算法底座,AI 不重算,只调用 |
| 安全库存预警与在途统计 | 已具备 | 催料待办的数据来源 |
| 应收应付账龄与收款核销 | 已具备 | 对账任务的比对对象 |
| 单据草稿态 + 服务端审批门禁 | 已具备 | 草稿能落库、审核拦得住,AI 的产出才有地方放 |
| 人工修正台账与别名自动固化 | 已具备 | 改过哪些字段、改了几次都记账;同一写法满 2 次且无歧义才生效,可随时停用 |
| 邮件 / 粘贴文本 → 订单草稿 | 部分 | 邮件与粘贴两条入口已跑通,含复核、修正台账、草稿开单;照片与 PDF 待 OCR |
| 微信 / 企业微信消息直接接入 | 部分 | 回调端点已实现(验签 → 落库 → 入队),需企微后台建应用并配回调;未配置前用粘贴 |
| 对账单差异识别 → 对账任务 | 部分 | 四类差异(对方有我方无 / 我方有对方无 / 金额不一致 / 已收清仍列着)的比对与留档已能跑;尚未把每条差异挂成待办任务 |
| 自动审核 / 自动定价 / 自动付款 | 不做 | 这三件事错了直接赔钱,且没法用「改两下」挽回 |