EAI Robotics — 当前实现 vs 需求 差距报告

workspace 仓库 robot-manager 模块 vs 5 个源文件需求 · 列差距 + 估工作量
6–8
人周(一人开发)
改动不大 · ROI 高

好消息:robot-manager 模块已经是 v3 现代化架构(骨架 + JSONB metadata + 动态字段定义 + 统一字典表 + 业务实体 FK),核心架构无需重做

这意味着我们梳理的需求里 ~80% 的字段补齐可以纯配置完成(加 RobotFieldDef 行 + 默认数据),不用改代码。真正需要写代码的是:

  • RobotStatus enum 从 10 个扩到 21+ 个状态
  • 5 个新 Guard(G1-G6 业务校验)
  • 2-3 个新子表(Payment / SalesOrder / DeliveryRequest,可选)

整体工作量:P0 (2-3 周) + P1 (3-4 周) 即可达到需求覆盖 95%+。

现状 已经实现的(不用改) v3 架构 · 设计先进

workspace 仓库 robot-manager 模块当前已经覆盖了需求的大部分基础架构。这是个 v3 重构后的现代化设计。
现有能力覆盖需求说明
RobotUnit 一机一档(骨架+JSONB) 对应需求"机器人主档",且解决了"81 列宽表"问题
5 张业务实体表(Model/Sku/Supplier/Customer/Location) 跟需求 §1 「业务实体表 5 张」对齐
RobotFieldDef 动态字段定义(31 个字段 / 6 group) 架构对了,字段数还不够,加配置即可
RobotOption 统一字典(10 category) 对应需求 §1 OptionDict
RobotStatusChangeLog 状态变更日志 支持完整审计
RobotAttachment 附件表(合同/发票/图片) 文档链接 6 字段、配件 BOM 都可走此表,不需要新建
RobotServiceRecord 服务记录 对应需求 AfterSalesTicket(部分)
审计字段齐全(createdAt / updatedAt / createdBy / updatedBy / deletedAt / version) 已有乐观锁 + 软删除
RobotSystemConfig(FFSN 规则 / 状态-Location 映射) 对应需求 SystemConfig
状态机 transition 表 + Guard(部分) 部分 有 4 个 Guard,但 G1-G6 还没全做
权限:robot-manager:* 全局权限 部分 有全局权限,缺 Section 级细化
Excel 导入导出 + 字段映射 需要更新映射表加新字段

P0 必做 ① 状态机扩展(10 → 21+ 状态) M 3-5 天

现状 enum 缺 11 个状态,主要是供应链上半段(工厂在制 → 清关 → 收货 → 改装)+ 售后分支细化。
需求状态现状说明
PO_CREATED对应 ORDERED
IN_PRODUCTION工厂在制
READY_TO_SHIP工厂可发运
IN_TRANSIT
BONDED
CUSTOMS_CLEARED清关完成(现合并在 BONDED→IN_STOCK 转换中)
RECEIVED / AT_W1_PDI合并现合在 IN_STOCK,可考虑拆开
UNDER_MODIFICATION本地化改装中
CONVERSION_VALIDATED改装已验证
BRANDED_READYW4 可售(现在用 IN_STOCK 表达)
RESERVED
PAYMENT_VALIDATED对应 SOLD 但语义更明确(G5 后)
READY_FOR_DELIVERY准备交付
DELIVERED
AT_W2_RLE外采库分支
ON_RENTAL租赁分支
UNDER_REPAIR对应 REPAIR
REPAIRED
RETURN_INITIATED / RECEIVEDRMA 拆 2 步
CLOSED (SCRAPPED / SWAPPED / CANCELLED)合并现只有 CANCELLED,缺 SCRAPPED / SWAPPED 子类型
改动文件 backend/prisma/schema/robot_manager.prisma(RobotStatus enum)+ backend/src/modules/robot-manager/services/robot-status.service.ts(VALID_TRANSITIONS + 副作用)+ 数据迁移脚本(现有 SOLD/IN_STOCK 拆分映射)

P0 必做 ② 字段补齐(31 → ~50 个动态字段) S 2-3 天 · 纯配置

现状 31 个 RobotFieldDef → 需要补 ~20 个。这是配置数据补齐,不需要改代码。在管理台界面加字段即可,或写一个 seed 脚本。
Group现有需补缺什么
identity(身份) 5 +2 health(健康度横切)/ track(分流路径)
supply-chain 6 +3 variant 型号变体 / paintingColor 喷漆 / factoryQcStatus 工厂 QC
sales 10 +4 signedFormStatus / acceptanceFormStatus / deliveryNumber / mentor
finance 3 +3 salesPriceHardware / salesPriceSoftware(如果不已存在)/ paymentStatus
compliance 4 +2 htsCode / customsDoc
after-sales 3 +3 returnStatus / disposition / repairType
横切(备注类) 0 +3 issue / generalNotes / complianceNotes(catch-all 系列)
✨ 配置即字段 v3 架构的好处:加 20 个业务字段 = 在 RobotFieldDef 表插 20 行配置 + 给 select 类型的字段在 RobotOption 字典加 category。不需要改 Prisma schema,不需要改 controller/service 代码,不需要数据库迁移。可以由业务人员在管理台界面添加。

