AutoRpa/docs/archive/采购主链RPA一期开发规划.md

10 KiB
Raw Permalink Blame History

采购主链 RPA 一期开发规划

用途:作为开发启动前的对齐底稿,明确"先做什么、后做什么、为什么这个顺序、卡在哪里"。 配套文档:《采购主链RPA一期需求文档_三方会审版》(业务规则)、《界面截图证据记录》(字段结构)。 核心原则:按风险和依赖排序,不按流程顺序。让开发启动不被 OCR 决策和资料到位阻塞。


一、指导原则

  1. 风险前置:最可能推翻项目价值的假设(对码命中率),最先验证,且用最小成本验证。
  2. 依赖解耦:状态中心与 RPA 执行器分层,业务规则和审计口径掌握在项目方手里,RPA 平台可替换。
  3. 单路打通:先用最顺的一条来源(医药城)跑通端到端骨架,再横向扩展其他来源。
  4. 降难度上线:一期只做到"录入待保存 + 人工检查",把"自动保存/签订"做成配置开关(关闭),规避不可逆操作风险。
  5. 阻塞并行:OCR 信息安全、资料收集这类非技术阻塞,与开发并行推动,不占用开发关键路径。

二、三类拦路虎与应对

类型 具体事项 应对方式 是否阻塞开发启动
决策阻塞 OCR 走线上还是本地部署(信息安全) 拉法务部+数据中心+业务三方会 否(只阻塞线下手工单分支)
数据依赖 对码表、供应商对照表、计划员表、邮箱、测试账号 业务方并行收集 部分(对码表验证需要)
技术未知 对码命中率、页面稳定性、返利重复导入处理 离线脚本 + POC 试出来 是(需最先解决对码)

结论:只有"技术未知"里的对码命中率必须最先攻,其余两类并行推进,不进关键路径。


三、阶段划分与任务拆解

阶段 0:可行性验证(不写 RPA 代码,最先做)

目标:验证对码命中率,决定项目价值和后续工作量。

任务 内容 产出 依赖
0.1 收集样本 现有货品对码表 + 一批真实历史订单Excel(医药城/小药药各若干天) 样本数据集 业务提供
0.2 离线匹配脚本 按"通用名+批准文号+规格+厂家"四要素拼接匹配,统计命中率 命中率报告 0.1
0.3 未命中归因 分析未命中的规格差异模式(15×2 vs 30片、干一瓶 vs ×1瓶等) 差异模式清单 0.2
0.4 对码策略结论 精确匹配率、需模糊匹配的规则、需一对多人工的比例 对码方案 0.3

为什么最先做:如果命中率过低(如 <70%),意味着大量人工介入,需重新评估 RPA 价值主张或先集中精力做"对码表建设工具"。这一步投入最小、结论最快、不需要任何系统账号或RPA环境。

验收:给出明确的命中率数字和未命中处理成本估算。


阶段 1:状态中心骨架 + 医药城端到端最小闭环

目标:打通"医药城导出 → 对码 → 合同 → 返利 → M5录入待保存"一条可跑的链路。

1.1 状态中心骨架

任务 内容
数据模型 job / job_node / user_task / mapping_config / job_artifact / job_event
状态机 7状态流转 + attempt_no 重试机制(不覆盖历史)
幂等机制 文件哈希、业务键(合同号+类型+供应商+来源)、回调幂等键
RPA回调接口 统一节点契约(jobId/nodeCode/attemptNo/status/businessRefs/artifacts...)
证据存储 目录结构 job_id/节点编码/attempt_no/,截图/日志/JSON

1.2 医药城业务节点(RPA执行器)

节点编码 内容 关键细节
ORDER_FETCH 登录医药城,选前一天,导出订单明细Excel 订单状态过滤【待确认】
PRODUCT_MATCH 四要素对码 → 货品ID/编码,未命中转人工 复用阶段0成果
SOURCE_ADD 未采购过的供应商品种,通知M5新增货源 —
CONTRACT_CREATE 合同系统建单,选模板,改签约日期=订单日期 同供应商同日合并PDF上传
CONTRACT_APPROVE_WAIT 送审后等待(半小时后查审核状态) 等待策略可配置
REBATE_HEADER 返利中心按合同号查总单,填必填项保存 查出信息为空,需手工填
REBATE_IMPORT 细单模板导入(操作码/数量/单价/税率/承付/结算/特定补偿0/细单备注填订单号/货源) 重复编码处理【待确认】
REBATE_SUBMIT 提交送审(决定M5能否带出协议) 关键卡点
M5_CREATE_ORDER M5-1055新增订单+细单,备注填订单号,选默认正常保管账 不点保存(阶段一)

1.3 人工协同(企业微信/H5 最小版)

任务 内容
待办推送 对码未命中、货源缺失、质管卡住等,推送到企业微信
H5确认页 查看待确认项、一对多选择、人工修改留痕
人工检查入口 M5录入待保存后,人工检查→保存→签订→生成收货通知单

