30 KiB
采购主链 RPA 一期 · 实施与验收规范
用途:把《三方会审版需求文档》和《设计文档》落成开发能照着做、验收能照着勾的执行手册。 读者:①Trae(写上层状态中心代码) ②艺赛旗 iS-RPA 开发(搭下层页面流程) ③业务方(按业务验收标准确认) ④项目负责人(你,通盘把控)。 语言:全中文。术语见文末《名词表》。
第一部分 · 总览:这套系统到底怎么分工
1.1 上下两层(务必先分清)
整套系统是上下两层,由两个不同工具实现,不要混为一谈:
┌──────────────────────────────────────────────────────────┐
│ 上层:状态中心(大脑) ← Trae 写后台+网页代码 │
│ · 决定每一单现在该走哪一步、出错派给谁 │
│ · 存 job 状态 / 对码结果 / 证据 / 业务编号 │
│ · 【步骤树状图界面】就在这层,是网页,业务打开就能看进度 │
│ · 不亲自去点任何外部系统的页面 │
└───────────────────────────▲──────────────────────────────┘
│ HTTP 接口:下命令(派节点) / 收回执(成功/失败)
│ 传的都是 JSON,不共享数据库
┌───────────────────────────┴──────────────────────────────┐
│ 下层:艺赛旗 iS-RPA(手脚) ← 在艺赛旗设计器里可视化编排 │
│ · 真正去点 医药城/合同系统/返利中心/M5 的页面 │
│ · 是"搭流程",不是"录视频";能处理 M5 桌面客户端 │
│ · 每个动作做完,HTTP 回调状态中心报结果 │
└────────────────────────────────────────────────────────────┘
澄清你最初的困惑:不是人去录视频。是两拨代码活——Trae 写状态中心(网页+后台),艺赛旗里搭 RPA 流程。步骤树状图是 Trae 做出来的网页界面,实时显示每单进度,不是 RPA 录出来的东西。
1.2 谁做什么(职责边界)
| 工作 | 归谁 | 产物 |
|---|---|---|
| 数据库建表、状态机、对码引擎、幂等去重 | Trae | 后台服务 |
| 派发节点、接收回调、判断下一步 | Trae | API |
| 待办网页、步骤树状图、整单查询页 | Trae | 前端网页 |
| 企业微信推送、H5 待办确认 | Trae | 集成 |
| 登录各系统、导出Excel、建单、上传PDF、录入M5 | 艺赛旗 | RPA流程包 |
| 页面动作做完回调状态中心 | 艺赛旗 | HTTP回调 |
| OCR 识别线下手工单 | 独立OCR服务(本地) | 字段JSON |
| 按业务验收标准确认每步对不对 | 业务方 | 验收签字 |
1.3 一次完整流程 = 一个 job
一个 job = 同一供应商 + 同一订单日期 + 同一来源 的一批订单 = 一条合同。 job 从①走到⑥,每一步是一个"节点",节点做完才走下一个。
第二部分 · 一页地图(贴在最显眼处)
════════════════════════════════════════════════════════════════════
采购主链 RPA 一期 · 一页导读
以销定采:先在京东/阿里卖货 → 反向采购 → 把每天手工采购链自动化
════════════════════════════════════════════════════════════════════
【主链六段】 ▓=RPA干 ░=人干 ⊙=RPA等 谁干 停了怎么办
┌──────────────────────────────────────────────┐
│ ① 导订单 登录平台→选前一天→导出Excel │ ▓▓▓ 登录失败→自动重试→运维
│ 医药城:合同要合并PDF上传 │
│ 小药药:年度协议,不传合同 │
│ 线下单:图片走OCR (~100份/月) │
├──────────────────────────────────────────────┤
│ ② 产品对码 ★核心难点★ │ ▓▓▓ 单条命中不了
│ 平台药名→[通用名+批准文号+规格+厂家]→M5货品 │ ░ →这条挂起转人工
│ ②b 没采过的品种→M5新增货源 │ →整批继续
├──────────────────────────────────────────────┤
│ ③ 合同建单 选模板→改签约日=订单日 │ ▓▓▓ 合同禁掉失效
│ 医药城:同供应商同日合同合并成1个PDF上传 │ →邮件通知采购
│ ┌送审→等半小时→出【合同编号】🔑 │ ⊙ (建议轮询别死等)
├──────────────────────────────────────────────┤
│ ④ 返利中心 用【合同编号】查总单→填→导细单 │ ▓▓▓ 重复编码
│ 细单备注必填【订单号】特定补偿必填0 │ ░ →挂起,整批继续
│ ┌送审 ⭐决定成败⭐ 不做则M5品种跳不出来 │ ▓▓▓ 不送审→硬阻断
├──────────────────────────────────────────────┤
│ ⑤ M5建采购单(1055) 选正常保管账,备注填订单号 │ ▓▓▓ 质管资料缺失
│ 结算/发票/接收方式=返利中心已下发,不用填 │ →停!转人工,不等质管
│ ★★录完就停,不点保存★★ │ ░ (②阶段其实已能预警)
├──────────────────────────────────────────────┤
│ ⑥ 收尾 检查→保存→签订→生成收货通知单 │ ░→▓ —
│ ⚠不可逆:签订后改不了,一期人工把关 │ (准确率OK后交RPA)
└──────────────────────────────────────────────┘
════════════════════════════════════════════════════════════════════
【两把钥匙:五系统无API,全靠RPA搬,靠这两个值接力】
🔑货品ID/编码(②产出) ─贯穿─► ③④⑤ 填明细都用它
🔑合同编号(③产出) ─► ④按合同号查总单→送审 ─► ⑤M5能带出协议
反直觉:卡M5的送审在【返利中心】,不在合同系统
🧵订单号(①产出,只追溯): 返利备注→物流软件看 │ M5备注→结算勾对账看
════════════════════════════════════════════════════════════════════
【停点分类:停住不蠢,分不清"整批停/单条挂起"才蠢】
A.该停·业务拍板 M5质管缺失→停转人工不等质管;不可逆保存签订→留给人
B.单条挂起别拖累 对码不上/返利重复编码→这条转人工,整批继续
C.可以更聪明 等审批→轮询别死等;网页卡顿→自动重试1-2次再报警
════════════════════════════════════════════════════════════════════
第三部分 · 步骤树状图长什么样(Trae 要做的网页界面)
这是状态中心的核心界面,业务打开就知道每单跑到哪、卡在哪。
📋 Job: YYC-亿昊药业-20260804 状态: ⏸ 等待人工处理
────────────────────────────────────────────────────────────
✅ ① 导订单 ORDER_FETCH 导出12单 22:01 12秒 [看证据]
✅ ② 产品对码 PRODUCT_MATCH 对码 10/12 ⚠ 22:01 3秒
└─ ⏸ 2条未命中,等计划员选择 [去处理→]
⬜ ②b 货源新增 SOURCE_ADD —
⬜ ③ 合同建单 CONTRACT_CREATE —
⬜ ④ 返利总单 REBATE_HEADER —
⬜ ④ 返利细单 REBATE_IMPORT —
⬜ ④ 返利送审 REBATE_SUBMIT —
⬜ ⑤ M5建单 M5_CREATE_ORDER —
⬜ ⑥ 人工保存签订 —
⬜ ⑥ 生成收货通知单 —
────────────────────────────────────────────────────────────
🔑合同编号: — 🔑返利总单号: — 🧵订单号: ZQD...(共12个)
图标说明: ✅完成 ⏸等人处理 ❌失败 🔄重试中 ⬜未开始
────────────────────────────────────────────────────────────
[重跑本单] [转人工] [查看完整事件流] [导出证据包]
界面验收标准(给 Trae):
- 能列出该 job 全部节点及状态(用上面10个节点)。
- 每个已完成节点显示:完成时间、耗时、关键结果摘要、证据链接。
- 等人处理的节点有醒目标识 + "去处理"按钮跳到待办页。
- 顶部三把钥匙(合同编号/返利总单号/订单号)实时回填。
- 失败节点显示错误码 + 人话原因 + 截图。
- 列表能按状态筛选(全部/进行中/等人/失败/完成)。
第四部分 · 逐节点执行手册(核心)
读法:每个节点四块—— ①节点信息(谁干、前置、进出什么); ②页面操作步骤(给艺赛旗,一步一动作,能照着搭); ③验收标准分两栏——代码验收(给 Trae/艺赛旗,机器能自检)+业务验收(给业务方,人能对着勾); ④失败与去向(停了怎么办,派给谁)。
术语:complete=节点成功回调;fail=节点失败回调;挂起=这一条转人工、整批继续;硬阻断=整个 job 停。
节点① ORDER_FETCH · 订单获取
| 项 | 内容 |
|---|---|
| 执行方 | 艺赛旗 iS-RPA |
| 前置条件 | 平台账号可登录;job 已建(来源+日期已定) |
| 输入 | 来源类型(医药城/小药药)、订单日期(默认前一天) |
| 输出 | 订单明细 Excel、订单号列表、供应商列表 |
页面操作步骤(给艺赛旗):
- 打开对应平台登录页,输入账号密码,登录。
- 进入"我的订单 / 订单管理"。
- 选择日期 = 前一天(或状态中心下发的指定日期)。
- 【待确认】按订单状态过滤(只取"待收货"还是含其他,等业务拍板)。
- 点"导出订单明细",等待下载完成。
- 把下载的 Excel 存到证据目录,截图当前页面。
- HTTP 回调 complete,带 Excel 路径 + 解析出的订单号列表 + 供应商列表。
输出示例(回调 complete):
{ "attemptNo": 1, "executorRunId": "YD-RUN-001",
"artifacts": [{ "artifactType": "SOURCE_EXCEL", "storagePath": "/data/jobs/.../orders.xls" }],
"summary": { "orderCount": 12, "supplierList": ["重庆亿昊药业有限公司"], "orderNoList": ["ZQD202608041850483308"] } }
验收标准
| 代码验收(机器自检) | 业务验收(人对着勾) |
|---|---|
| [ ] 登录成功,进到订单列表页 | [ ] 导出的单量 = 业务当天实际下单量,不多不少 |
| [ ] 日期筛选值 = 目标日期 | [ ] 供应商名、订单号与平台页面一致 |
| [ ] Excel 成功下载且非空 | [ ] 选的日期就是"前一天",没选错 |
| [ ] 订单号/供应商已解析入 order_item | [ ] 抽查一单:品名/规格/数量与平台一致 |
| [ ] 证据目录有 Excel + 截图 |
失败与去向
| 情况 | errorCode | 可重试 | 去向 |
|---|---|---|---|
| 登录失败/验证码 | SYS_LOGIN_FAIL | 是(1-2次) | 仍失败→运维OPS |
| 页面卡顿/超时 | SYS_PAGE_TIMEOUT | 是(1-2次) | 仍失败→运维OPS |
| 导出按钮找不到(改版) | UI_ELEMENT_NOT_FOUND | 否 | 运维OPS |
| 当天无订单 | — | — | 正常结束,job 标记"空单" |
节点①b OCR_EXTRACT · 线下手工单识别(仅线下单)
| 项 | 内容 |
|---|---|
| 执行方 | 独立 OCR 服务(本地优先) + 艺赛旗取件 |
| 前置条件 | 线下供应商发来的开单截图/PDF 已入证据目录 |
| 输入 | 图片/PDF 文件 |
| 输出 | 结构化字段 JSON(品名/规格/厂家/批准文号/数量/单价/供应商)+ 置信度 |
页面操作步骤:
- 读取线下单图片/PDF。
- 调 OCR 服务,拿回字段 + 每字段置信度。
- 低于阈值或缺关键字段 → 标记转人工。
- 识别结果写入 order_item(与线上同结构),进入对码。
- 回调 complete,带识别 JSON 与置信度。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 每字段带置信度 | [ ] 抽查:识别的品名/规格/数量与原图一致 |
| [ ] 低置信度/缺字段 → 建人工待办 | [ ] 人工能看到原图,方便核对 |
| [ ] 识别结果结构与线上订单一致 | [ ] 识别错的能改,改完能继续 |
失败与去向
| 情况 | errorCode | 可重试 | 去向 |
|---|---|---|---|
| 图片模糊/识别失败 | BIZ_OCR_LOW_CONF | 否 | 计划员PLANNER 看原图人工录 |
| OCR 服务不可用 | SYS_OCR_DOWN | 是 | 仍失败→运维OPS |
⚠️ 一期最大卡点:线上 OCR 涉信息安全,须法务+数据中心批;否则本地部署。此节点部署方式待确认。
节点② PRODUCT_MATCH · 产品对码 ★核心难点★
| 项 | 内容 |
|---|---|
| 执行方 | 状态中心(Trae 内部算,不点页面) |
| 前置条件 | order_item 已入库;对码表 mapping_config(PRODUCT) 已加载 |
| 输入 | 每行订单的:通用名/批准文号/规格/厂家 |
| 输出 | 每行 match_status(EXACT/FUZZY/MULTI/NONE) + 货品ID/编码;未命中清单 |
处理步骤(给 Trae):
- 每行做规范化(去空格、全半角、规格标准化,如 15×2↔30片、干一瓶↔×1瓶)。
- 拼四要素键:通用名+批准文号+规格+厂家。
- 精确命中对码表 → EXACT,回填货品ID/编码/基本单位。
- 规格/厂家容错命中 → FUZZY,标记待复核。
- 同商品名多规格 → MULTI,生成一对多候选,建人工待办。
- 无命中 → NONE,建人工待办。
- 全 EXACT/已确认 → 放行进③;有 MULTI/NONE → job 转 WAITING_USER。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 每行都有明确 match_status | [ ] 命中的货品ID确实是这个药(抽查) |
| [ ] EXACT 行回填了货品ID+编码+单位 | [ ] 一对多候选是"同一个药的不同规格写法",不是乱配 |
| [ ] MULTI 行有候选列表供 H5 选 | [ ] 未命中的能在页面上一对多选择/新增 |
| [ ] 命中率有统计数字 | [ ] 人工确认后,下次同款能自动命中(累积迭代) |
| [ ] 人工确认结果回写对码表(新版本号) | [ ] 进口药英文厂家名能容错匹配 |
失败与去向
| 情况 | errorCode | 可重试 | 去向 |
|---|---|---|---|
| 一对多 | BIZ_MATCH_MULTI | 否 | 该条挂起→计划员选候选;整批继续 |
| 无命中 | BIZ_MATCH_NONE | 否 | 该条挂起→计划员人工匹配/新增;整批继续 |
关键:未命中是单条挂起,不停整批。计划员处理完这条,继续跑其余。
节点②b SOURCE_ADD · 货源新增
| 项 | 内容 |
|---|---|
| 执行方 | 业务在 M5 手工新增(状态中心只通知) |
| 前置条件 | 对码命中了货品,但该供应商从未采过该品种 |
| 输入 | 供应商 + 货品 |
| 输出 | 货源建好的确认 |
步骤:
- 状态中心判断"该供应商×该货品"无货源记录。
- 推企业微信待办给业务:去 M5 新增货源。
- 业务新增完,在待办点"已完成"。
- job 恢复继续。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 能识别缺货源并建待办 | [ ] 通知内容说清楚是哪个供应商+哪个品种 |
| [ ] 业务确认后能继续 | [ ] 新增货源后 M5 里能查到 |
失败与去向:缺货源→通知业务→业务新增→继续。不阻断其余可跑节点。
节点③ CONTRACT_CREATE · 合同建单
| 项 | 内容 |
|---|---|
| 执行方 | 艺赛旗 iS-RPA |
| 前置条件 | 对码全部通过;供应商对照表已加载 |
| 输入 | 供应商、订单日期、货品明细、模板类型 |
| 输出 | 🔑合同编号、合同状态、模板类型 |
页面操作步骤(给艺赛旗):
- 登录合同系统
contract.gzmpc.com。 - 按供应商对照表判断模板:格式(默认)/非格式(承兑)。
- 可复制历史合同再改(业务现行做法)。
- 填基础信息;改签约日期/合同开始日期 = 订单日期(硬约束)。
- 填货品明细(操作码/货品编码、名称、国药准字、规格、单位、数量)。
- 填付款信息(必填:付款方式、天数)。
- 医药城分支:下载平台购销合同,同供应商同日合并成一个PDF上传(先合并,否则第二份覆盖第一份)。
- 小药药分支:格式合同,跳过合同证文上传。
- 汇总金额,提交送审。
- 回调 complete,带合同编号。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 模板选择与对照表一致 | [ ] 签约日期 = 订单日期,没填成今天 |
| [ ] 签约日期字段 = 订单日期 | [ ] 医药城:PDF 是同供应商同日全部合并的一份 |
| [ ] 医药城已上传合并PDF且未被覆盖 | [ ] 小药药:确实没传合同证文 |
| [ ] 小药药未走上传分支 | [ ] 合同金额/品种/数量与订单一致 |
| [ ] 回传了合同编号 | [ ] 承兑供应商用的是非格式模板 |
失败与去向
| 情况 | errorCode | 可重试 | 去向 |
|---|---|---|---|
| 供应商合同禁掉/失效 | BIZ_CONTRACT_DISABLED | 否 | 邮件通知采购(可多人)重新禁掉;该单挂起 |
| PDF 合并能力不支持 | CAP_PDF_MERGE_UNSUPPORTED | 否 | 换平台/运维OPS |
| 页面改版找不到元素 | UI_ELEMENT_NOT_FOUND | 否 | 运维OPS |
节点④ CONTRACT_APPROVE_WAIT · 等合同审批
| 项 | 内容 |
|---|---|
| 执行方 | 状态中心(定时器)+ 艺赛旗查状态 |
| 前置条件 | 合同已送审 |
| 输入 | 合同编号 |
| 输出 | 审批通过确认 |
步骤:
- 送审后启动定时器(约半小时)。
- 到点后艺赛旗登录查审批状态(建议轮询,别死等)。
- 已通过→放行进④返利;未通过→继续等并重查;超阈值→升级运维。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 有定时/轮询机制,不是硬睡死等 | [ ] 只有审批"真的通过"了才进下一步 |
| [ ] 未通过会重查,不误判 | [ ] 卡太久会有人被通知去催 |
| [ ] 超阈值升级 OPS |
注意:未审批完也会生成合同编号,但必须审批完才导入返利中心。
失败与去向:超时未审完→保持等待并重查;超阈值→运维/催办。
节点⑤ REBATE_HEADER · 返利中心总单
| 项 | 内容 |
|---|---|
| 执行方 | 艺赛旗 iS-RPA |
| 前置条件 | 合同审批通过,拿到🔑合同编号 |
| 输入 | 合同编号 |
| 输出 | 返利中心总单号 |
页面操作步骤:
- 登录返利中心
flgzmpc.com。 - 进"采购协议管理"。
- 按合同编号查对应总单。
- 总单信息空白,填必填项、勾必选项,保存。
- 回调 complete,带总单号。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 按合同号查到了对应总单 | [ ] 总单必填项都填了,能保存成功 |
| [ ] 必填项无遗漏 | [ ] 查出来的总单确实对应这份合同 |
| [ ] 回传总单号 |
失败与去向:查不到总单/必填缺失→运维或采购核查。
节点⑥ REBATE_IMPORT · 返利细单导入
| 项 | 内容 |
|---|---|
| 执行方 | 艺赛旗 iS-RPA |
| 前置条件 | 总单已建 |
| 输入 | 对码结果、数量、单价、订单号 |
| 输出 | 导入成功/失败行 |
页面操作步骤:
- 下载细单模板。
- 填字段:操作码/货品编码、数量、单价、税率、承付方式、参数、细单开始时间(=订单时间)、失效日期、结算方式、特定补偿=0、细单备注=订单号、货源信息。
- 上传导入。
- 读取成功/失败行及原因。
- 回调 complete,带成功/失败计数。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 特定补偿字段 = 0 | [ ] 细单备注确实填了订单号(物流部要看) |
| [ ] 细单备注 = 订单号 | [ ] 数量/单价与订单一致 |
| [ ] 细单开始时间 = 订单时间 | [ ] 导入的品种数 = 应导数 |
| [ ] 成功/失败行有明细回传 | [ ] 失败行原因能看懂 |
失败与去向
| 情况 | errorCode | 可重试 | 去向 |
|---|---|---|---|
| 存在重复编码(订单已做过) | REBATE_DUP_CODE | 否 | 该单挂起→采购;整批继续(重建总单规则待确认) |
节点⑦ REBATE_SUBMIT · 返利送审 ⭐决定成败⭐
| 项 | 内容 |
|---|---|
| 执行方 | 艺赛旗 iS-RPA |
| 前置条件 | 细单导入成功 |
| 输入 | 总单 |
| 输出 | 送审完成(自动审批通过) |
页面操作步骤:
- 在返利中心对该总单点"提交送审"。
- 送审即自动审批通过(合同前端已审过一遍)。
- 回调 complete。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 确认送审动作已执行且成功 | [ ] 送审后,M5 里能带出这个协议(关键验证) |
| [ ] 未送审绝不放行进 M5 | [ ] 没漏送审的单 |
失败与去向:未送审→硬阻断(不送审 M5 带不出品种,整个 job 停在此)。
⭐反直觉核心:卡 M5 的送审在返利中心,不在合同系统。这一步不做,后面全废。
节点⑧ M5_CREATE_ORDER · M5 建采购单(1055)
| 项 | 内容 |
|---|---|
| 执行方 | 艺赛旗 iS-RPA(处理 M5 桌面客户端) |
| 前置条件 | 返利已送审 |
| 输入 | 货品明细、数量、订单号 |
| 输出 | M5 采购单(录入待保存,不点保存) |
页面操作步骤:
- M5 采购订单管理 1055 → 新增。
- 选保管账 = 正常保管账(默认,只有一个)。
- 日期:若隔天做,改成前一天签约日期。
- 备注填订单号(给采购结算勾对账用)。
- 新增细单,选品种(返利已送审的才带得出)。
- 选对应数量(协议累计采购量为0说明没用过)。
- 结算/接收方式/发票 = 返利中心已下发自动带入,不填。
- ★录完就停,不点保存★。
- 回调 complete,标记"M5待保存"。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 保管账 = 正常保管账 | [ ] 品种/数量与订单、返利协议一致 |
| [ ] 备注 = 订单号 | [ ] 备注订单号填对了(结算要看) |
| [ ] 结算/接收/发票未手工填(用带入值) | [ ] 确认停在"待保存",没被自动保存 |
| [ ] 未触发保存动作 | [ ] 隔天做的,签约日期改成了前一天 |
失败与去向
| 情况 | errorCode | 可重试 | 去向 |
|---|---|---|---|
| 质管资料缺失(供应商年报过期等) | M5_QC_MISSING | 否 | 停止→FAILED_MANUAL,转人工手工做,不等质管 |
⚠️ 硬规则:质管缺失不重试、不等质管(RPA 晚上跑,质管不会半夜维护)。直接转人工。
节点⑨ M5_MANUAL_CONFIRM · 人工检查→保存→签订
| 项 | 内容 |
|---|---|
| 执行方 | 一期=人工(可配开关,阶段二转 RPA) |
| 前置条件 | M5 已录入待保存 |
| 输入 | 待保存采购单 |
| 输出 | 已保存、已签订 |
步骤:
- 状态中心推待办给计划员:去检查。
- 计划员核对数量等 → 点保存 → 签订。
- 在待办确认已完成。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] auto_save_enabled 一期=0(人工) | [ ] 数量核对无误才保存 |
| [ ] 开关可切换,便于阶段二放开 | [ ] 保存/签订后不可逆,确认无误 |
| [ ] 人工确认动作有留痕 | [ ] 错的能在保存前改掉 |
不可逆:保存/签订后改不了,一期人工把关。
节点⑩ M5_RECEIPT_NOTICE · 生成收货通知单
| 项 | 内容 |
|---|---|
| 执行方 | 一期=人工(可配开关) |
| 前置条件 | 已签订 |
| 输入 | 已签订采购单 |
| 输出 | 收货通知单号 |
步骤:签订后点"生成收货通知单",采购合同流转结束。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 收货通知单号已生成并回写 | [ ] 供应商/货品/数量与采购单一致 |
| [ ] 与 M5 单号关联落库 | [ ] 通知单号能查到 |
节点⑪ ARCHIVE_JOB · 归档
| 项 | 内容 |
|---|---|
| 执行方 | 状态中心 |
| 前置条件 | 全链完成 |
| 输入 | 各业务编号 |
| 输出 | 完整编号链 + 证据包 |
步骤:把订单号→合同编号→返利总单号→M5单号→收货通知单号全部落库,证据(Excel/PDF/截图/日志/人工记录)归档。
验收标准
| 代码验收 | 业务验收 |
|---|---|
| [ ] 五个业务编号全部落库可查 | [ ] 拿任一编号能追到整条链 |
| [ ] 证据包完整可导出 | [ ] 抽查证据能还原当时操作 |
第五部分 · 你还没想到的事(容易漏,先摆到桌面)
这些不是需求,是"做的时候一定会撞上、现在不定后面返工"的坑。按优先级分档。
5.1 必须先拍板(不定就没法开工)
| # | 事项 | 为什么重要 | 建议 |
|---|---|---|---|
| 1 | OCR 信息安全 | 线上OCR公司可能不批,决定 OCR_EXTRACT 部署方式 | 拉法务+数据中心+业务三方会;倾向本地部署 |
| 2 | 各系统账号 | RPA 要登录5个系统,得有专用账号 | 要生产+测试账号;确认能否多开、会不会挤下线 |
| 3 | M5 是桌面客户端还是网页 | 决定艺赛旗怎么接(桌面自动化 vs 浏览器) | 让业务确认;艺赛旗能处理桌面,但要提前验证 |
| 4 | 订单状态过滤 | 只取"待收货"还是含其他,取错会多做/漏做 | 业务给明确状态清单 |
| 5 | 对码表/供应商对照表/计划员表/邮箱 | 缺了对码、判模板、派单、发通知都做不了 | 业务限时提供,格式先对齐 |
5.2 并发与调度(晚上批量跑必踩)
- 一台 RPA 机同时只能开一个 M5? 65~75单/天,串行够不够跑完一晚?要不要多机。
- 登录态互斥:同账号多处登录会不会把前一个踢下线。
- 一个 job 卡住,别堵住后面的 job:队列要能跳过挂起的、继续跑能跑的。
- 定时触发时间:几点跑?跑前一天订单,那"前一天"按几点切界。
- 半小时等审批期间,RPA 机是空等还是去干别的 job(建议轮询+切换,别占着机器空等)。
5.3 数据与幂等(重复跑会出乱子)
- 重复触发/重跑:同一天同供应商重跑,会不会在合同/返利/M5 建重复单。执行前必须先检索已有单号。
- 加单/拆单:父订单号怎么关联,加单要重做协议——一期先记录转人工(待确认)。
- 返利重复编码重建总单的完整规则(会议被打断没讲完,待确认)。
- 金额/数量精度:单价小数位、合计对不对得上,别因四舍五入差分。
- 同名不同药:对码四要素里任一不同就是不同药,别被商品名骗了。
5.4 异常与回滚(错了怎么收场)
- 保存/签订不可逆:一期靠人工把关。切自动前必须有准确率报告(阶段二判据要定量)。
- 中途失败的半成品:合同建了但返利没做,这单状态怎么标、下次怎么接着做。
- RPA 跑一半崩了:节点要能从断点续,attempt_no+1,不覆盖历史。
- 页面改版:5个系统任一改版,元素定位就失效。要有 UI_ 类告警,快速通知运维。
- 误操作防线:M5 阶段一严禁自动点保存(auto_save_enabled=0 是硬默认)。
5.5 验收与上线(别一次全上)
- 单来源先跑通:建议先医药城一个来源端到端,再加小药药、线下。
- 准确率统计:对码命中率、各节点成功率要有数字,支撑"何时转全自动"。
- 证据可回溯:每单能导出证据包(Excel/PDF/截图/日志),出问题能复盘。
- 权限可见性:合同/OCR 证据按角色可见,敏感文件脱敏标记。
- 联调顺序:状态中心单独跑通→假OCR假RPA打通全链→接真对码→接企业微信H5→接真RPA(先医药城)→返利/M5端到端。
5.6 安全底线(别裸奔)
- 状态中心所有写接口必须鉴权(内部 Bearer / RPA X-Agent-Token / H5 企业微信换JWT)。
- 回调接口必须校验 token + 幂等键,禁止无认证暴露。
- 账号密码不写死在流程里,走密钥管理。
名词表
| 词 | 意思 |
|---|---|
| 状态中心 | 自研的编排+审计中台(Trae 写的后台+网页),大脑 |
| 艺赛旗 iS-RPA | 下层 RPA 工具,真正去点各系统页面,手脚 |
| job | 一次完整流程实例 = 同供应商+同订单日期+同来源 = 一条合同 |
| 节点 | 流程里的一步(如 ORDER_FETCH),做完才走下一个 |
| 对码 | 把平台药名匹配到 M5 货品ID/编码(四要素:通用名+批准文号+规格+厂家) |
| 挂起 | 单条转人工,整批继续跑 |
| 硬阻断 | 整个 job 停住 |
| 待保存 | M5 录完但不点保存,一期留给人工检查 |
| 三把钥匙 | 🔑货品编码 / 🔑合同编号 / 🧵订单号,系统间靠这三个值接力 |