EAI Robotics — 流程 / 字段 / 责任 合理性分析

基于 5 个源文件做批判性 review · 挑设计层面的问题 · 给出优化建议
7.0
B 良好(有可优化空间)
三角度加权平均(满分 10)
① 流程结构
8.0 / 10
② 字段建模
6.0 / 10
③ 责任归属
7.0 / 10

核心结论:流程结构本身设计合理(业内 Order-to-Delivery 经典模型 + 控制门 + 仓库分流),主要问题集中在数据建模层——配件 / 标签 / 文档用 23 列宽表是反模式,应改子表; Master sheet 还保留 B/L/P 三套并列状态,是 82 个字段冲突的根因之一;责任归属层"做事人"vs"录入人"混淆,需要"字段 owner"制度收敛。

角度 1 流程结构合理性 8.0 / 10

10 阶段 P0-P9 + 6 控制门 + 6 仓库 + 6 分支 + 3 终态扇出 — 整体符合业内 Order-to-Delivery 经典模型,结构本身没有大问题。

✅ 设计得好的地方

  • P0-P9 阶段划分清晰,符合制造-物流-销售-售后的经典流
  • G5 Payment Validation 标硬阻塞 — OOW 售前的"先付款再交付"行业铁律
  • 6 仓库 W1-W6 跟流程节点 1:1 对应,物理-逻辑一致
  • RLE bypass 分支设计合理(无需改装直接进可售)
  • 3 终态扇出(Repair / Quote&Approve / Cancel-Scrap)覆盖售后所有出口

⚠️ 可优化的地方

  • 节点粒度不一致(P3 合并 5 动作为 2 节点,P9 又拆得过细)
  • CLOSED 把 Cancelled / Scrap / 智元换货 混作一个终态
  • "残值再售"路径(REPAIRED → BRANDED_READY)没明确画线
  • G6 客户验收 vs PGI 过账时序模糊
  • G4 也应该是硬约束但没标 critical

具体问题

Cancel/Scrap/智元换货 合并 CLOSED 是错误设计
流程图把 3 种处置都路由到 CLOSED 终态,用 终结原因 字段区分。但语义差别巨大:
  • Scrap 报废:机器人物理消亡 → 真终态
  • Swapped-to-AGIBOT 换货:返厂换新机 → 真终态(对这台机器人)
  • Cancelled 订单取消:机器人没坏,应该回到可售库存 → 不是终态
Cancelled 之后 stage 应该转 BRANDED_READY 重新出售,而不是 CLOSED。当前设计会导致"取消订单的机器人"在系统里被注销,账实不符。
把 CLOSED 拆成 SCRAPPED(报废) / SWAPPED(返厂换货) / CANCELLED(订单取消,触发回流到 BRANDED_READY)。Cancel 不应该是终态。
节点粒度不一致
同样是 WBS Tier 2 子任务,处理方式不一致:
  • P3 把 订舱 + 中方报关 + 国际运输 + 美国清关 + 关税处理 5 个动作合并成 3 个节点(IN_TRANSIT / BONDED / CUSTOMS_CLEARED)
  • P9 把发起 RMA + 签收这 1 个 RMA 流程拆成 2 个节点(RETURN_INITIATED + RETURN_RECEIVED)
  • Delivery Approval + Delivery Validation 都是审批/验证,被拆成 2 个节点;但 P7 整个交付预约只 1 个节点
建立节点粒度规则:是否独立节点的判定 = "是否有独立的责任人/系统 + 是否需要独立的 stage 状态"。要么都拆,要么都合。
"残值再售"路径未明确
REPAIRED 节点描述"回 DELIVERED 或 BRANDED_READY",但没画线。实际上修复后回 BRANDED_READY 二次销售是常见路径(残值管理),应该明确。
在 REPAIRED → BRANDED_READY 之间画一条虚线分支,标注"残值再售";同时区分 REPAIRED → DELIVERED 是"修复后返还原客户"。
G6 验收 vs PGI 过账时序
G6 "Delivery Accepted" 之后是 DELIVERED 节点(含 PGI 过账)。但 PGI 是 SAP 系统的自动过账事件(库存减少 + 收入确认),不是人为动作。当前节点把"客户验收"和"PGI 过账"合并,可能掩盖了两步之间的时间差。
把 DELIVERED 拆成 ACCEPTED(客户已验收)+ PGI_POSTED(系统自动过账),或者明确标注 PGI 是"G6 后自动触发"。
G4 也应该是硬约束
所有 Gate 本质都是硬约束(否则就不是 Gate)。G5 标 critical 是因为它最容易出问题(OOW 售前付款),但 G4 没合同也不能进 RESERVED。视觉上 G5 红色,G4 黄色,可能传达"G4 软"的错误信号。
G4 也用 critical 样式,或者所有 Gate 统一视觉,靠子标签区分"业务关键度"。