验收:一条真实医药城订单能从导出跑到 M5 待保存,各节点有证据,人工可在H5介入。


阶段 2:横向扩展来源 + 完善异常

目标:接入小药药、线下手工单,补齐异常分流。

任务 内容 前置条件
2.1 小药药接入 逻辑类似医药城,但格式合同不需上传PDF 需先补小药药界面画面
2.2 线下手工单+OCR OCR识别开单截图→对码 OCR信息安全决策通过
2.3 异常分流完善 对码未命中、货源缺失、合同禁掉失效邮件通知、返利重复、质管卡住转人工 邮箱/角色表到位
2.4 收货通知单 M5_RECEIPT_NOTICE + ARCHIVE_JOB —
2.5 订单号追溯 返利(物流看)/M5(结算看)订单号贯穿校验 —

阶段 3:稳定性与自动化开关

目标:验证准确率,逐步放开自动化。

任务 内容
3.1 准确率统计 统计各节点自动完成率、人工纠正率
3.2 自动保存开关 准确率达标后,打开 M5_MANUAL_CONFIRM 自动化(保存/签订/生成通知单)
3.3 重试与超时 系统异常自动重试1-2次;节点超时升级;待办30分钟/2小时提醒升级
3.4 平台可替换POC 若需接第二个RPA平台,验证登录/检索/导入/截图/回调用例

四、技术选型推荐

以下为推荐方案,均可根据公司现有技术栈和团队能力调整。医药商业公司IT环境通常以稳定、可维护为先。

状态中心(后端)

项 推荐 理由 备选
语言/框架 Python 3 + FastAPI 与对码/OCR脚本同栈,开发快,Pydantic 校验回调契约方便;骨架已跑通(state_center/) Java + Spring Boot(团队偏Java时可平移,契约不变)
数据库 MySQL 8 状态中心自有库,只存流程状态+累积别名+证据(对码表在 Oracle,直连查不复制) PostgreSQL
状态机 轻量自实现(NODE_ORDER 顺序 + 7 状态枚举) 7状态流转清晰,自实现更可控 —
对象存储 MinIO / 公司现有NAS 合同PDF、截图、OCR JSON等证据 本地文件系统

RPA 执行平台

项 推荐 理由
平台 国产商业RPA(影刀 / 来也UiBot / 艺赛旗)择一POC 5个系统均为国内Web/客户端,国产RPA对中文界面、验证码、客户端控件支持好,有本地部署和技术支持;需求已要求"平台可替换",先接一个主平台
关键要求 支持HTTP回调状态中心、截图留证、Excel读写、PDF合并、文件上传 对应本项目节点契约

选型建议:让候选平台跑一个POC用例——登录返利中心+检索+模板导入+截图+HTTP回调,通过再定。

OCR(仅线下手工单,取决于信息安全决策)

场景 推荐
若允许本地部署 PaddleOCR(本地) — 无信息安全顾虑,一次性投入
若允许线上 阿里/腾讯云OCR — 按量付费,实际用量约十几元/月

企业微信 / H5

项 推荐
待办推送 企业微信应用消息/群机器人
H5 轻量前端(Vue/React)+ 企业微信OAuth身份

部署

项 推荐
状态中心 公司内网服务器/容器,与业务系统同网段便于RPA访问
RPA运行机 独立运行机/虚拟机,7×24或定时任务,保持登录态

五、关键路径与阻塞项(甘特视角)

阶段0对码验证 ──┬──────────────────────────► (决定项目走向)
                │
业务收集资料 ───┼───(对码表/账号/对照表/邮箱)──► 阶段1需要
                │
OCR信息安全决策 ┼────────────────► 仅阻塞阶段2.2线下单
                │
                └─► 阶段1 骨架+医药城 ─► 阶段2 扩展 ─► 阶段3 自动化

关键路径:阶段0对码验证 → 阶段1医药城闭环。 不在关键路径的阻塞:OCR决策(只影响2.2)、小药药画面(只影响2.1)。


六、启动前需要业务方立即提供

优先级 事项 用于
P0 货品对码表 + 历史订单Excel样本 阶段0验证
P0 测试账号(合同系统/返利中心/M5/医药城) 阶段1开发
P1 供应商对照表(合同类别/结算/合同性质) CONTRACT_CREATE
P1 计划员与合同对应关系表 待办路由
P1 通知邮箱(禁掉通知、质管缺料,可多人) 异常分流
P2 小药药平台完整演示/截图 阶段2.1

七、需先拍板的决策项

  1. OCR信息安全(最大卡点):线上是否获批 / 本地部署预算。
  2. 返利中心重复订单完整处理规则(会议未讲完)。
  3. 医药城订单状态过滤:只取"待收货"还是含其他。
  4. 加单场景:父订单号关联、重做逻辑。
  5. 技术栈确认:上述推荐是否与公司现有栈冲突。