# 采购主链 RPA 一期需求文档 > 文档用途:作为产品、开发、RPA 实施、测试和业务确认的共同底稿。本文将当前已留存的会议相关业务底稿,与现有《采购业务 RPA 思路》《一期需求简版说明》《一期开发任务清单》统一整理。 > > 证据说明:视频音频未上传至外部转写服务,本文不是视频逐句转写稿,而是基于当前项目资料整理出的可执行需求初稿。文末“上线前待确认事项”用于回看会议原声后完成最终确认。 > > 范围说明:当前可落地的主线是“合同/协议 -> 返利中心 -> M5 -> 收货通知单”。订单中心分货、招采子系统和发货后票据上传属于后续范围,本文单独列出,不混入一期验收。 ## 1. 项目概述 ### 1.1 项目目标 将采购人员收到合同后的重复录入和跨系统搬运工作,建设为一条可追踪的 RPA 自动化流程: ```mermaid flowchart LR A[合同/协议进入共享目录] --> B[状态中心建单与判重] B --> C[OCR识别合同字段] C --> D[字段映射与业务校验] D --> E{合同系统是否审核通过} E -- 否 --> F[计划员手机待办] E -- 是 --> G[返利中心采购协议总单] G --> H[返利中心细单模板导入] H --> I[返利中心结果校验] I --> J[M5 1055采购订单] J --> K[生成收货通知单] K --> L[归档业务编号、截图、日志] ``` 核心原则:机器人只执行已经确认的规则;不能稳定识别或映射的字段必须转人工,禁止猜测填报。 ### 1.2 一期范围 包含: - 合同扫描件/合同文件从共享目录入池 - 文件命名、完整性和重复性检查 - OCR 识别合同基础字段和货品明细 - 供应商、货品、结算方式、承付模式映射 - 合同系统信息补齐、审核状态检查 - 返利中心采购协议检索、总单录入、细单模板导入 - 返利中心导入结果校验 - M5 采购订单管理 `1055` 新增采购订单 - M5 订单保存及收货通知单生成 - 企业微信消息通知和 H5 手机待办 - 状态中心、节点状态、日志、截图、重试和审计留痕 - RPA 执行平台适配和可替换设计 ### 1.3 一期不包含 - 订单中心品种分货、货源切换和销售订单联动 - 招采子系统医院计划抓取 - 发货后一票、二票信息自动上传 - 渠道价管理与维护 - 邮件自动收件作为主入口 - 复杂 BI 看板和经营分析 以上内容可作为二期/三期独立需求,不应影响一期主链交付。 ## 2. 角色与职责 | 角色 | 主要职责 | 可处理的异常/字段 | | --- | --- | --- | | 计划员 | 检查合同、确认 OCR 结果、确认数量和合同系统状态 | 合同编号、合同有效期、承付模式及参数、计划员归属、OCR 结果 | | 采购 | 确认返利中心协议及细单信息 | 供应商/货品映射、协议单价、导入模板错误、返利中心业务校验 | | 质管 | 维护或确认 M5 所需基础资料 | 质管基础资料缺失导致的 M5 保存失败 | | 运维/机器人管理员 | 处理账号、网络、页面变化、执行器和系统异常 | 登录失败、控件定位失败、接口回调失败、页面结构变化、超时 | | 项目负责人 | 处理升级事项、配置审批、平台切换和范围决策 | 多次失败、跨角色协调、执行平台切换 | 角色路由按角色配置,不将流程责任固定写死到个人账号。人员请假或轮班时,可由管理员替换实际处理人。 ## 3. 总体架构与边界 ### 3.1 系统职责 | 系统 | 负责内容 | 不负责内容 | | --- | --- | --- | | 状态中心 | 建单、判重、节点编排、业务规则、待办、重试、审计、证据、平台路由 | 直接操作返利中心或 M5 页面 | | RPA 执行平台 | 登录、检索、点击、录入、上传、下载、截图、结果回调 | 保存主流程状态、人工审批和业务规则主数据 | | OCR 服务 | 文件识别、文本抽取、字段置信度输出 | 直接向业务系统写单 | | 企业微信 | 消息、卡片、H5 入口、用户身份和人工操作提交 | 直接修改数据库或绕过状态中心推进流程 | | 合同系统 | 合同录入、审核和合同编号产生 | 一期不要求其改造接口,优先通过 RPA 访问 | | 返利中心 | 采购协议总单、细单、返利协议结果 | 不承担流程追踪和异常协同 | | M5 | `1055` 采购订单、收货通知单 | 不承担合同和返利中心数据映射 | ### 3.2 执行平台可替换边界 - 状态中心、规则、企业微信待办、日志和验收口径必须由项目方掌握。 - 一期上线可以只接一个主平台,但节点设计必须保留统一适配接口。 - 可按新单或节点配置选择平台;不支持一个节点执行到一半跨平台接力。 - 新平台上线前必须通过登录、检索、模板导入、截图、日志、HTTP 回调等 POC 用例。 - 老单默认沿用建单时的执行平台,避免中途迁移造成重复业务结果。 ## 4. 主流程节点需求 ### N01 合同文件入池 **目的**:将合同扫描件、年度协议或批次合同纳入统一流程,建立唯一流程实例。 **触发方式**: - 计划员/采购将双方盖章版本放入约定共享目录;或 - 用户在状态中心手工上传并建单。 **输入**:文件、文件名、上传时间、来源目录、发起人、合同类型(年度协议/批次合同)。 **处理规则**: 1. 校验文件格式,至少支持 PDF、常见图片格式;Excel 仅作为模板输入时支持。 2. 校验文件是否可打开、页数是否异常、是否存在空文件或缺页。 3. 计算文件哈希,拦截相同文件重复上传。 4. 按“合同编号 + 合同类型 + 供应商 + 发起来源”判定业务重复。 5. 记录原始文件,不覆盖历史文件。 6. 创建 `job_id`,初始化节点为 `FILE_INTAKE`,绑定映射版本和默认执行平台。 **输出**:`job_id`、源文件存证、文件哈希、合同类型、来源信息。 **异常与路由**: - 命名不规范:计划员待办,不启动 RPA。 - 文件损坏、缺页或关键附件缺失:计划员待办。 - 疑似重复:提示已有流程实例,由计划员/项目负责人确认,不直接新建。 - 共享目录不可访问:运维告警。 **成功判定**:状态中心已生成唯一 `job_id`,且源文件、元数据、判重结果均已留痕。 ### N02 OCR 识别与字段抽取 **目的**:将合同扫描件转换为可校验的结构化数据。 **输入**:N01 的源文件和合同类型。 **建议抽取字段**: | 字段 | 说明 | 是否必填 | | --- | --- | --- | | `supplier_name` | 供应商名称 | 是 | | `planner_name` | 计划员/联系人 | 是 | | `contract_no` | 合同编号 | 是,若合同系统尚未产生可为空 | | `settlement_text` | 原文结算方式 | 是 | | `payment_term_text` | 原文承付模式及参数 | 是 | | `contract_validity` | 合同有效期 | 是 | | `items[]` | 货品、数量、单价等明细 | 批次合同必填 | 每个字段必须输出原文值、标准化值、页码/位置和置信度;保留完整 OCR JSON,不能只保存最终填入值。 **处理规则**: - OCR 服务采用本地部署,状态中心通过适配接口调用,后续可替换云 OCR。 - 关键字段缺失、置信度低于阈值、同一字段识别出多个候选值时,进入 `WAITING_USER`。 - OCR 只负责识别,不直接决定系统编码,不直接写入返利中心或 M5。 **成功判定**:必需字段均有值或已明确进入人工确认,OCR 原始结果和截图可追溯。 **异常与路由**:OCR 服务不可用、文件无法识别、页码读取异常,转计划员;服务级异常同时通知运维。 ### N03 字段映射与业务校验 **目的**:把合同语言转换为合同系统、返利中心和 M5 能使用的编码与字段。 **映射对象**:供应商、货品、结算方式、承付模式、合同编号、角色和执行平台。 **处理规则**: 1. 规则优先,精确命中字典才允许自动转换。 2. 能识别标准 `N天` 的承付表达时,拆分为“承付模式代码 + 天数参数”。 3. 货品需映射到系统货品编码,数量和单价保留合同原值及转换结果。 4. 映射规则必须版本化;流程开始后绑定版本快照。 5. 重试默认沿用原版本;人工选择“按最新配置重跑”时才更新版本。 6. 任一必填项未命中、存在一对多结果或映射置信度不足,不得继续。 **承付模式字典**: `0 手工指定`、`1 订单签订后N天`、`2 入库后N天`、`3 收到发票后N天`、`4 供应商开出发票后N天`、`5 销售发货后N天`、`6 销售出库后N天`、`7 销售回款后N天`、`8 门店铺货后N天`、`9 以销定结`、`10 销完后N天`、`11 下月N号结`、`12 押N批`、`13 预付`、`14 供应商发货日期N天`、`15 开完发票N天`、`16 销售发票入账后N天`、`99 无`。 **结算方式字典**: `3 电汇`、`10 银行承兑汇票`、`11 商业承兑汇票`、`12 托收`、`13 信用证`、`17 电子债权凭证`、`27 电子银行承兑汇票`、`28 电子商业承兑汇票`、`30 应付保理`、`31 归集付款`、`32 电汇-非直联`、`33 不需支付`、`34 其他支付-直联`、`35 其他支付-非直联`、`36 电子债权凭证-非直联`、`37 电子银承汇票-非直联`。 **输出**:映射后的结构化业务对象、校验结果、未通过字段清单、映射版本。 **异常与路由**:供应商/货品未找到或多值匹配,计划员或采购待办;字典配置缺失,运维/项目负责人待办。 ### N04 合同系统信息补齐与审核前置 **目的**:确保后续返利中心和 M5 使用的合同已在合同系统中建立并处于可执行状态。 **输入**:N02/N03 结构化字段和源文件。 **RPA 操作**: - 登录合同系统。 - 按供应商、计划员、合同编号或业务条件检索已有合同。 - 补齐允许自动录入的合同字段。 - 保存并获取合同系统单号。 - 查询合同审核状态。 **前置规则**: - 合同系统“已审核/审核通过”才允许进入返利中心。 - 送审是否由机器人执行,需业务最终确认;未确认前默认由计划员操作或确认。 - 审核驳回、缺资料或状态不明确,流程停留在前置节点。 **输出**:合同系统单号、审核状态、审核通过时间、驳回原因摘要。 **成功判定**:合同单号存在,系统查询状态为审核通过,且关键字段与状态中心数据一致。 ### N05 返利中心采购协议总单 **目的**:根据合同编号在返利中心定位采购协议并完成总单必填信息。 **输入**:合同编号、供应商、承付模式、承付参数、结算方式、返利合约标识、有效期。 **RPA 操作**: 1. 登录返利中心。 2. 进入“采购协议”。 3. 以合同编号检索对应总单。 4. 校验供应商和合同编号是否与状态中心一致。 5. 录入/更新采购协议总单必填字段。 6. 保存,获取返利中心总单号并截图。 **关键业务规则**: - 采购协议至少包含品种、承付模式、承付参数和返利合约(一期默认为“否”或按业务配置)。 - 承付模式和结算方式必须使用系统内已存在编码。 - 批次合同在开户时必须先录入产品。 - 批次合同有效期默认为 1 个月;如合同原文不同,以人工确认值为准。 **成功判定**:总单号已生成或检索到且关键字段核验一致;只有页面保存成功而无业务编号时不得直接成功。 **异常**:检索不到、供应商不一致、必填项校验失败、重复总单、登录或页面异常,按采购/计划员/运维角色分流。 ### N06 返利中心细单模板生成与导入 **目的**:批量写入合同约定的货品、数量、单价等明细,减少逐行人工录入。 **输入**:货品映射结果、合同明细、返利中心模板格式、总单号。 **状态中心处理**: - 按模板版本生成 Excel/导入文件。 - 写入来源字段、目标字段和每行数据校验结果。 - 模板作为 `TEMPLATE` 存证,记录生成时间和映射版本。 **RPA 操作**: 1. 下载或打开返利中心细单模板。 2. 上传状态中心生成的模板。 3. 提交导入。 4. 读取导入总行数、成功行数、失败行数和失败原因。 5. 保存错误明细截图和导入结果。 **成功判定**:成功行数等于应导入行数,失败行数为 0,且返利中心返回可查询的结果。 **部分成功处理**:必须保留逐行成功/失败明细;不得直接将整节点标记成功,也不得盲目重复导入造成重复货品。转采购待办,由采购决定修正、补导或人工处理。 ### N07 返利中心结果校验 **目的**:确认总单与细单已经真正落库,并作为 M5 前置条件。 **校验项**:供应商、合同编号、货品编码、数量、协议单价、结算方式、承付模式、有效期、明细行数。 **输出**:返利中心总单号、明细校验摘要、差异项、成功截图。 **规则**:有差异即阻断 M5;差异项应展示“合同值/状态中心值/返利中心值”,转采购或计划员确认。 ### N08 M5 采购订单创建(1055) **目的**:依据已审核合同和返利中心协议,在 M5 的采购订单管理 `1055` 中创建采购订单。 **输入**:合同系统单号、返利中心协议结果、供应商、货品、数量、结算方式、承付模式、单价、货源/联系人信息。 **RPA 操作**: 1. 登录 M5,进入采购订单管理 `1055`。 2. 新增采购订单和细单。 3. 选择供应商、货品、货源。 4. 填写结算方式、承付模式、数量、单价等字段。 5. 执行页面校验并保存。 6. 读取采购订单号。 **数量规则**:计划员需要确认采购数量是否不超过供应商可供数量;状态中心应保留合同数量、录入数量和差异说明。 **货源规则**:按合同管理联系人/业务配置选择货源;无法唯一确定时转计划员或采购,机器人不得自行选择。 **异常**:质管基础资料未维护、货品不存在、货源不唯一、金额或数量校验失败,分别转质管、计划员或采购;控件和登录问题转运维。 **成功判定**:M5 查询到采购订单号,且订单供应商、货品、数量、单价与输入校验一致。 ### N09 收货通知单生成 **目的**:采购订单完成后通知仓库即将到货的货品和来源。 **输入**:M5 采购订单号及细单。 **RPA 操作**:进入收货通知单功能,基于采购订单生成通知单,保存并读取通知单号。 **成功判定**:收货通知单号已生成,且其供应商、货品、数量与采购订单一致。 **异常**:订单未完成、重复生成、仓库信息缺失、页面/登录失败,分别转业务角色或运维;重复操作必须先检索已有通知单。 ### N10 流程归档 **目的**:以真实业务结果为准完成归档,形成可审计的完整轨迹。 **归档内容**:合同原件、OCR JSON、映射快照、返利中心总单号、导入结果、M5 订单号、收货通知单号、关键截图、运行日志、人工处理记录。 **成功判定**:所有必需业务编号已回写状态中心,关键节点成功,审计事件完整;页面点击完成但未拿到业务结果不得归档为成功。 ## 5. 状态机、重试与异常处理 ### 5.1 节点状态 `PENDING`、`RUNNING`、`WAITING_USER`、`SUCCESS`、`FAILED_RETRYABLE`、`FAILED_MANUAL`、`CANCELLED`。 允许迁移: `PENDING -> RUNNING -> SUCCESS`; `RUNNING -> WAITING_USER -> RUNNING`; `RUNNING -> FAILED_RETRYABLE -> RUNNING`; `RUNNING -> FAILED_MANUAL`; `WAITING_USER -> CANCELLED`。 同一节点同一时刻只能有一个有效执行上下文;重试产生新的 `attempt_no`,不得覆盖历史失败记录。 ### 5.2 异常分流表 | 异常 | 默认处理角色 | 系统动作 | | --- | --- | --- | | 文件命名不规范/缺页 | 计划员 | 不启动 RPA,创建待办 | | OCR 低置信度/关键字段缺失 | 计划员 | 展示原文和建议值,等待确认 | | 供应商或货品无法映射 | 计划员/采购 | 阻断下游,保留映射候选 | | 合同未审核通过 | 计划员 | 停在前置节点,不进入返利中心 | | 返利中心找不到总单 | 采购 | 自动重试后转人工确认 | | 返利中心模板导入失败 | 采购 | 保留逐行错误,允许修正后重试 | | M5 质管资料缺失 | 质管 | 处理基础资料后重试 | | 登录、控件、页面结构变化 | 运维 | 截图、日志、运行号齐全后告警 | | 节点超时无回调 | 运维 | 超时关闭执行上下文并升级 | | 多次失败或超出能力 | 运维/项目负责人 | 转人工,禁止无限重试 | ### 5.3 重试策略 - 系统型异常(超时、偶发网络错误):自动重试 1 至 2 次。 - 业务型异常(映射不确定、校验失败):人工确认后只重试当前节点。 - 人工接管:进入 `FAILED_MANUAL`,保留上下文,不允许后台自动反复拉起。 - 整单重跑:新建流程实例并关联原 `parent_job_id`,不覆盖原轨迹。 - 待办超过 30 分钟未处理再次提醒,超过 2 小时升级备岗/项目负责人;具体时长可配置。 ## 6. 手机待办与企业微信需求 ### 6.1 待办内容 每条消息至少包含:合同编号、供应商、当前节点、错误/待确认原因、关键字段摘要、最近错误截图、处理链接、预计处理时间。 ### 6.2 H5 详情页 页面必须支持: - 查看当前人话状态:系统正在做什么、通常耗时、下一步是什么。 - 查看 OCR 原值、系统建议值和当前填写值。 - 只编辑角色有权限修改的白名单字段。 - 查看最近截图、错误翻译和处理历史。 - 执行确认并继续、重试当前节点、转人工、终止本单。 - 提交后立即返回“已受理、请勿重复提交、预计多久有结果”。 ### 6.3 人工修改留痕 合同编号、供应商、结算方式、承付模式、货品编码、数量、单价、货源等字段的修改,必须记录修改前值、修改后值、修改人、时间和原因。 企业微信只展示必要摘要,完整合同和日志通过状态中心受控页面查看;查看和下载动作也要进入审计日志。 ## 7. 状态中心与数据要求 ### 7.1 核心实体 | 实体 | 用途 | | --- | --- | | `job` | 一份合同的一次流程实例 | | `job_node` | 每个节点每次尝试 | | `user_task` | 企业微信/H5 人工待办 | | `mapping_config` | 供应商、货品、结算、承付和路由配置 | | `executor_binding_config` | 节点和 RPA 平台绑定 | | `job_artifact` | 合同、OCR、模板、截图、日志存证 | | `job_event` | 全流程事件轨迹 | ### 7.2 幂等要求 - 入池幂等:文件哈希 + 文件名 + 时间窗口。 - 业务幂等:合同编号 + 合同类型 + 供应商 + 来源。 - 节点回调幂等:`job_id + node_code + attempt_no + callback_type`。 - 手机提交幂等:`task_id + action + submit_token`。 - 业务系统执行前先检索已有单号,避免重复创建采购协议、采购订单和收货通知单。 ### 7.3 证据要求 每个节点至少记录:节点编码、开始/结束时间、执行平台、运行号、错误码、业务摘要、截图、日志、当前责任角色、重试次数。 推荐目录:`job_id/节点编码/attempt_no/`。 ## 8. 统一 RPA 节点契约 RPA 平台只通过状态中心接口交互,禁止直接改状态中心数据库。 节点回调至少包含: - `jobId` - `nodeCode` - `attemptNo` - `executorPlatform` - `executorRunId` - `status` - `errorCode/errorSummary` - `businessRefs` - `summary` - `artifacts` - `callbackIdempotencyKey` 建议节点编码: `FILE_INTAKE`、`OCR_EXTRACT`、`FIELD_MAPPING`、`CONTRACT_SYSTEM_CHECK`、`REBATE_ORDER_HEADER`、`REBATE_IMPORT_ITEMS`、`REBATE_VERIFY`、`M5_CREATE_ORDER`、`M5_RECEIPT_NOTICE`、`ARCHIVE_JOB`。 ## 9. 验收标准 ### 9.1 主流程验收 - 合同从共享目录入池后可生成唯一流程单。 - 完整且规则明确的合同可自动跑到 M5 和收货通知单。 - 可查询合同系统单号、返利中心总单号、M5 订单号、收货通知单号。 - 每个节点均有开始、结束、结果和证据。 ### 9.2 安全与正确性验收 - 低置信度和多值映射不会被机器人猜测通过。 - 合同未审核通过不会进入返利中心。 - 重复上传、重复回调、重复点击不会生成重复业务结果。 - 部分导入失败可查看逐行明细,不会被误判为成功。 - 整单重跑不覆盖历史实例。 ### 9.3 协同验收 - 计划员、采购、质管、运维收到的待办角色正确。 - 手机端能看懂卡点、原因、处理动作和预计等待时间。 - 人工修改有前后值对比和审计记录。 - 提交后有即时受理回执,重复点击有幂等反馈。 ## 10. 测试场景 1. 正常年度协议:字段完整,自动完成主链。 2. 正常批次合同:合同有效期一个月,先录产品再进入细单。 3. OCR 低置信度:转计划员,修正后继续。 4. 承付模式未命中字典:不得自动猜,转计划员确认。 5. 供应商/货品一对多映射:转人工选择。 6. 合同系统未审核通过:流程停止,不启动返利中心。 7. 返利中心模板全部成功:进入结果校验和 M5。 8. 返利中心部分导入失败:记录逐行结果,转采购处理。 9. M5 质管资料未维护:转质管,修复后重试。 10. 执行平台登录失败:自动重试后转运维。 11. 页面结构变化:截图、日志、运行号完整,转运维。 12. 同一合同重复上传:拦截并提示已有流程。 13. 企业微信待办重复提交:只推进一次。 14. 节点长时间运行:超时升级,不允许永久停留在运行中。 15. 新单切换执行平台:业务状态、待办和审计口径不变。 ## 11. 上线前待确认事项 以下事项必须由业务、实施和技术共同拍板后写入配置或测试用例: - 合同系统“送审”是否由机器人执行。 - 合同系统的审核通过状态名称和可查询方式。 - 批次合同有效期是否始终默认为一个月。 - 返利合约字段是否一期固定为“否”。 - 合同文件命名规则、共享目录、文件权限和清理周期。 - OCR 置信度阈值及每个字段的必填性。 - 计划员、采购、质管和运维的实际企业微信角色映射。 - 各节点自动重试次数、超时阈值和工作时间。 - 返利中心部分成功后的补导规则,是否允许重导失败行。 - 货源选择规则和供应商可供数量校验口径。 - 生产和测试账号、RPA 运行机、企业微信可信域名。 - 合同、供应商和截图的查看权限、脱敏方式、保留周期。 ## 12. 后续扩展方向 后续可在本期状态中心和待办体系上扩展: - 订单中心货源拆分、分货和销售订单联动。 - 招采子系统每日医院计划抓取及订单中心生成。 - 发货后的一票、二票信息归集和上传。 - 渠道价维护。 这些流程应复用本期的 `job/job_node/user_task/job_event`、规则版本、幂等和证据体系,不应重新建设一套孤立机器人流程。