角度 2 字段建模合理性 6.0 / 10

这是问题最集中的一层。81 列宽表把 BOM/Label/文档/标签 4 个 1-N 关系硬拍成 23 列散字段,违反数据库设计第二范式(2NF);同时 B/L/P 三套并列状态字段是数据冲突的根因。

✅ 设计得好的地方

  • 81 列字段覆盖端到端业务,无明显遗漏
  • 17 个 Enum 用单独 sheet 拆出来,字典管理意识强
  • v3 做了 188 次数据清洗,治理意识强
  • Conflicts sheet 公开记录冲突,治理透明
  • Field Mapping sheet 明确每个字段的源系统映射

⚠️ 可优化的地方

  • BOM 配件 10 列宽表(违反 2NF)
  • Label 7 列宽表(违反 2NF)
  • 文档链接 6 列宽表(违反 2NF)
  • B/L/P 三套状态字段(82 字段冲突的根因)
  • 字段命名风格混杂(Status/State/Stat 三种写法)
  • 没枚举校验,靠事后清洗(188 次)
  • 缺审计字段(created_at / updated_by / version)
  • FF SN (key) + FF SN 重复列

具体问题

BOM 配件 10 列散字段 — 应该拆子表
Master sheet 第 69-78 列:Robot · Battery · Remote · USA Power cable · CN cable w adapter · Power supply · Charging dock · foot pads · tools/spare kit · paperwork。 这本质是机器人主档 1 : N 配件的关系,硬拍成 10 列散字段:
  • 不能扩展:未来增加配件(如 "Camera mount")就要改 schema
  • 每种配件的"序列号 / 状态 / 数量 / 来源"都没法记录
  • 无法做"配件追溯"(这台机器人的电池是哪批次?什么时候换的?)
  • 稀疏数据:可能有大量空值
拆子表 RobotAccessory(robot_sn, accessory_type, sn, qty, status, batch_id, received_at, replaced_at)。 配件类型用枚举(Battery / Remote / Cable-USA / Cable-CN / 等)。每个配件可以独立追溯。
Label 7 列散字段 — 同样应该拆子表
Master sheet 第 62-68 列:Label, body - FCC · Label, body Made in CN · Label, SN Body · Label, SN remote · Label, Battery SN · Label, Inspection Sheet · Label, Shipping box。 7 个合规标签字段,语义都是"这个 label 贴了没",本质是 1 : N 关系。
拆子表 RobotLabel(robot_sn, label_type, applied, applied_at, applied_by, evidence_url)。 可以记录每个标签的贴附时间、贴附人、留证照片。
文档链接 6 列散字段 — 同样应该拆子表
Master sheet 第 56-61 列:Robotics Sales Agreement · Deposit Transfer Form · Deposit Transfer Contract (Car) · Superone Cocreation · Robotic Cocreation · Shipping Receipts。 6 列文档链接,本质是 1 : N 关系。未来增加文档类型就要改 schema。
拆子表 RobotDocument(robot_sn, doc_type, url, uploaded_at, uploaded_by)。 doc_type 用枚举管理。可以查"这台机器人的所有文档"。
B/L/P 三套并列状态 — 82 字段冲突的根因
Master 第 7/13/33 列:Status (Build) / Lifecycle Status / Physical Product Status 三套独立状态字段。 源文件 Conflicts sheet 显示82 个字段级冲突,其中大量是"同一台机器人的状态在 4 个上游源里写法不同"。 需求分析.md §5 已经设计了 state-as-node 单字段方案(21 状态值),但 Master sheet 本身没改。
Master sheet 用 stage(21 状态值)+ health(Normal/Hold/Issue)+ track(Retail/RLE/Rental/...)+ location 四个正交字段替代 B/L/P 三套并列。 需求分析.md §5.3 已给无损映射表。
没有枚举录入校验,靠事后清洗
Cleaning Log 188 次清洗 — 全部是signed → Signed / lease → Lease / yes → Yes 这种 title-case 修复。 这意味着录入时根本没用 Enum 字典约束,4 个上游源都是 free-text 输入,事后才统一。
录入界面强制用 dropdown 选 Enum 值,禁止 free-text。如果是 Excel/D365 录入,加 data validation 规则。这样可以从源头消灭 188 次清洗负担。
缺审计字段
Master 81 列没有 created_at / updated_at / created_by / updated_by / version / is_deleted 这种基础审计字段。 字段级"by"字段散落(collected_by / requested_by / approved_by / validated_by / received_by / initiated_by),但没有统一的记录维护时间线
每张子表(Robot / SalesOrder / Payment / DeliveryRequest / AfterSalesTicket)都加标准审计字段。这是任何业务系统的基础设施。
字段命名风格混杂
同一类型字段命名风格各异:
  • 状态:Status (Build) / Lifecycle Status / Physical Product Status / Logistics Status / Payment / Contract Status / Delivery Status — 有的带 Status 后缀,有的不带
  • 备注:Issue / Notes / Comments / Add'l Notes (Shipping) / Note (Pre-Del) / Compliance Notes / Customer Feedback — 命名规则混乱
  • 日期:Date ready / Purchase Date / Arrival Date / Expected Delivery Date / Delivery Date — 有的首词大写有的不
  • SN:FF SN (key) / FF SN / Supplier SN — 重复列 + 命名不一致
