894 lines
44 KiB
Markdown
894 lines
44 KiB
Markdown
# 功能落地规格
|
||
|
||
> 本文把 [features.md](./features.md) 的每个功能点拆成可开发、可验收的落地规格。
|
||
> 状态仍以 `features.md` 为准;本文只定义“怎么落地”和“怎么验收”。
|
||
|
||
---
|
||
|
||
## 0. 使用方式
|
||
|
||
每个功能落地前必须先补齐以下信息:
|
||
|
||
| 项 | 说明 |
|
||
| --- | --- |
|
||
| 用户目标 | 计划员、主管、主数据维护员或集成管理员要完成什么工作 |
|
||
| 最小切片 | 第一个可上线版本必须包含什么;超出部分单列后续 |
|
||
| 权力等级 | P0 只读、P1 草稿/沙盒、P2 主干写入、P3 外部副作用 |
|
||
| 数据对象 | 读写哪些世界状态、知识资产、前端项目数据或外部系统对象 |
|
||
| API / 动作 | 页面点击和对话口令必须走同一动作路径 |
|
||
| UI 入口 | 从哪个面板进入、有哪些状态、空态、错误态 |
|
||
| 验收标准 | 可用业务语言复现的通过条件 |
|
||
| 测试要求 | 至少一条黄金测试、构建检查或 E2E 路径 |
|
||
| 文档同步 | 改 `features.md` / `journeys.md` / `harness.md` / `algorithm/*` / `CHANGELOG.md` |
|
||
|
||
通用完成定义:
|
||
|
||
1. 任何主干写入必须能在审计链看到 who/when/action/power/target/result。
|
||
2. 任何 P2/P3 动作必须先出确认卡,不能在页面里绕过 `/api/actions/confirm`。
|
||
3. 页面点击、命令面板和对话口令不能各走一套业务逻辑。
|
||
4. 报告、KPI、风险提示里的数字只能来自冻结快照或世界状态字段。
|
||
5. 已落地功能必须能被 `pytest tests/golden -q`、`npm run build` 或明确 E2E 路径验证。
|
||
|
||
---
|
||
|
||
## 1. 功能编号总表
|
||
|
||
| 编号 | 功能点 | 当前状态 | 目标里程碑 |
|
||
| --- | --- | --- | --- |
|
||
| MD-01 | 工厂/车间/产线/工位/设备资源树 | 已落地首切片 | M4 |
|
||
| MD-02 | 物料 / BOM / 工艺路线 | 已落地首切片 | M4 |
|
||
| MD-03 | 班次 / 日历 / 维保 | 已落地首切片 | M4 |
|
||
| MD-04 | Excel/CSV 导入管线 | ✅ 首切片 | M4 |
|
||
| OR-01 | 销售订单 / 明细管理 | 已落地首切片 | M4 |
|
||
| OR-02 | 优先级与权重配置 | ✅ 客户等级权重 | M4 |
|
||
| OR-03 | 订单池 / 审核 / 变更 | 已完成首切片 | M4 |
|
||
| OR-04 | 紧急插单专用流 | ✅ 快评+采用首切片 | M4 |
|
||
| SC-01 | RULE 规则引擎 | 已落地 | M1 |
|
||
| SC-02 | 策略模板 | 已落地 | M1 |
|
||
| SC-03 | CP / GA / HYBRID 真求解 | ✅ CP+GA+HYBRID 首切片 | M5 |
|
||
| SC-04 | 约束注册表 + 配置中心 | ✅ 首切片 | M4 |
|
||
| SC-05 | 多方案沙盒对比 | 已落地 | M2 |
|
||
| SC-06 | 主控参数 / 敏感性分析 | ✅ 首切片 | M5 |
|
||
| EX-01 | 草稿版本 + 发布 | 已落地 | M1 |
|
||
| EX-02 | 甘特 / 负荷 / 交期看板 | 已落地 | M1 |
|
||
| EX-03 | 冲突解决工作流 | ✅ 柔性冲突中心 + 一键修复 | M4 |
|
||
| EX-04 | 工单拖拽调程 | ✅ 柔性+固定甘特拖拽+P2 | M4 |
|
||
| EX-05 | MES 下发 / 报工 | ✅ Mock 下发+报工 | M4 |
|
||
| EX-09 | 报工回流与进度追踪 | ✅ 首切片 | M4 |
|
||
| AG-01 | 意图两级管线 | 已落地 | M1 |
|
||
| AG-02 | 门禁 P0-P3 | ✅ P2 单确认 + P3 二次确认 | M1/M2/M6 |
|
||
| AG-03 | 审计哈希链 | 已落地 | M2 |
|
||
| AG-04 | 知识检索 / RAG | 半落地 | M3/M5 |
|
||
| AG-05 | 报告生成 | 已落地 | M3 |
|
||
| AG-06 | 偏好缺省策略 | 已落地 | M3 |
|
||
| AG-07 | 主动引导 / 多模态 | ✅ 引导首切片(多模态 🔜) | M4/M6 |
|
||
| AG-08 | 项目 / 会话服务端化 | ✅ 首切片 | M4 |
|
||
| AG-09 | 检查点与时间线 | 已落地 | M2 |
|
||
| MD-05 | ERP/MES 双向集成 | ✅ Mock 入站/出站 | M4/M5 |
|
||
| MD-06 | 换型矩阵主数据 | ✅ 首切片 | M5 |
|
||
| MD-07 | 二级约束资源(工装/人员) | ✅ 模具+班组首切片 | M5 |
|
||
| SC-10 | 工装/模具约束 | ✅ 寿命/适配/锁定 | M5 |
|
||
| SC-11 | 人员技能/班组约束 | ✅ 人力并发+teamCode | M5 |
|
||
| EX-06 | 资源利用率分析视图 | ✅ 柔性设备/班组 | M1/M5 |
|
||
| OR-05 | 预测/长周期订单 | ✅ 首切片 | M5 |
|
||
| OR-06 | 订单钉扎溯源(pegging) | ✅ 固定+柔性双链 | M5 |
|
||
| SC-12 | 滚动时域排产 | ✅ realtime/short/mid/long | M5 |
|
||
| OR-07 | 订单分解 MRP(采购/委外建议) | 已落地首切片 | M4 |
|
||
| PL-01 | 时间分桶计划 | ✅ 首切片 | M5 |
|
||
| PL-02 | 有限/无限产能粗评估 | ✅ 首切片 | M5 |
|
||
| PL-03 | 可行性分析 | ✅ 首切片 | M5 |
|
||
| PL-04 | 库存投影 | ✅ 首切片 | M5 |
|
||
| PL-05 | 产能平衡/削峰 | ✅ 首切片 | M5 |
|
||
| PL-06 | 产供方向决策 | ✅ 首切片 | M6 |
|
||
| SC-07 | 顺序相关换型优化 | ✅ 首切片 | M5 |
|
||
| SC-08 | 批次/战役合并 | ✅ 首切片 | M5 |
|
||
| SC-09 | 物料齐套约束 | 半落地 | M1/M4 |
|
||
| EX-07 | 方案对比表 | ✅ 逐项 diff 矩阵 | M4 |
|
||
| EX-08 | KPI 仪表盘 | ✅ 独立视口 | M4 |
|
||
| EX-09 | 报工回流与进度追踪 | ✅ 首切片 | M4 |
|
||
| IND-01 | SMT 电子特化排产 | 未做 | M6 |
|
||
| IND-02 | 行业规则包(SOP→约束) | ✅ 首切片 | M5 |
|
||
| MD-08 | 设备虚拟档案(能力/移动/位置/工装适配) | 已落地首切片 | M5 |
|
||
| MD-09 | 工序能力产能池 | 已落地首切片 | M5 |
|
||
| SC-12 | 滚动时域排产 | ✅ realtime/short/mid/long | M5 |
|
||
| SC-13 | 正排/倒排/瓶颈锚模式 | 已落地首切片 | M5 |
|
||
| SC-14 | 虚拟产线组装 | 已落地首切片 | M5/M6 |
|
||
| PL-07 | 瓶颈产能评估 | 已落地首切片 | M5 |
|
||
| PL-08 | 交期承诺模拟 | 半落地 | M5 |
|
||
| EX-10 | 产能池仪表盘 | ✅ PoolCapacityView | M5 |
|
||
| DY-01 | 分级重排 L1–L4 | ✅ L1 换机 / L2–L4 P2 确认 | M5 |
|
||
| IND-03 | 柔性布局行业包 | ✅ 工作台验收剧本 | M5/M6 |
|
||
|
||
> 上表 MD-05 起含对标西门子 Opcenter APS 与 [demand-kangni-wuhu.md](./demand-kangni-wuhu.md) 真实需求新登记项;落地规格卡随各自里程碑开工时补齐。
|
||
|
||
---
|
||
|
||
## 2. 主数据功能
|
||
|
||
### MD-01 工厂/车间/产线/工位/设备资源树
|
||
|
||
用户目标:主数据维护员能维护可排产资源,计划员能在甘特和负荷里看到同一套资源骨架。
|
||
|
||
当前落地(M4 首切片):侧栏「主数据」→ 资源页签。树形展示工厂/车间/产线/工位/设备(`GET /api/master`,P0);产线可编辑名称/日产能/效率并停启用(`master.line.upsert`,P2 经 `POST /api/master/stage` 出确认卡)。停用产线由引擎 `find_product_lines` ACTIVE 过滤排除出新排产;黄金测试 `test_master_data.py::test_inactive_line_excluded_from_scheduling`。工位/设备编辑为后续切片。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | `factories`、`workshops`、`lines`、`workstations`、`equipment` |
|
||
| UI | 主数据管理页,左侧树形层级,右侧表单;支持新增、编辑、停用、查看引用 |
|
||
| API / 动作 | 规划 `master.resource.upsert`、`master.resource.disable`;主干写入按 P2 |
|
||
| 规则 | 被排产版本引用的资源不允许物理删除,只能停用;停用后不参与新排产 |
|
||
| 验收 | 停用一条产线后,新试排不会再把工单排到该产线;旧版本仍能查看历史名称 |
|
||
| 测试 | 种子资源加载测试;停用资源后 `RuleEngine` 不选该资源的黄金测试 |
|
||
|
||
后续切片:资源能力日历、设备 OEE、替代资源推荐。
|
||
|
||
### MD-02 物料 / BOM / 工艺路线
|
||
|
||
用户目标:维护产品结构和工艺步骤,让齐套检查、拆工单和工序顺序可解释。
|
||
|
||
当前落地(M4 增强切片):物料与BOM页签。物料可编辑库存/在途/安全库存/采购前置期(`master.material.upsert`,P2),变更直接联动下一次试排的齐套检查(`test_master_data.py::test_material_stock_zero_increases_shortage`)。选中成品后可编辑 **BOM 明细用量/关键料**(`master.bom.upsert`,P2,联动采购建议 `test_mrp.py::test_bom_quantity_edit_changes_purchase_quantity`)与 **工艺步骤准备/单件时间、外协标记**(`master.routing.upsert`,P2,外协标记联动委外建议)。BOM/路线版本发布、增删行为后续切片。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | `materials`、`boms`、`bomItems`、`routings`、`routingSteps`、`workstationOperations` |
|
||
| UI | 产品页含“物料/BOM/工艺路线”页签;步骤表支持拖动排序但保存前显示 diff |
|
||
| API / 动作 | 规划 `master.material.upsert`、`master.bom.release`、`master.routing.release`;发布类动作为 P2 |
|
||
| 规则 | BOM/工艺路线必须版本化;只有 ACTIVE + default 版本参与排产 |
|
||
| 验收 | 修改 BOM 用量并发布后,下一次试排的缺料数量随之变化 |
|
||
| 测试 | BOM 缺料数可复算;工艺步骤顺序不颠倒 |
|
||
|
||
后续切片:替代物料、外协工序、工艺版本生效日期。
|
||
|
||
### MD-03 班次 / 日历 / 维保
|
||
|
||
用户目标:维护可生产时间和不可用窗口,让占槽结果落在真实工作时间。
|
||
|
||
当前落地(M4 首切片):日历与维保页签。班次/产线工作日只读概览;维保窗口可新增/取消(`master.maintenance.upsert`,P2)。新增窗口在下一版排产产生 `EQUIPMENT` 冲突,取消后冲突消失(引擎已忽略 CANCELLED 维保;`test_master_data.py::test_maintenance_window_roundtrip_equipment_conflict`)。周模板批量复制为后续切片。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | `shifts`、`shiftCalendar`、`maintenance` |
|
||
| UI | 日历视图按产线展示班次、休息、加班、维保;支持批量复制周模板 |
|
||
| API / 动作 | 规划 `calendar.upsert`、`maintenance.upsert`;影响新排产为 P2 |
|
||
| 规则 | 修改已发布版本覆盖区间时必须提示影响范围;维保与工单冲突可被扫描 |
|
||
| 验收 | 添加某设备维保窗口后,新版本出现 `EQUIPMENT` 冲突或自动避开 |
|
||
| 测试 | 工单开始日有班次;维保重叠冲突归属本版本 |
|
||
|
||
后续切片:人员班组约束、节假日模板、加班审批流。
|
||
|
||
### MD-04 Excel/CSV 导入管线
|
||
|
||
用户目标:业务方能把订单、物料、BOM、工艺、班次从表格导入,先校验再入库。
|
||
|
||
当前落地(M4 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 输入 | `.xlsx` / `.csv`;订单/物料/BOM/路线/设备/模具/工序/区域 |
|
||
| UI | 主数据与订单面板「导入」:上传 → preview → P2 确认 |
|
||
| API / 动作 | `POST /api/import/preview`;`import.commit` P2 |
|
||
| 校验 | 必填、枚举、外键、重复编码、数量非负、日期格式 |
|
||
| 验收 | 错误行不能入库;通过行确认后落主干并进审计 |
|
||
| 测试 | 导入预览/提交黄金路径(见 import 相关测试) |
|
||
|
||
后续切片:字段映射 UI、导入任务历史、回滚导入批次、真实 ERP 增量。
|
||
|
||
### MD-05 ERP/MES 双向集成(SAP Mock 首切片)
|
||
|
||
用户目标:从外部 ERP 拉生产订单与库存进入柔性池,并把开完工回写外部系统(幂等)。
|
||
|
||
当前落地(M5 首切片 · Mock):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 适配器 | `server/integrations/sap_stub.py` 进程内镜像 `sap_mirror.json`;无真实 RFC/OData |
|
||
| 入站 | `sap.sync.inbound` P2:新 `flexOrders`(`externalAufnr`)+ `flexMaterials` 库存补丁 + `sapLinks` |
|
||
| 出站 | `sap.sync.outbound` P2:最新柔性版本工单 FINISH 回写;幂等键 `versionId:woId:finish` |
|
||
| 状态 | `sap.status` P0;API `/api/sap/status`、`inbound|outbound` preview/stage |
|
||
| UI | 柔性工作台「SAP 集成」;口令「同步SAP」「回写SAP」「SAP状态」 |
|
||
| 验收 | 入站新建可识别订单;二次入站跳过;出站重复调用不增回执 |
|
||
| 测试 | `tests/golden/test_sap_sync.py` |
|
||
|
||
后续切片:真实 SAP RFC/OData、齐套/BOM 同步、虚拟产线工时回传财务、失败重试队列。
|
||
|
||
### MD-06 换型矩阵主数据
|
||
|
||
用户目标:维护产品族×产品族换型时间,使同线相邻订单跨族时准备时间可配置。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据 | 物料 `productFamily`;表 `changeoverMatrix`(fromFamily/toFamily/setupMinutes) |
|
||
| 缺省 | 同族 0;无条目跨族 30 分 |
|
||
| 引擎 | RuleEngine:同线上一单族≠本单族时,首道工序叠加矩阵分钟;C10 可关 |
|
||
| UI | 主数据 → 工艺模型 → 换型;物料可编产品族 |
|
||
| API / 动作 | `changeover.query` P0;`master.changeover.upsert` P2;含于 `GET /api/master` |
|
||
| 口令 | 「查看换型矩阵」「设置换型 CTRL-STD 到 CTRL-HF 45分」 |
|
||
| 验收 | 种子 STD↔HF 有显式分钟;关 C10 后版本 `totalChangeoverMin=0` |
|
||
| 测试 | `tests/golden/test_changeover.py` |
|
||
|
||
后续切片:SC-08 战役合并、柔性轨模具换型与族矩阵联运、换型全局最优(TSP/OR)。
|
||
|
||
---
|
||
|
||
## 3. 订单功能
|
||
|
||
### OR-01 销售订单 / 明细管理
|
||
|
||
用户目标:计划员能维护待排订单,并明确哪些订单参与本次排产。
|
||
|
||
当前落地(M4 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | `salesOrders`、首个 `items` 明细 |
|
||
| UI | 左侧轨道「订单」面板;订单列表 + 编辑区;支持新建、编辑、取消、完成 |
|
||
| API / 动作 | `GET /api/orders` P0;`POST /api/orders/stage` 暂存确认卡;`order.upsert/cancel/complete` P2 |
|
||
| 安全 | 页面不直接写主干;批准后统一走 `/api/actions/confirm`,写前自动 Checkpoint,写入审计链 |
|
||
| 规则 | `CANCELLED` / `COMPLETED` 不参与后续新排产;历史版本不被回写 |
|
||
| 验收 | 取消订单后再试排,版本 `orderCount` 减少且无对应 PO/WO |
|
||
| 测试 | `tests/golden/test_order_management.py`;前端 `npm run build` |
|
||
|
||
后续切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 多明细 | 支持同一销售订单多产品明细、行级取消/完成 |
|
||
| 批量操作 | 批量改交期、客户等级、优先级,提交前显示 diff |
|
||
| 附件与合同 | 客户合同交期、附件、备注模板 |
|
||
| 验收 | 批量变更批准后只影响新版本;旧版本可追溯原订单快照 |
|
||
|
||
仍未做:客户信用/合同交期、订单附件、批量变更。
|
||
|
||
### OR-07 订单分解 MRP(采购/委外建议)
|
||
|
||
用户目标:上传/确认订单后,系统按 BOM 与工艺路线自动分解出自制、采购、委外三类需求,对标西门子订单驱动分解。
|
||
|
||
当前落地(M4 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | 读 `salesOrders/bomItems/routingSteps/materials`;写 `purchaseOrders` / `outsourceOrders` 两张 **DRAFT 建议表** |
|
||
| 分解规则 | 自制=成品本体(由排产引擎生成 PO/WO);采购=BOM 净需求(毛需求−库存−在途>0),建议下单日=交期−采购前置期−1 天缓冲;委外=`isExternal` 工艺步骤逐步生成 |
|
||
| API / 动作 | `GET /api/mrp` P0;`POST /api/mrp/decompose` → `order.decompose` P1;**`mrp.release` P2** 草稿→RELEASED |
|
||
| 双入口 | 订单面板「分解建议/分解此单/确认下达」;对话「分解订单」「下达采购建议」 |
|
||
| 幂等 | 同一订单重复分解替换其旧 DRAFT 建议,不堆积 |
|
||
| 验收 | 库存调零后分解出采购建议且下单日按前置期倒排;外协步骤出委外建议;下达后状态 RELEASED |
|
||
| 测试 | `tests/golden/test_mrp.py` |
|
||
|
||
后续切片:跨订单库存分配、多层 BOM 级联展开、引擎跳过外协工序的占槽语义、对接 ERP 采购模块(P3)。
|
||
|
||
### OR-02 优先级与权重配置
|
||
|
||
用户目标:主管能定义不同客户等级、交期、插单等因素的排序权重。
|
||
|
||
当前落地(M4 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | `scheduleParams.customerLevelWeights` + `weights` + `planningHorizonDays` |
|
||
| 引擎 | RuleEngine 综合/均衡策略以 `-levelWeight` 为第一排序键;交期优先仍以交期为主 |
|
||
| UI | 设置 → 排产参数:等级/目标权重滑杆、展望期、恢复默认;P2 确认卡 |
|
||
| API / 动作 | `params.query` P0;`params.update` P2;`GET /api/params`、`POST /api/params/stage` |
|
||
| 规则 | 权重变更只影响新版本,不回写历史版本;写前自动建档 |
|
||
| 验收 | 提高 VIP 权重后,VIP 订单在综合策略下更早开工 |
|
||
| 测试 | `tests/golden/test_params.py` |
|
||
|
||
后续切片:按项目/客户保存参数模板、A/B 对照推荐。
|
||
|
||
### OR-03 订单池 / 审核 / 变更
|
||
|
||
用户目标:订单进入排产前先过业务审核,变更要可追溯。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 状态 | DRAFT、SUBMITTED、APPROVED、REJECTED、CHANGED、CANCELLED、COMPLETED(CONFIRMED≡APPROVED) |
|
||
| UI | 订单池泳道:全部/待审/已批/变更/草稿;提交审核、批准/驳回、批量批准待审 |
|
||
| API / 动作 | `order.submit` P1;`order.approve`/`order.reject` P2;`GET /api/orders` 含 `pool`;`POST /api/orders/submit` |
|
||
| 规则 | 仅 APPROVED/CONFIRMED 进正式排产;`includeUnapproved` 试排可含草稿;编辑已批内容 → CHANGED |
|
||
| 验收 | 未批准订单默认不进入 `schedule.run`;审批进审计链 |
|
||
| 测试 | `tests/golden/test_order_pool.py` |
|
||
|
||
后续切片:审批角色、变更影响评估、订单锁定。
|
||
|
||
### OR-04 紧急插单专用流
|
||
|
||
用户目标:计划员输入插单后,系统先评估影响,再决定局部修复还是全量重排。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 输入 | 新订单或已存在订单标记 `isRush=true` |
|
||
| UI | 订单面板「插单快评」向导:录入/选单、影响快评、确认采用 |
|
||
| API / 动作 | `rush.evaluate` P1(沙盒);`rush.apply` P2;`POST /api/rush/evaluate`、`/api/rush/stage` |
|
||
| 规则 | 快评给出受影响订单数、延迟变化、冲突变化;采用前自动建档;写急单+DRAFT 版本 |
|
||
| 验收 | 快评不污染主干;采用后可回滚到采用前检查点 |
|
||
| 测试 | `tests/golden/test_rush.py` |
|
||
|
||
后续切片:LNS 局部修复、插单审批、对外承诺函。
|
||
|
||
### OR-05 预测 / 长周期订单
|
||
|
||
用户目标:把预测/长周期需求与确定销售订单分开维护;正式排产默认不含预测,试排可纳入;成熟后可转正。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 模型 | `forecastOrders`:DRAFT/ACTIVE/CONSUMED/CANCELLED;bucket=DAY/WEEK/MONTH;置信度 |
|
||
| UI | 订单面板「预测」视图:列表、新建周预测、转正、删除 |
|
||
| API / 动作 | `forecast.query` P0;`forecast.upsert`/`delete`/`convert` P2;`GET /api/forecast`、`POST /api/forecast/stage` |
|
||
| 规则 | 默认不进 `schedule.run`;`includeForecast` 试排纳入 ACTIVE(伪 SO,排在确定单之后);转正 → APPROVED 销售单 + CONSUMED |
|
||
| 口令 | 「查看预测」「新建预测」「预测纳入试排」「预测转正 FCxxx」 |
|
||
| 验收 | 缺表旧世界自愈;默认试排订单数不含预测;含预测试排 PO 号前缀 FC |
|
||
| 测试 | `tests/golden/test_forecast.py` |
|
||
|
||
后续切片:预测消耗冲减、置信度加权产能细化。
|
||
|
||
### PL-01 时间分桶计划
|
||
|
||
用户目标:在计划层用日/周/月(可混合)看清中长期需求与粗能力对照,先于详细排产定位缺口。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 分桶 | `DAY` / `WEEK` / `MONTH` / `HYBRID`(近7日→约4周→其余按月) |
|
||
| 需求 | APPROVED 销售订单交期落入桶;可选 ACTIVE 预测(加权=数量×置信度) |
|
||
| 能力 | ACTIVE 产线 `capacityPerDay×efficiency` × 桶内工作日 |
|
||
| UI | 视口「分桶计划」:模式切换、含预测开关、负荷条与 OVER/WARN/OK |
|
||
| API / 动作 | `plan.buckets` P0;`GET /api/plan/buckets` |
|
||
| 口令 | 「时间分桶」「分桶计划」「混合分桶」「周计划表」 |
|
||
| 验收 | 混合骨架含日/周/月;关预测后 forecastQty=0;对话切 `viewport.mode=plan` |
|
||
| 测试 | `tests/golden/test_planning.py` |
|
||
|
||
后续切片:产品族维度、与削峰联运。
|
||
|
||
### PL-02 有限 / 无限产能粗评估
|
||
|
||
用户目标:在计划层先用无限产能看「需要多少能力」,再用有限产能看「哪里超载」,形成 RCCP 双模式对照。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 有限 FINITE | 能力=日产能×工作日;负荷/缺口/OVER·WARN;默认模式 |
|
||
| 无限 INFINITE | 不卡能力;给出 `requiredDaily` / 峰值所需日产;附 `finite*` 参照 |
|
||
| 对照 | `plan.rccp`:有限超载桶数 + 无限峰值日产 + 日产能缺口 |
|
||
| UI | 分桶视口「有限/无限」切换;无限下列改「所需日产 / 有限参照负荷」 |
|
||
| API / 动作 | `capacityMode` 查询参;`GET /api/plan/rccp`;`plan.rccp` P0 |
|
||
| 口令 | 「有限产能粗评」「无限产能粗评」「粗能力对比」「RCCP」 |
|
||
| 验收 | 无限模式 overCount=0 且 capacity=null;对照两侧加权需求相等 |
|
||
| 测试 | `tests/golden/test_planning.py`(infinite / rccp) |
|
||
|
||
后续切片:按产线/能力池拆粗能力(产线维度 RCCP)。
|
||
|
||
### PL-03 可行性分析
|
||
|
||
用户目标:在详细排产前判断「整盘需求能否按期」,并定位缺口桶与风险订单。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 规则 | 按交期排序;累计加权需求 vs 起点→交期累计粗能力(日产能×工作日) |
|
||
| 状态 | 订单:`FEASIBLE` / `AT_RISK`(≥85%) / `INFEASIBLE`(slack 为负) / `LATE`;组合结论同口径 |
|
||
| 缺口 | 有限分桶 OVER 列表;风险单附重叠超载桶 |
|
||
| UI | 分桶视口「可行性」页:结论 + 缺口桶 + 订单 slack 表 |
|
||
| API / 动作 | `plan.feasibility` P0;`GET /api/plan/feasibility` |
|
||
| 口令 | 「可行性分析」「能否按期」「交期可行性」 |
|
||
| 验收 | 不含预测行数更少;累计需求单调;对话切分桶视口 |
|
||
| 测试 | `tests/golden/test_planning.py`(feasibility) |
|
||
|
||
后续切片:物料齐套并入可行性、与详细排程准时率对账、单订单 what-if。
|
||
|
||
### PL-04 库存投影
|
||
|
||
用户目标:按时间看清成品/原料可用库存走势,提前发现断料与跌破安全库存。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 期初 | `stock`;`inTransit` 计入起点日到货 |
|
||
| 需求 | 成品按交期扣减;原料按 BOM 毛需求(订单+可选预测)扣减 |
|
||
| 到货 | 采购建议 `suggestedOrderDate + leadTime`(或 `requiredDate`) |
|
||
| 粒度 | `DAY` / `WEEK`;告警 `STOCKOUT` / `BELOW_SAFETY` / `OK` |
|
||
| UI | 分桶视口「库存投影」:物料列表 + 时段曲线 |
|
||
| API / 动作 | `plan.inventory` P0;`GET /api/plan/inventory` |
|
||
| 口令 | 「库存投影」「库存投影 CTRL-A」「原料库存投影」「按周库存投影」 |
|
||
| 验收 | 成品过滤 3 条;压低库存触发告警;不含预测需求不增 |
|
||
| 测试 | `tests/golden/test_inventory.py` |
|
||
|
||
后续切片:跨订单库存分配、计划产出入库、安全库存补货建议联动 MRP。
|
||
|
||
### PL-05 产能平衡 / 削峰
|
||
|
||
用户目标:在计划层把超载时段的需求挪到空档,降低峰值负荷(不直接改交期)。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 输入 | 有限产能分桶(默认 WEEK);目标负荷默认 85% |
|
||
| 算法 | 超载多余量优先 PULL_AHEAD 到前空档,其次 PUSH_BACK 到后空档 |
|
||
| 输出 | 挪动建议列表 + 桶前后负荷/状态对照 + 峰值/方差改善 |
|
||
| UI | 分桶视口「削峰」页 |
|
||
| API / 动作 | `plan.leveling` P0;`GET /api/plan/leveling` |
|
||
| 口令 | 「削峰」「产能平衡」「负荷削峰」「计划层均衡」 |
|
||
| 验收 | 压低产能后必有挪动且峰值不升;高产能时空建议 |
|
||
| 测试 | `tests/golden/test_planning.py`(leveling) |
|
||
|
||
后续切片:一键应用改交期(P2)、与排产层 CAPACITY_BALANCE 联运、按产线维度削峰。
|
||
|
||
### PL-06 产供方向决策
|
||
|
||
用户目标:削峰仍不够时,给出加班 / 扩线 / 外协的结构化产供建议(相对成本排序)。
|
||
|
||
当前落地(M6 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 输入 | 先跑 PL-05 削峰;默认 WEEK;目标负荷 85% |
|
||
| 算法 | 残留超载桶按 加班(+25%能力)→扩线/替代(+40%+闲置线线索)→外协 覆盖缺口 |
|
||
| 输出 | `verdict`∈BALANCED/LEVELING_ENOUGH/NEED_SUPPLY;options+gaps+mix |
|
||
| UI | 分桶视口「产供」页 |
|
||
| API / 动作 | `plan.supply` P0;`GET /api/plan/supply` |
|
||
| 口令 | 「产供决策」「加班建议」「扩线建议」「外协建议」「产能决策」 |
|
||
| 验收 | 极低压产能→NEED_SUPPLY 且有选项;高产能→BALANCED |
|
||
| 测试 | `tests/golden/test_planning.py`(supply) |
|
||
|
||
后续切片:财务真实成本、一键生成加班/外协工单、与 MRP 外协建议联运。
|
||
|
||
---
|
||
|
||
## 4. 排产引擎功能
|
||
|
||
### SC-01 RULE 规则引擎
|
||
|
||
用户目标:在无优化器和无 LLM 的情况下,也能稳定产出可解释排程。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 输入 | `world` + `EngineParams` |
|
||
| 输出 | DRAFT `scheduleVersion`、PO、WO、conflicts、KPI |
|
||
| 验收 | 7 个种子订单生成 7 个 PO、30 个 WO;工位无重叠,工艺顺序不颠倒 |
|
||
| 测试 | `tests/golden/test_rule_engine.py` |
|
||
|
||
后续只允许做兼容增强:新增冲突类型、资源选择规则或统计口径时同步 `docs/algorithm/scheduling-v1.md`。
|
||
|
||
### SC-02 策略模板
|
||
|
||
用户目标:用业务语言切换排产偏好,例如交期优先、产能均衡、先进先出。
|
||
|
||
当前落地:
|
||
|
||
| 策略 | 当前实现 | 验收 |
|
||
| --- | --- | --- |
|
||
| DELIVERY_FIRST | 交期升序 + 优先级 | 最早交期订单最早开工 |
|
||
| FIFO | 下单日期升序 | 先下单先排 |
|
||
| CAPACITY_BALANCE | 优先级排序 + 选占用少的线 | 负荷更均衡 |
|
||
| CHANGEOVER_MIN | 换型矩阵贪心最近邻 + 同族选线 | 累计换型 ≤ FIFO(同线多族) |
|
||
| COST_FIRST | 同 CHANGEOVER_MIN(换型分钟代理成本) | 非财务成本最优 |
|
||
| COMPREHENSIVE | 优先级 + 交期 | 默认综合 |
|
||
|
||
后续切片:策略配置页、真实财务成本目标、战役合并(SC-08)。
|
||
|
||
### SC-07 顺序相关换型优化
|
||
|
||
用户目标:在详细排产时主动减少跨产品族换型次数与累计准备时间。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 策略 | `CHANGEOVER_MIN`(`COST_FIRST` 同序) |
|
||
| 排序 | 贪心最近邻:种子=交期最早;下一单选相对上族换型最小者 |
|
||
| 选线 | 优先同族已开线 → 空线 → 跨族线 |
|
||
| 对比 | `scenario.compare` 增加「换型最小化」卡,KPI 含 `totalChangeoverMin` |
|
||
| 口令 | 「换型最小化试排」「减少换型试排」「换型优先试排」 |
|
||
| 验收 | 同线多族时累计换型 ≤ FIFO |
|
||
| 测试 | `tests/golden/test_changeover.py`(SC-07) |
|
||
|
||
后续切片:窗内 2-opt 改良、与交期权重的帕累托。
|
||
|
||
### SC-08 批次 / 战役合并
|
||
|
||
用户目标:把交期接近的同产品订单合成一场战役,一次准备、累计数量、保留原单钉扎。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 规则 | 同 `productId`;交期跨度 ≤ 7 天;插单/预测不并入 |
|
||
| 策略 | `CAMPAIGN`:先合并再换型最小化排序 + 同族选线 |
|
||
| 输出 | 少 PO;PO 带 `campaignSourceOrderNos` / `isCampaign` |
|
||
| 预览 | `campaign.preview` P0 |
|
||
| 对比 | 方案卡增加「战役合并」,KPI 含 `poSaved` |
|
||
| 口令 | 「战役合并预览」「战役合并试排」「批次合并试排」 |
|
||
| 验收 | 种子 CTRL-A 两单合并;CAMPAIGN 的 poCount < 7 且 orderCount=7 |
|
||
| 测试 | `tests/golden/test_campaign.py` |
|
||
|
||
后续切片:可配窗口/最大批量、同族(非同品)战役、拆批回退。
|
||
|
||
### SC-03 CP / GA / HYBRID 真求解
|
||
|
||
用户目标:在复杂约束下获得更优解,并能说明求解质量。
|
||
|
||
当前落地(M5 · CP + GA + HYBRID):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| CP | OR-Tools:产线分配 + 同线 NoOverlap + 加权延期;工序班次占槽 |
|
||
| GA | 固定随机种子;联合搜索订单顺序与可行产线;精英保留;班次/硬约束复用 RuleEngine 物化 |
|
||
| HYBRID | RULE 策略序/选线 → CP-SAT `AddHint` 热启动改良 → 班次占槽 |
|
||
| API | `engineType=CP\|GA\|HYBRID`;`timeLimitSeconds`;`solveStatus|solveTimeSec|optimalityGap` |
|
||
| UI | 排产参数默认引擎;回复展示管线/状态/耗时/gap |
|
||
| 口令 | 「用CP试排」「混合引擎试排」「HYBRID试排」 |
|
||
| 规则 | 缺 ortools:CP→`ENGINE_UNAVAILABLE`;HYBRID→`DEGRADED_RULE` 诚实降级 |
|
||
| GA 可复现性 | `solverMeta.seed=42`,相同输入产生相同顺序与 KPI;无完整性工位的候选产线不得进入染色体 |
|
||
| 验收 | CP/HYBRID 延期 ≤ RULE;GA 不再由 RULE 代跑;三类引擎均保持工位无双占 |
|
||
| 测试 | `tests/golden/test_cp_engine.py`、`tests/golden/test_ga_engine.py` |
|
||
|
||
后续切片:工序级 Interval 全模型、NSGA-II/Pareto、LNS、GA 参数模板与大算例性能基线。
|
||
|
||
### SC-04 约束注册表 + 配置中心
|
||
|
||
用户目标:主管能配置哪些约束是硬约束、软约束、权重多少。
|
||
|
||
当前落地(M4 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | `ConstraintDef` 目录 + `constraintProfile` 覆盖;版本快照 `constraintProfile` |
|
||
| 引擎 | RuleEngine/PoolEngine 读启停与齐套软硬;维保/产能/班组/模具/滚动窗可关 |
|
||
| UI | 设置 → 约束配置(分组开关 + 硬/软);P2 确认卡 |
|
||
| API / 动作 | `constraint.profile.query` P0;`constraint.profile.save` P2;`GET /api/constraints`、`POST /api/constraints/stage` |
|
||
| 规则 | 硬约束违反阻止发布;软约束(默认齐套)只报风险;关闭齐套则不产出缺料冲突 |
|
||
| 验收 | 关闭物料齐套后缺料不报冲突;齐套硬约束时发布被门禁拦截 |
|
||
| 测试 | `tests/golden/test_constraints.py` |
|
||
|
||
后续切片:约束模板市场、按客户/产品族套用约束。
|
||
|
||
### IND-02 行业规则包(SOP→约束)
|
||
|
||
用户目标:把知识库里的 SOP 编译成可落地的约束/换型策略,而不是只「能查不能用」。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 编译 | 确定性模板:换线 SOP→C10+跨族默认分钟+16:00 宵禁;齐套 SOP→C6;插单 SOP→流程提示 |
|
||
| 标记 | 新增可配约束 `C13_sop`;应用后写入 `rulePacks` + `changeoverPolicy` |
|
||
| 引擎 | 跨族缺省分钟读 `changeoverPolicy`;C13 开启时换型晚于宵禁报 `SOP_CHANGEOVER_CURFEW` |
|
||
| API | `sop.compile` P0;`sop.apply` P2;`GET /api/sop/compilable|compile`;`POST /api/sop/stage` |
|
||
| UI | 设置→约束配置「SOP→约束规则包」;口令「编译换线SOP」「应用换线SOP」 |
|
||
| 验收 | 应用后跨族默认 60 分;C13 启用;出处挂在 C13.params |
|
||
| 测试 | `tests/golden/test_sop_rules.py` |
|
||
|
||
后续切片:更多 SOP 模板、LLM 辅助槽位抽取、按工厂/产品族绑定规则包。
|
||
|
||
### SC-05 多方案沙盒对比
|
||
|
||
用户目标:先看几种排法的 KPI 和风险,再选择一个方案落地。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 动作 | `scenario.compare` P1 |
|
||
| 隔离 | 深拷贝沙盒,主干世界逐字节不变 |
|
||
| 输出 | `scenario-cards`,含 KPI、相对基准差异、风险摘要 |
|
||
| 采用 | `scenario.apply` 重跑选中策略并写 DRAFT |
|
||
| 测试 | `test_scenario_compare_does_not_mutate_world` |
|
||
|
||
后续切片:自定义策略集合、方案命名、方案归档、帕累托前沿。
|
||
|
||
### SC-06 主控参数 / 敏感性分析
|
||
|
||
用户目标:调整关键参数时能看到 KPI 对参数变化的敏感程度。
|
||
|
||
当前落地(M5 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 参数扰动 | 展望期、VIP 权重、交期缓冲比、冻结窗口、产线效率系数 |
|
||
| 算法 | 沙盒 one-at-a-time;Tornado 按 \|Δ延期\| 摆幅排序 |
|
||
| 引擎挂钩 | `EngineParams.deliveryBufferRatio` / `freezeWindowHours`(显式传入才生效) |
|
||
| UI | 设置→排产参数「敏感性分析」;对话报告块可预览/下载 |
|
||
| API / 动作 | `scenario.sensitivity` P1;`GET /api/scenario/sensitivity` |
|
||
| 口令 | 「敏感性分析」「Tornado」「参数扰动」 |
|
||
| 验收 | 沙盒不污染主干;缓冲更紧延期不降;摆幅降序 |
|
||
| 测试 | `tests/golden/test_sensitivity.py` |
|
||
|
||
后续切片:蒙特卡洛鲁棒性、超时秒数(CP)、参数推荐。
|
||
|
||
### SC-04 约束注册表 + 配置中心
|
||
|
||
用户目标:主管能配置哪些约束是硬约束、软约束、权重多少。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | `ConstraintDef`、`ConstraintProfile`、版本快照中的约束配置 |
|
||
| UI | 设置 → 约束配置,按产能、物料、设备、人员、换线分组 |
|
||
| API / 动作 | 规划 `constraint.profile.save` P2 |
|
||
| 规则 | 硬约束违反则版本不可发布;软约束违反进入冲突/评分 |
|
||
| 验收 | 关闭物料齐套软约束后,缺料不阻断排产但报告风险 |
|
||
| 测试 | 约束开关影响冲突输出;发布前硬约束门禁 |
|
||
|
||
后续切片:约束模板市场、按客户/产品族套用约束。
|
||
|
||
---
|
||
|
||
## 5. 结果与执行功能
|
||
|
||
### EX-01 草稿版本 + 发布
|
||
|
||
用户目标:试排结果先作为草稿,确认后才成为执行基准。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 状态 | DRAFT、PUBLISHED、ARCHIVED |
|
||
| 动作 | `schedule.run` P1;`schedule.publish` P2 |
|
||
| 安全 | 发布前自动 Checkpoint;批准/驳回写审计 |
|
||
| 验收 | 发布后版本状态为 PUBLISHED,PO 状态推进为 CONFIRMED |
|
||
| 测试 | 门禁与审计链黄金测试 |
|
||
|
||
后续切片:版本归档、版本比较、发布回执。
|
||
|
||
### EX-02 甘特 / 负荷 / 交期看板
|
||
|
||
用户目标:用不同视角确认排产结果。
|
||
|
||
当前落地:
|
||
|
||
| 视图 | 数据源 | 验收 |
|
||
| --- | --- | --- |
|
||
| 甘特 | `/api/world/gantt` | 展示最新版本 WO,支持过滤、聚焦、高亮 |
|
||
| 负荷 | `/api/world/load` | 产线 x 日期负荷率 |
|
||
| 交期 | `/api/world/due` | 每个订单承诺完成和风险等级 |
|
||
|
||
后续切片:时间缩放真实影响甘特粒度、导出图片、视图配置保存。
|
||
|
||
### EX-03 冲突解决工作流
|
||
|
||
用户目标:对容量、缺料、设备等冲突生成可执行建议,并一键应用安全修复。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 冲突类型 | NO_LINE、NO_WORKSTATION、MATERIAL_SHORTAGE、DELAY、CAPACITY、EQUIPMENT |
|
||
| UI | 冲突中心:按严重度、资源、版本筛选;每条有建议和影响预览 |
|
||
| API / 动作 | 规划 `conflict.suggest` P0、`conflict.applyFix` P2 |
|
||
| 规则 | 应用修复前必须沙盒预览 diff;P2 批准后生成新版本 |
|
||
| 验收 | 对容量冲突选择“分流产线”后,新版本该冲突减少或解释失败原因 |
|
||
| 测试 | 修复前后冲突数可比;失败不改主干 |
|
||
|
||
后续切片:自动修复策略库、批量冲突处理。
|
||
|
||
### EX-04 工单拖拽调程
|
||
|
||
用户目标:计划员在甘特上手动调整工单,并立即看到约束校验结果。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| UI | 甘特工单可拖动开始时间/工位/产线,拖动中显示合法/非法 |
|
||
| API / 动作 | 规划 `schedule.adjust.preview` P1、`schedule.adjust.commit` P2 |
|
||
| 规则 | 预览只写沙盒;提交生成新 DRAFT 版本,不直接改历史版本 |
|
||
| 验收 | 拖到设备维保窗口时提示非法;拖到空闲工位后可提交新版本 |
|
||
| 测试 | 预览不污染主干;提交后工艺顺序仍合法 |
|
||
|
||
后续切片:多选拖拽、冻结窗口、撤销/重做。
|
||
|
||
### EX-05 MES 下发 / 报工
|
||
|
||
用户目标:发布后的版本能安全下发到外部执行系统,并接收进度回传。
|
||
|
||
当前落地(Mock 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 适配器 | `server/integrations/mes_stub.py` 进程内镜像;无真实车间接口 |
|
||
| 下发 | `mes.dispatch` P3 二次确认:出卡冻结精确版本,最终批准签发绑定审批参数摘要的一次性作用域执行凭据;执行校验真实前置快照与版本证据;预览最多展示 80 条但执行覆盖完整版本;幂等键 `track:versionId:woId` |
|
||
| 报工 | `mes.report` P1:进度% / 完工;回写 APS 工单;同订单工序全完 → 柔性订单 COMPLETED |
|
||
| UI | 柔性工作台「MES 执行」;口令「下发MES」「模拟报工」「MES状态」 |
|
||
| API | `/api/mes/status`、`dispatch/preview|stage`、`execution`、`report` |
|
||
| 验收 | 下发记录外部单号;替换审批版本/证据被拒;超过 80 条不截断;重复下发不增外部工单;报工更新进度 |
|
||
| 测试 | `tests/golden/test_mes.py` |
|
||
|
||
后续切片:真实 MES MCP、失败重试队列、固定轨报工 UI、WMS 齐套。
|
||
|
||
---
|
||
|
||
## 6. 对话与治理功能
|
||
|
||
### AG-01 意图两级管线
|
||
|
||
用户目标:计划员能用自然语言驱动排产,同时系统可解释自己理解了什么。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 一级 | 正则快路,离线可用 |
|
||
| 二级 | LLM JSON,失败降级 unknown |
|
||
| 输出 | `IntentResult`,前端可展开查看 |
|
||
| 验收 | 关键口令能稳定解析;LLM 不可用时核心口令仍可用 |
|
||
|
||
后续切片:同义词词库管理、槽位澄清、多轮补参。
|
||
|
||
### AG-02 门禁 P0-P3
|
||
|
||
用户目标:危险操作必须让人确认,且确认路径唯一。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 矩阵 | `_POWER_MAP` + `docs/architecture/harness.md` |
|
||
| P2 通道 | `stage_confirmation` → `/api/actions/confirm` |
|
||
| P3 通道 | 同一确认令牌必须在同一授权作用域由两个不同用户连续批准;第一重只留审计,同一用户重复批准被拒;第二名用户批准后签发绑定审批参数摘要的一次性内部执行凭据;记录冻结发起人的有效 `worldKey`,所有门禁审计 actor 从认证身份派生;外部执行还必须校验审批对象、前置快照和证据 |
|
||
| 持久化与时效 | `APS_APPROVAL_BACKEND=file` 默认兼容 `APS_APPROVAL_PATH`(缺省 `APS_HOME/data/approvals.json`);显式 `database` 复用 MySQL `APS_DATABASE_URL`,以 request/grant/event 规范化表、revision CAS 和短事务协调跨连接审批,grant 仅存 token SHA-256;配置冲突、缺少 URL 或 DB 不可用均失败关闭且不回退 file。审批/凭据 TTL 分别由 `APS_APPROVAL_TTL_SECONDS`、`APS_EXECUTION_GRANT_TTL_SECONDS` 控制;跨重启恢复,过期拒绝并留历史 |
|
||
| 角色 | `APS_APPROVAL_INITIATOR_ROLES` 控制发起,`APS_APPROVAL_ROLES` 控制待办查看和批准,`APS_APPROVAL_VIEW_ROLES` 控制历史只读;默认发起/批准角色为 planner/approver/admin,系统内部身份例外;角色拒绝统一返回 HTTP 403 |
|
||
| 故障隔离 | JSON 解析、Schema 或记录字段校验失败时,原文件隔离为 `.corrupt-*` 并发出运行时告警;队列/凭据按空仓失败关闭,坏 TTL 不得拖垮治理 API |
|
||
| UI | 聊天确认卡 + 设置/门禁待审批 + 审批历史;显示发起人、审批进度、等待/停留时长和到期时间 |
|
||
| 验收 | P2 不能走 `guard()` 直通且一次批准后令牌失效;P3 第一重批准后令牌仍在,必须由第二名用户批准后才执行并失效;重启后令牌状态、TTL 和一次性语义保持一致 |
|
||
|
||
后续切片:审批意见/委托/转派/批量审批、文件存量的一次性迁移工具、MySQL 多主机故障注入验收与 WORM 审计归档。
|
||
|
||
### AG-03 审计哈希链
|
||
|
||
用户目标:关键动作可追溯,历史事件被篡改能被检出。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据 | `auditEvents`,prevHash + hash |
|
||
| UI | 设置 → 审计链 |
|
||
| 验收 | 正常链校验通过;改历史事件字段后断链 |
|
||
| 已知修复 | 2026-07-16 已补 `at` + `ts` 双字段,避免治理页时间列空白 |
|
||
|
||
后续切片:WORM 存储、审计导出、外部锚定。
|
||
|
||
### AG-04 知识检索 / RAG
|
||
|
||
用户目标:问制度、SOP、策略原理时,回答必须带出处。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 检索 | bigram + 标签/标题加权 |
|
||
| 资产 | SOP、algorithm、case、process、report |
|
||
| 验收 | 命中带 assetId/title/version;未命中不编造 |
|
||
|
||
M5 切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 向量 | chunk、embedding、召回、重排 |
|
||
| UI | 知识资产管理页,支持上传、审批、版本对比 |
|
||
| API / 动作 | 规划 `knowledge.asset.upsert` P2、`knowledge.search` P0 |
|
||
| 测试 | 同问题召回稳定;未审批资产不参与对外回答 |
|
||
|
||
### AG-05 报告生成
|
||
|
||
用户目标:从排产版本生成可复现日报和版本对比报告。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 类型 | daily、version-diff |
|
||
| 规则 | 数字来自冻结快照;模板化生成;入知识库 |
|
||
| UI | 聊天报告块预览/下载 |
|
||
| 验收 | 报告数字与快照字段一致 |
|
||
|
||
后续切片:报告模板管理、对外承诺函 P2、Word/PDF 导出。
|
||
|
||
### AG-06 偏好缺省策略
|
||
|
||
用户目标:用户不点名策略时,系统用历史使用偏好选择默认策略,并说明原因。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 信号 | 试排 1 分,采用 2 分 |
|
||
| 输出 | 默认策略 + 得分说明 |
|
||
| 验收 | 采用权重大于试排;无样本回退 COMPREHENSIVE |
|
||
|
||
后续切片:按用户/项目隔离偏好、偏好重置、偏好解释面板。
|
||
|
||
### AG-07 主动引导 / 多模态
|
||
|
||
用户目标:系统能在发现风险或空状态时主动建议下一步。
|
||
|
||
当前落地(M4 首切片):
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 主动引导 | `build_guidance`:无版本→试排;冲突高→查看冲突/对比;知识未命中→知识库/样例 SOP |
|
||
| API / 动作 | `guidance.next` P0;`GET /api/guidance`;口令「下一步建议」 |
|
||
| UI | 欢迎页按状态换 starter;对话 `guidance` 块可点击口令;甘特空态文案 |
|
||
| 触发 | 发布无版本、知识未命中、试排冲突≥3 自动附建议块 |
|
||
| 多模态 | M6 以后考虑截图/表格问答,不进入 M4 必做 |
|
||
| 验收 | 无版本、冲突高、知识未命中三种状态都有下一步建议 |
|
||
| 测试 | `tests/golden/test_guidance.py` |
|
||
|
||
后续切片:命令面板动态推荐、按项目偏好排序建议。
|
||
|
||
### AG-08 项目 / 会话服务端化
|
||
|
||
用户目标:项目、会话、文件资产不只存在浏览器本地,能跨设备和多人协作。
|
||
|
||
最小切片:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据对象 | Project、Session、Message、ProjectFile;`worldKey=default` 绑定共享 WorldStore |
|
||
| 存储 | `server/data/projects.json`;前端启动 `bootstrapWorkspace` 拉取/迁移 |
|
||
| UI | 现有项目面板交互不变;数据源优先 Gateway,失败回退 localStorage |
|
||
| API / 动作 | `GET/PUT /api/workspace`;`project.create`/`project.delete`/`session.create` P1;`message.replace`/`message.append` P1 |
|
||
| 规则 | 删除项目不触碰世界;本地仓可一次性迁移到服务端 |
|
||
| 验收 | 刷新后仍见项目/会话/历史消息;删项目后销售订单数不变 |
|
||
| 测试 | `tests/golden/test_workspace.py` |
|
||
|
||
后续切片:团队权限、多租户、会话树成对快照。
|
||
|
||
### AG-09 检查点与时间线
|
||
|
||
用户目标:计划员能在关键操作前后保存状态,并在出错时回到可信版本。
|
||
|
||
当前落地:
|
||
|
||
| 项 | 规格 |
|
||
| --- | --- |
|
||
| 数据 | `server/data/checkpoints.json`,包含快照元信息和完整 `world` |
|
||
| 动作 | `checkpoint.create` P1;`checkpoint.rollback` P2 |
|
||
| UI | 时间线导轨展示检查点与版本;点击检查点合成回滚口令 |
|
||
| 安全 | 回滚执行前自动再建档,保证回滚本身可撤销 |
|
||
| 验收 | 建档后破坏世界,再回滚能逐字段恢复;超过容量淘汰最旧 |
|
||
| 测试 | `test_checkpoint_roundtrip`、`test_checkpoint_capacity_eviction` |
|
||
|
||
后续切片:服务端会话树持久化后,把对话上下文与世界快照做真正成对恢复。
|
||
|
||
---
|
||
|
||
## 7. 推荐落地顺序
|
||
|
||
| 顺序 | 功能 | 原因 |
|
||
| --- | --- | --- |
|
||
| 1 | AG-03 审计字段契约修复 | 已完成;继续扩展 WORM/导出 |
|
||
| 2 | OR-01 销售订单管理 | 首切片已完成;继续订单审核/批量/附件 |
|
||
| 3 | MD-01/02 主数据维护 | 支撑真实客户数据替换种子 |
|
||
| 4 | SC-04 约束配置中心 | 把“内嵌规则”产品化 |
|
||
| 5 | EX-03 冲突解决工作流 | 从“能看冲突”走向“能处理冲突” |
|
||
| 6 | EX-04 拖拽调程 | 提升计划员手工干预能力 |
|
||
| 7 | MD-04 导入管线 | 降低真实试点接入成本 |
|
||
| 8 | AG-08 项目/会话服务端化 | 支撑多人和长期使用 |
|
||
| 9 | OR-04 插单专用流 | 高频业务场景,但依赖订单/冲突/版本能力 |
|
||
| 10 | SC-03 真求解器 | 算法价值高,依赖约束模型稳定 |
|
||
|
||
维护要求:任一功能从“未做/半落地”推进为“已落地”时,必须同轮更新 [features.md](./features.md)、必要的业务旅程、门禁矩阵和 [../CHANGELOG.md](../CHANGELOG.md)。
|