P0 必做 ③ 控制门 Guard 补全(4 → 10 个 Guard) M 2-3 天

现状 status service 已有 4 个 Guard,但 G1-G6 业务校验大部分还没实现。
Gate转换现状需补
G1→ READY_TO_SHIP预测锁定校验
G2READY_TO_SHIP → IN_TRANSIT出厂 QC 完成
G3BONDED → CUSTOMS_CLEARED清关凭证
G4IN_STOCK → RESERVEDcustomerId 必填contractStatus = 'Signed'
🔴 G5RESERVED → PAYMENT_VALIDATEDsalesPrice 必填payment.status = 'Paid' OR financingApproval = true(硬阻塞)
G6READY_FOR_DELIVERY → DELIVEREDacceptanceForm.status = 'Complete'
◆ ConversionUNDER_MODIFICATION → CONVERSION_VALIDATED验证证据上传
◆ Return InspectionRETURN_RECEIVED → UNDER_REPAIR检查报告 + 处置判定
改动文件 backend/src/modules/robot-manager/services/robot-status.service.tsvalidateGuardConditions() 增 6 个 Guard 检查。配套错误码errors/robot-manager.errors.ts 加。

P1 重要 ④ 新建 3 个独立子表(Payment / SalesOrder / DeliveryRequest) L 1-2 周

需求 §1 把这 3 个定义为独立业务表,现状全塞在 RobotUnit.metadata JSONB 里。短期能用,但限制了"一台机器人多次交付/多笔付款"的场景。
现状建议
RobotPayment 字段在 metadata(payment_method / payment_status / amount) 独立表,1 robot : N payment(支持订金 + 尾款)
RobotSalesOrder 字段在 metadata(salesOrderId / contractStatus / mentor / mentee) 独立表,1 robot : 1 active order(保留历史订单)
RobotDeliveryRequest 字段在 metadata(requestType / deliveryStatus / acceptanceForm) 独立表,1 robot : N delivery(首次交付 + 售后再交付)
是否真要做? 取决于业务规模 — 117 台机器人当前每台一笔订单/付款/交付,metadata 扁平方案短期足够。 但如果接下来要支持租赁回流、售后再售、多笔分期,必须拆。建议至少先建 RobotPayment(订金+尾款是普遍场景)。

P1 重要 ⑤ 字段 Owner 制度(Section 级权限细化) M 3-5 天

需求 §3 + 合理性分析里指出 82 个字段冲突的根因是"没有字段 owner"。现状 robot-manager 只有全局权限 robot-manager:*,缺 Section 级。
改动说明
RobotFieldDef 加 ownerSection Supply-Chain / Warehouse / Sales / Finance / After-Sales / Governance
权限校验:update 时校验用户 section 与 field.ownerSection 匹配 在 RobotUnitService.update() 加
VALID_TRANSITIONS 的 roles 字段升级为代码强制 当前是文档意图,未代码强制(04-state-machine.md 注释提到)
stage / currentStatus 升级为"系统只读" 只能通过状态机 transition API 改,不能通过 metadata edit API 直接覆盖

P1 重要 ⑥ 业务报表补全(3 → 8 张) M 1 周

现状 PRD V1 已实现 3 张(库存 / 销售 / 财务),需求 §4 共 8 张。
报表现状
R1 库存周转报告已实现
R2 在途与清关报告
R3 销售管道报告已实现
R4 交付进度报告
R5 收款状态报告
R6 收入确认与毛利已实现
R7 售后回流分析
R8 数据健康度报告

P2 缓做 ⑦ 其他小项 S 共 1-2 天

工作量说明
仓库 W1-W6 seed 初始化 + status→location 映射S 1d配置层
Excel 模板更新(新字段 + 新状态)S 1d配套 ① + ②
Field 命名规范统一S 1d批量改 RobotFieldDef
"系统自动 vs 人为触发"在 status change 区分S 1d加标识字段
✨ 不在范围(业务自然消失)
  • 多源数据治理(4 个上游源 + 82 字段冲突 + DataConflictLog):一旦数据统一进 FFOA 单一系统,"多源"问题自然消失,不需要做 LSync。
  • WBS 项目管理 / 客户管道 GTM:不在 robot-manager 模块职责内,是独立模块。

汇总 工作量与时间线

优先级工作量天数
P0① 状态机 10→21M3-5d
P0② 字段补齐 31→50(配置)S2-3d
P0③ Guard 4→10M2-3d
P0 小计~2 周
P1④ 3 个新子表(Payment/SO/Delivery)L1-2w
P1⑤ 字段 Owner / Section 权限M3-5d
P1⑥ 报表 3→8M1w
P1 小计~3-4 周
P2⑦ 其他小项S × 44-5d
总计一人开发,串行6-8 周
📌 推荐节奏

第 1 阶段(2 周 · P0):状态机扩展 + 字段配置补齐 + Guard 补全。这一阶段完成后,流程图就可以在系统里"跑起来",每台机器人能完整走 21 个状态。

第 2 阶段(3-4 周 · P1):拆子表 + 字段 Owner + 报表。这一阶段让系统具备"长期可维护性"和"业务可观测性"。

第 3 阶段(1 周 · P2):配置层完善 + 体验优化。