定字段命名规范:{entity}_{attribute} 全小写下划线(如 robot_status_build / shipping_note / purchase_date),重构时统一改名。
FF SN (key) 跟 FF SN 重复列
Master 第 1 列 FF SN (key)、第 3 列 FF SN,存的是同一个值。这是 v3 引入的"主键 vs 显示"分离,但对实际数据没意义。
删除第 3 列,保留主键列即可。

角度 3 责任归属合理性 7.0 / 10

16 个责任人覆盖完整,5 个 Section 归类清晰。主要问题是"做事人 vs 录入人"混淆、字段级 owner 缺失(导致 82 个冲突)、关键人单点故障。

✅ 设计得好的地方

  • 16 个责任人覆盖完整(流程图 100% 命中)
  • 5 个 Section 归类清晰(供应链 / 仓储 / 销售 / 财务 / 售后)
  • 每个节点都有明确责任人,不留盲区
  • P0 治理层独立(Ricky + Corp Ops)
  • 双责任人节点(如 Delivery Approval = Fiona + Louie)体现交叉验证

⚠️ 可优化的地方

  • "做事人" vs "我方录入人"混淆(Painting 节点已暴露)
  • 字段级 owner 缺失,4 个上游源都能写同一字段
  • Fiona Xu 单点故障(4 个关键节点都在她身上)
  • Quote & Approve 责任人语义错配(应该是销售非售后)
  • PGI 没区分"触发人"和"系统自动"
  • 没有备份责任人 / 升级路径

具体问题

字段级 owner 缺失 — 是 82 个冲突的根本原因
Master_Metadata Field Mapping 显示同一字段(如 Customer)来自 4 个上游源(Inventory / Pre-Delivery / Lifecycle / Sales),每个源都可以写 — 所以会出现冲突:
  • FXA1126030000013 的 Customer:Inventory 写 "Allison (Mark Sun)",Sales 写 "Allison Madow" — 哪个对?
  • FXA1226030000020 的 Sales Order ID:Inventory 写 "FF-RB-20260004",Sales 写 "ORD-01028-N1X0K0" — 完全不同
流程图标注的是"节点责任人",但没有"字段责任人"。"谁是 Customer 字段的唯一 owner"这个问题没答案。
建立字段 owner 制度:Master 81 列每个字段定一个唯一 owner(人 + Section + 上游源)。 其他源对该字段只读。比如 Customer 由 Sales 唯一写,Inventory/Pre-Delivery 只读引用。Field Mapping sheet 加 owner 列。
Fiona Xu 单点故障
Fiona Xu 一个人负责:12 RESERVED (SO 创建) + 13 PAYMENT_VALIDATED (G5 关键审批) + DA Delivery Approval + 17 ON_RENTAL (租赁) — 销售 + 财务 + 交付 4 个核心节点。 Fiona 一旦休假,整个销售/财务流程卡住。G5 还是硬阻塞,没人替她审批就交付不了。
每个关键节点(特别是 Gate 类)配备份责任人 + 升级路径。G5 这种 critical 节点应该有"主审批人 + 二审备份 + 24h 超时升级"。
"做事人" vs "我方录入人"混淆
源文件 Painting 节点责任人写 "supplier-side"(供应商喷漆),但供应商不会在我们系统里录入数据。 这种"做事人 ≠ 录入人"的混淆已经在 IN_PRODUCTION 节点上暴露并被修正(改成 Sherry 跟踪)。但其他节点可能也有类似问题没被发现
确立设计原则:节点的"责任人"始终是我方系统的录入人/操作人,不是"做事的人"。审视所有节点排查类似混淆。
Quote & Approve 责任人语义错配
QA Quote & Approve(OOW 报价审批)当前责任人是 David Michaelis · Chris Chen。但 OOW 报价是商业决策(涉及给客户报多少钱、能否谈价),应该是销售/商务的职责。 David 是 Service 团队,Chris Chen 推测是 IT Admin。技术人定价业务上不合理。
QA 节点责任人应该包含销售代表(如 Fiona / Louie)来定价并跟客户沟通。David 是技术评估(修不修得好),Chris 是 IT 系统操作 — 应该明确各自做哪部分。
PGI 没区分"人为触发" vs "系统自动"
DELIVERED 节点责任人是 Hongliang Liu · Mike Domke 标注做 "PGI 过账"。但 PGI 是 SAP 自动事件,本质是系统动作。 实际上 Hongliang/Mike 是触发人(点 PGI 按钮),但收入确认是会计的事 — 责任边界模糊。
区分"用户触发的人为动作"vs"系统自动动作"。节点责任人 = 人为动作的执行人,系统自动动作单独标 🤖。
责任人 vs 数据源混淆
流程图"责任人"和 Master_Metadata 的"4 个上游源"是两个维度,但有交叉。比如 Inventory 源由谁维护?流程图没体现。Sales 源数据由 Fiona 写?还是有专门的 Sales Ops?
建立"上游源 × 责任团队"映射表,跟节点责任人区分开。

总评 优化优先级矩阵(按 ROI 排序)

15 个优化项按"影响大小 × 紧急程度"排序。P0 是必须做、P3 是可以缓做。
P 优化项 归属角度 影响 工作量
P0 BOM 配件 10 列拆子表 字段建模 扩展性 + 配件追溯能力 中(2-3d)
P0 Label 7 列拆子表 字段建模 合规追溯 + 留证管理 中(2-3d)
P0 文档链接 6 列拆子表 字段建模 文档管理 + 类型扩展 小(1-2d)
P0 字段 owner 制度(消除字段冲突根因) 责任归属 消除 82 个字段冲突 中(流程改造)
P0 Cancel/Scrap/智元换货 拆开 流程结构 避免账实不符 小(1d)
P1 B/L/P 三状态合并为 stage 单字段 字段建模 消除 50%+ 状态冲突 大(涉及 4 上游源改造)
P1 录入端枚举校验(替代事后清洗) 字段建模 消除 188 次清洗负担 中(改 D365 / Excel)
P1 Fiona 单点故障 — 加备份责任人 责任归属 业务连续性 小(组织变更)
P1 残值再售路径(REPAIRED → BRANDED_READY)画明 流程结构 残值管理可见 小(图改一下)
P2 补审计字段(created_at / by / version) 字段建模 历史追溯能力 小(schema 加列)
P2 字段命名规范统一 字段建模 开发体验 中(重命名 + 兼容)
P2 节点粒度统一规则 流程结构 建模一致性
P2 Quote & Approve 责任人增加销售 责任归属 定价决策合规
P3 区分"人为触发" vs "系统自动" 责任归属 视觉清晰度
P3 删除 FF SN (key) 重复列 字段建模 清洁度 极小
📌 推荐第一步 做 P0 的 5 项(特别是 BOM/Label/文档 3 张子表 + 字段 owner + Cancel 拆开)。这 5 项可以在 1-2 周内做完,能消除 80% 的根本性设计债,是 ROI 最高的改造。 其他优化可以分批进行。