aps-agent/docs/CHANGELOG.md

58 KiB
Raw Blame History

变更登记簿(CHANGELOG)

大管家的账本。 每次改代码、加功能、改功能、修缺陷,同一轮必须追加一节。
写法见 docs/README.md §2.2。旧名:PROGRESS.md(已迁入本文件)。


2026-07-23 — 排产方案下载改为 Excel 工作计划表

  • 类型:feat
  • 背景:用户要求下载应是完整 Excel 工作计划表,而非 Markdown。
  • 交付:
    • build_plan_report 产出 xlsx(工作计划 / 方案概览 / 冲突 三表)
    • 聊天报告块与柔性排产结果块:「下载 Excel 工作计划表」
    • GET /api/reports/files/{id} + GET /api/reports/plan?format=xlsx
  • 测试:test_outsource_qa_and_plan_report 校验 xlsx 魔数与 downloadUrl

2026-07-23 — 委外追问可答 + 排产方案报告可下载

  • 类型:fix / feat
  • 背景:排产后问「这个订单有委外订单吗」低置信拒识;日报只覆盖固定轨,柔性排产方案无法下载。
  • 交付:
    • master.query entity=mrp:委外/采购/分解建议问答,支持「这个订单」指代
    • report.generate type=plan:柔性排产方案报告(概览+交期+工序明细表),聊天块「下载 .md」
    • 口令:生成排产方案报告 / 下载排产 / 导出排产方案;快捷指令同步
  • 测试:test_outsource_qa_and_plan_report

2026-07-23 — 「把这个订单排产」指代修复

  • 类型:fix
  • 背景:刚查到订单后说「给我把这个订单进行计划排产」走 LLM 低置信拒识,未走排产。
  • 交付:
    • 快路识别「这个/该订单…排产」「计划排产」「给订单 xxx 排产」→ flex.schedule(有 flex 单时)
    • session_focus:master.query 记住刚查的订单;orderRef=last 解析为 orderIds
    • 无焦点且多单时明确提示先查单,不瞎排全池
  • 测试:test_schedule_this_order_deixis

2026-07-23 — 对话检索订单/主数据 + 机加工工艺知识库

  • 类型:feat
  • 背景:自然语言无法检索现场订单/主数据;知识库缺机械加工工艺路线生成模式。
  • 交付:
    • master.query P0:查订单/物料/工序/BOM/工艺路线/概览/柔性资源
    • server/knowledge/machining_patterns.py:车铣钻磨钣金焊接装配热处理等工艺路线生成模式 + 城轨机构装配模板
    • 「知识清单」列出全部资产;口令「机加工工艺怎么生成」「车削工艺模式」等
  • 测试:tests/golden/test_master_query_kb.py

2026-07-23 — 现场 Excel 同步写入主数据页/订单池(清演示)

  • 类型:fix / feat
  • 背景:此前只写 flex*,主数据页与订单池仍读固定轨演示表,界面像「垃圾数据」。
  • 交付:
    • load_site_into_world(clear_all=True) 清空固定轨+柔性轨演示,写入工厂/产线/工位/工序/物料/BOM/路线/salesOrders + flex*
    • 默认只导入 订单102285668_完整生产路线.xlsx 主单
    • ensure_flex_seed 在现场清空后不再回填 HV/PDU 假数据
    • 柔性工作台下拉改为读现场成品/设备,去掉 PDU/HV/PRESS 硬编码
  • 验证:/api/orders=102285668;/api/master 22 物料/10 工序;test_kangni_intake 3 passed

2026-07-23 — 康尼现场完整生产路线导入(替换演示 flex*)

  • 类型:feat(现场数据接入 / IND-03 验收数据轨)
  • 背景:引擎与文档口径对齐柔性能力池,但默认仍是 HV-HARNESS/PDU 演示假数据;用户要求用现场真实 Excel 把康尼排产流程跑通。
  • 交付:
    • server/aps_domain/kangni_intake.py:解析「完整生产路线」+ 同源订单/工艺/BOM;缺口工时/工位显式推断并留痕
    • scripts/load_kangni.py:清空演示 flex* → 写入现场 → PoolEngine 排产
    • flex.site.load P2(口令/确认卡)+ POST /api/flex/site/load
    • 验证:订单 102285668 → 10 工序 VL/WO;同源 102289293 可并排
  • 已知缺口:源表标准工时/设备/模具均为「待维护」→ 部装45′/装配30′ + 4 台共享工位(见 flexParams.siteInferences)
  • 测试:tests/golden/test_kangni_intake.py
  • 文档:demand-data-intake.md 附导入口径;demand-kangni-wuhu.md §8.1 偏离速查

2026-07-23 — IND-02 SOP→约束规则包

  • 类型:feat(IND-02 / C13 首切片)
  • 背景:知识库可存 SOP,但不能编译进约束剖面;计划员仍需手工对齐换型/齐套口径。
  • 交付:
    • sop.compile P0 / sop.apply P2;GET /api/sop/* + POST /api/sop/stage
    • 换线 SOP→启用 C10 + 跨族默认 60 分 + 16:00 宵禁;齐套 SOP→C6;插单 SOP→流程提示
    • 约束 C13_sop;世界 rulePacks / changeoverPolicy;宵禁冲突 SOP_CHANGEOVER_CURFEW
    • 设置→约束配置「编译并应用」;口令「编译换线SOP」「应用换线SOP」
  • 测试:tests/golden/test_sop_rules.py
  • 顺带:OR-07 文档补齐已落地的 mrp.release 下达

2026-07-23 — SC-03 HYBRID 管线(RULE→CP)

  • 类型:feat(SC-03 HYBRID 切片)
  • 背景:CP 已可独立求解,但缺 RULE 热启动改良管线;口令「混合/HYBRID」仍走 RULE 代跑。
  • 交付:
    • HybridEngine:策略序收集 → RULE 选线 hint → CP-SAT AddHint 改良 → 班次占槽
    • solverMeta.pipeline=RULE→CP-SAT→shift-slot、warmStart=RULE
    • 缺 ortools 时 DEGRADED_RULE 诚实降级(仍标 HYBRID)
    • 口令「混合引擎试排」「HYBRID试排」;排产参数可选 HYBRID
  • 测试:test_hybrid_* in test_cp_engine.py / test_rule_engine.py
  • 验收:HYBRID 延期 ≤ RULE;warmStart 留痕

2026-07-23 — SC-03 CP-SAT 真求解首切片

  • 类型:feat(SC-03 首切片)
  • 背景:engineType=CP 长期由 RULE 静默代跑,无法展示求解状态/gap,也不满足「不得无痕退回 RULE」。
  • 交付:
    • CpSatEngine(OR-Tools):产线分配 + 同线 NoOverlap + 加权延期;工序班次占槽物化
    • ScheduleResult.solveStatus|solveTimeSec|optimalityGap;版本 solverMeta
    • 排产参数:默认引擎 / CP 时限;口令「用CP试排」「约束规划试排」
    • GA/HYBRID 仍 RULE 代跑并明确注释;缺 ortools → ENGINE_UNAVAILABLE
  • 依赖:ortools>=9.10
  • 测试:tests/golden/test_cp_engine.py
  • 验收:CP 延期 ≤ RULE;工位无双占;engineType 与 solverMeta 诚实

2026-07-23 — SC-06 主控参数敏感性分析

  • 类型:feat(SC-06 首切片)
  • 背景:排产参数可改,但缺少 one-at-a-time 扰动与 Tornado 摆幅,难以判断「改哪项最敏感」。
  • 交付:
    • scenario.sensitivity P1;GET /api/scenario/sensitivity;沙盒不写主干
    • 因子:展望期 / VIP 权重 / 交期缓冲比 / 冻结窗口 / 产线效率
    • EngineParams.deliveryBufferRatio、freezeWindowHours(显式传入才挂钩 RuleEngine)
    • 设置→排产参数「敏感性分析」;口令「敏感性分析」「Tornado」
  • 测试:tests/golden/test_sensitivity.py
  • 验收:主干不变;摆幅降序;更紧缓冲延期不降

2026-07-23 — SC-08 批次/战役合并

  • 类型:feat(SC-08 首切片)
  • 背景:同产品近交期订单仍各自 PO,重复准备;缺战役合并视图。
  • 做了什么:
    • 策略 CAMPAIGN:交期窗 7 天同品合并;插单/预测单排;PO 钉扎原单号
    • campaign.preview P0;方案对比「战役合并」卡 + poSaved
    • 口令「战役合并预览」「战役合并试排」
  • 验证:test_campaign.py + test_m2_state 五卡;全量 golden;tsc

2026-07-23 — SC-07 换型最小化策略

  • 类型:feat(SC-07 首切片)
  • 背景:MD-06 矩阵已入库,但订单序仍按交期/FIFO,跨族换型无法主动压低。
  • 做了什么:
    • 策略 CHANGEOVER_MIN(COST_FIRST 同序):贪心最近邻 + 同族选线
    • 方案对比增加换型卡与 totalChangeoverMin KPI
    • 口令「换型最小化试排」;插单面板可选该策略
  • 验证:test_changeover.py SC-07 + test_m2_state 四卡;全量 golden;tsc

2026-07-23 — MD-06 换型矩阵主数据

  • 类型:feat(MD-06 / C10 首切片)
  • 背景:引擎仅有标量 setupTime,无产品族×产品族换型矩阵,跨型号准备时间无法配置。
  • 做了什么:
    • changeoverMatrix + 物料 productFamily;changeover.query / master.changeover.upsert
    • RuleEngine 同线跨族叠加首道准备;约束中心 C10 可关
    • 主数据「换型」页;口令「查看换型矩阵」「设置换型 …」
  • 验证:test_changeover.py + 全量 golden;tsc

2026-07-23 — PL-06 产供方向决策

  • 类型:feat(PL-06 首切片)
  • 背景:削峰后仍超载时,缺加班/扩线/外协的结构化产供选项(此前仅靠叙事)。
  • 做了什么:
    • plan.supply:先削峰,残留缺口按加班→扩线→外协覆盖;verdict + options/gaps
    • GET /api/plan/supply;分桶视口「产供」;口令「产供决策」「加班建议」「外协建议」
  • 验证:test_planning.py supply + 全量 golden;tsc

2026-07-23 — PL-05 产能平衡 / 削峰

  • 类型:feat(PL-05 首切片)
  • 背景:排产层有 CAPACITY_BALANCE,计划层缺超载→空档的削峰视图与建议。
  • 做了什么:
    • plan.leveling:有限分桶上先提前后延后挪动;输出建议+前后负荷对照
    • GET /api/plan/leveling;分桶视口「削峰」;口令「削峰」「产能平衡」
  • 验证:test_planning.py leveling + 全量 golden;tsc

2026-07-23 — PL-04 库存投影

  • 类型:feat(PL-04 首切片)
  • 背景:计划层缺随时间库存曲线,断料只能在齐套/MRP 事后发现。
  • 做了什么:
    • plan.inventory:期初+在途+成品交期/BOM 毛需求+采购到货;日/周投影;断料/安全库存告警
    • GET /api/plan/inventory;分桶视口「库存投影」;口令「库存投影」「库存投影 CTRL-A」
  • 验证:test_inventory.py + 全量 golden;tsc

2026-07-23 — PL-03 可行性分析

  • 类型:feat(PL-03 首切片)
  • 背景:延期只能在详细排产后看见,缺计划层前置「能否按期 + 缺口在哪」。
  • 做了什么:
    • plan.feasibility:交期排序累计需求 vs 累计粗能力;FEASIBLE/AT_RISK/INFEASIBLE/LATE + 缺口桶
    • GET /api/plan/feasibility;分桶视口「可行性」页;口令「可行性分析」「能否按期」
  • 验证:test_planning.py feasibility + 全量 golden;tsc

2026-07-23 — PL-02 有限/无限产能粗评估

  • 类型:feat(PL-02 首切片)
  • 背景:分桶计划仅有限产能视角,缺西门子式无限产能粗评估与双模式对照。
  • 做了什么:
    • capacityMode=FINITE/INFINITE:无限不卡能力、给所需日产 + 有限参照;plan.rccp 对照摘要
    • GET /api/plan/rccp;分桶视口有限/无限切换;口令「有限产能粗评」「无限产能粗评」「粗能力对比」
  • 验证:test_planning.py infinite/rccp + 全量 golden;tsc

2026-07-23 — PL-01 时间分桶计划

  • 类型:feat(PL-01 首切片)
  • 背景:计划层缺日/周/月时段建模,中长期需求与粗能力只能看排产后负荷。
  • 做了什么:
    • plan.buckets P0:DAY/WEEK/MONTH/HYBRID;确定订单 + 可选预测加权 vs 产线日产能×工作日
    • GET /api/plan/buckets;视口「分桶计划」;口令「时间分桶」「分桶计划」「混合分桶」
  • 验证:test_planning.py + 全量 golden 133;tsc

2026-07-23 — OR-05 预测 / 长周期订单

  • 类型:feat(OR-05 首切片)
  • 背景:计划层缺独立预测需求台账;销售订单与预测混排会污染正式承诺。
  • 做了什么:
    • forecastOrders + forecast.upsert/delete/convert P2、forecast.query P0;旧世界缺表自愈
    • RuleEngine includeForecast:ACTIVE 预测垫后试排;转正 → APPROVED 销售单
    • 订单面板预测视图;口令「查看预测」「新建预测」「预测纳入试排」「预测转正」
  • 验证:test_forecast.py + 全量 golden 128;tsc

2026-07-23 — AG-08 项目 / 会话服务端化

  • 类型:feat(AG-08 首切片)
  • 背景:项目/会话/消息只存浏览器 localStorage,刷新跨设备丢失,也无法与世界状态显式绑定。
  • 做了什么:
    • server/data/projects.json + ProjectStore;worldKey=default 绑定共享世界
    • GET/PUT /api/workspace、项目/会话/消息 API;project.* / message.* / workspace.replace P1
    • 前端启动拉取/本地迁移;防抖同步;消息优先服务端;删项目不碰世界
  • 验证:test_workspace.py + 全量 golden;tsc

2026-07-22 — OR-04 紧急插单专用流

  • 类型:feat(OR-04 首切片)
  • 背景:急单仅能勾 isRush 或走柔性 flex.rush,缺少固定轨「先快评再采用」专用流。
  • 做了什么:
    • rush.evaluate P1 双沙盒对比(受影响订单/延迟/冲突差分);主干零接触
    • rush.apply P2:写 APPROVED 急单 + DRAFT 排产;写前自动建档可回滚
    • 订单面板插单向导;口令「插单快评」「紧急插单 200件控制器A」「采用插单」;柔性急单改需带「柔性」前缀
  • 验证:test_rush.py + 全量 golden;tsc

2026-07-22 — OR-03 订单池 / 审核 / 变更

  • 类型:feat(OR-03 首切片)
  • 背景:销售订单无审核态,新建即进排产,缺少业务台账泳道。
  • 做了什么:
    • 状态机 DRAFT→SUBMITTED→APPROVED/REJECTED;编辑已批→CHANGED;仅 APPROVED 进正式排产
    • order.submit P1、order.approve/order.reject P2;GET /api/orders.pool;includeUnapproved 试排
    • 订单面板泳道 + 提交/批准/驳回/批量批准;口令「订单池」「提交审核」「批量批准」
  • 验证:test_order_pool.py + 全量 golden;tsc

2026-07-22 — SC-04 约束注册表 + 配置中心

  • 类型:feat(SC-04 首切片)
  • 背景:冲突检测内嵌引擎,无法配置硬/软与启停;发布不区分硬约束。
  • 做了什么:
    • ConstraintDef 目录 + constraintProfile;版本快照约束配置
    • RuleEngine/PoolEngine 读齐套软硬与维保/产能/班组/模具/滚动窗开关
    • 发布前硬约束门禁;设置 → 约束配置;口令「关闭物料齐套」「齐套改为硬约束」
  • 验证:test_constraints.py + 全量 golden;tsc

2026-07-22 — OR-02 优先级与客户等级权重配置

  • 类型:feat(OR-02 首切片)
  • 背景:策略排序只用 priority/deliveryDate,主管无法配置 VIP 相对权重;设置页无排产参数。
  • 做了什么:
    • scheduleParams.customerLevelWeights;RuleEngine 综合/均衡以等级权重为第一键(交期优先仍 EDD)
    • params.query P0 / params.update P2;GET /api/params、POST /api/params/stage
    • 设置 → 排产参数滑杆;口令「查看排产参数」「提高VIP权重到10」「恢复默认排产参数」
  • 验证:test_params.py + 全量 golden;tsc

2026-07-22 — AG-07 主动引导(空态 / 冲突 / 知识未命中)

  • 类型:feat(AG-07 首切片)
  • 背景:欢迎页与空态仍是静态文案;冲突高/知识未命中缺少可点击下一步。
  • 做了什么:
    • build_guidance + guidance.next P0 + GET /api/guidance
    • 对话 guidance 块、欢迎页动态 starter、甘特空态;发布无版本 / 知识未命中 / 试排冲突≥3 自动附建议
    • 口令「下一步建议」
  • 验证:test_guidance.py + 全量 golden;tsc

2026-07-22 — EX-06 资源利用率增强(设备热力 + 班组并发)

  • 类型:feat(EX-06)+ docs(SC-11/SC-10 对齐)
  • 背景:负荷热力只覆盖固定产线;柔性设备/班组利用率缺独立视口;SC-11 引擎早已落地但总表仍标未做。
  • 做了什么:
    • build_utilization_report + GET /api/analytics/utilization:7 日设备热力、班组峰值并发/触顶
    • 视口「利用率」;口令「打开资源利用率」;柔性工作台展示班组清单
    • 文档:SC-11/SC-10/MD-07/EX-06 状态与实现对齐
  • 验证:test_utilization.py + 全量;tsc

2026-07-22 — OR-06 订单钉扎(柔性链)+ SC-12 文档对齐

  • 类型:feat(OR-06)+ docs(SC-12)
  • 背景:固定轨 plan.trace 已有;康尼需 FO→BOM/路线→虚拟产线→工单/设备钉扎;SC-12 已实现但总表仍标未做。
  • 做了什么:
    • flex_plan_trace + plan_trace(track=flex|auto);GET /api/plan/trace?track=flex
    • 柔性工作台「钉扎」页;口令「钉扎 FO-2601」「追溯柔性订单」
    • implementation-spec:OR-06 / SC-12 状态改为已落地
  • 验证:test_pegging.py + 全量;tsc

2026-07-22 — EX-07/08 方案对比表 + KPI 仪表盘

  • 类型:feat(分析增强)
  • 背景:视口仅有迷你 KPI 卡与方案卡,缺独立仪表盘与逐项 diff 表。
  • 做了什么:
    • build_kpi_dashboard / GET /api/analytics/kpi:固定+柔性+MES+冲突聚合;视口「KPI」
    • build_compare_table / GET /api/analytics/compare:策略/三模式逐项最优高亮与 delta;视口「对比表」
    • query.kpi / scenario.compare / flex.compare 联动切换视口
  • 验证:test_analytics.py + 全量 golden;tsc

2026-07-22 — EX-05/09 MES 下发与报工回流(Mock)

  • 类型:feat(EX-05 + EX-09 首切片)
  • 背景:发布执行闭环缺车间侧;MD-05 SAP 桩已齐,需对称 MES 下发/报工。
  • 做了什么:
    • MockMesClient + mes.dispatch(P3 确认卡,幂等外部工单)/ mes.report(P1 进度回流)
    • 柔性版本下发后标 DISPATCHED;工序进度与订单整单完工联动
    • API:/api/mes/status|dispatch/*|execution|report;工作台「MES 执行」;口令「下发MES」「模拟报工」
  • 验证:test_mes.py + 全量 golden;tsc

2026-07-22 — MD-05 SAP 集成桩(入站拉单 / 出站回写)

  • 类型:feat(MD-05 首切片)
  • 背景:康尼验收需 SAP↔APS 双向同步;本期用进程内 Mock,无真实 RFC。
  • 做了什么:
    • MockSapClient(server/integrations/sap_stub.py)+ sap_sync 入站写柔性订单/库存、出站幂等回写
    • 意图:sap.status P0;sap.sync.inbound|outbound P2 确认卡;口令「同步SAP」「回写SAP」
    • API:/api/sap/status、inbound|outbound preview/stage;柔性工作台「SAP 集成」页
  • 验证:test_sap_sync.py + 全量 golden;tsc

2026-07-22 — EX-04 固定轨甘特拖拽调程

  • 类型:feat(EX-04 对称补齐)
  • 背景:柔性甘特已可拖;固定轨仍只读。
  • 做了什么:
    • schedule.adjust.preview / commit:工位占槽、同 PO 工序先后、维保窗口校验;提交复制 PO/WO 为新草稿
    • API:/api/schedule/adjust/preview|stage;固定甘特可拖拽 + P2 确认卡
  • 验证:test_fixed_preview_and_commit + 全量;tsc

2026-07-22 — EX-04 柔性甘特拖拽调程

  • 类型:feat(EX-04 首切片)
  • 背景:正式版甘特此前只读;POC 有拖拽,需产品化边拖边校验 + P2 提交。
  • 做了什么:
    • flex.adjust.preview(P0):15 分钟吸附、设备占槽与工序先后校验;同虚拟产线后续工序联动平移
    • flex.adjust.commit(P2):确认后生成新草稿版本,不改历史
    • API:/api/flex/adjust/preview、/stage;柔性甘特可拖拽(绿/红描边)+ 确认卡
  • 验证:test_adjust.py + 全量 golden;tsc

2026-07-22 — EX-03 冲突解决工作流(建议 + 一键修复)

  • 类型:feat(EX-03 首切片)
  • 背景:冲突此前只能在排产结果里「看见」,无法按建议修复。
  • 做了什么:
    • conflict.list / 冲突中心:最新版本未解决冲突 + 按类型的可执行建议
    • flex.conflict.resolve:P1 安全修复(解锁模具 / L1 换机 / 恢复设备);重排类走 P2 确认卡
    • API:GET /api/flex/conflicts、POST /api/flex/conflicts/resolve
    • 柔性工作台「冲突」页;对话「查看冲突」「解决冲突」
  • 验证:test_conflicts.py + 全量 golden;tsc

2026-07-22 — 故障优先 L1 + EX-10 预测预警 + 实时分钟窗

  • 类型:feat(康尼 DY-01 / EX-10 / SC-12 增强)
  • 背景:故障一律全量重排过粗;产能池缺短中长期预测;滚动层缺实时分钟精度。
  • 做了什么:
    • DY-01:apply_equipment_fault 先 dry-run L1,能全部换机则局部处理(他单不动);否则缩池 L4 重排;PRESS 冗余走 L1、WELD 单点走 L4
    • EX-10:产能分析补 4h/1d/1w 负荷利用率与 ≥85%/95% 预警列表;视口产能池展示预测芯片与告警条
    • SC-12:window=realtime(60m / 步长 1min);口令「实时排产」「分钟级排产」;工作台按钮
  • 验证:相关 golden + 全量;tsc

2026-07-22 — DY-01 真·L1 局部换机 + L2/L3/L4 升 P2 确认卡

  • 类型:feat(康尼 DY-01 收尾)
  • 背景:窗内重排此前直通执行;局部换机此前靠故障缩池整单重排,非真 L1。
  • 做了什么:
    • L1:flex.swap / local_swap_equipment — 池内空闲备机接手,只改目标工单,他单时段与设备不变,不新建版本;口令「局部换机 PRESS-01」;工作台异常页按钮;POST /api/flex/swap
    • L2/L3/L4:flex.reschedule 升 P2;对话与 POST /api/flex/reschedule 只出确认卡,批准后 execute_confirmed 执行并自动建档
    • 柔性工作台分级重排走确认卡 UI
  • 验证:test_l1_local_swap_keeps_others / test_reschedule_is_p2_and_preview + golden;tsc

2026-07-22 — 康尼 SC-12 滚动窗 + DY-01 L2/L3 + SC-11 班组约束

  • 类型:feat(康尼剩余 P0)
  • 背景:验收剧本仍缺滚动分窗与窗内重排、班组人力未进引擎。
  • 做了什么:
    • SC-12:window=short/mid/long 限制精排时域与步长(15min/60min/4h),窗外延期或截断
    • DY-01:flex.reschedule L2/L3 冻结窗外工单占槽后只重排窗内订单;L4 全量
    • SC-11:flexTeams 按工序并发人数约束占槽,工单挂 teamCode
    • 柔性工作台增加滚动排产与 L2/L3/L4 按钮;对话「短窗重排」「滚动排产」
  • 验证:test_rolling_reschedule.py + 全量 golden;tsc

2026-07-22 — 康尼需求 P0 闭环:交期三区间 / 模具寿命 / 故障插单 / 柔性工作台

  • 类型:feat(康尼芜湖验收剧本落地)
  • 背景:用户要求先完善康尼相关能力;此前引擎有、产品面板与 DY/PL 缺口大。
  • 做了什么:
    • PL-08:交期承诺补悲观区间 + gaps 资源缺口建议;对话块与柔性工作台询价
    • MD-07/SC-10:排产消耗模具寿命,到限自动 LOCKED;工作台可锁定/解锁
    • DY-01:flex.fault 设备故障缩池重排;flex.rush 紧急插单;对话口令对齐
    • SC-13:flex.compare 三模式沙盒对比 + UI
    • EX-10:柔性工作台「资源 What-if」停机/调区即时重算产能
    • 右侧「柔性工作台」:排产 / 交期 / 异常 / What-if 四页签
  • 验证:test_kangni_flex.py + 全量 golden;前端 tsc

2026-07-22 — MD-04 导入管线 + 柔性主数据页 + EX-10 产能池仪表盘

  • 类型:feat(product MD 落地,不含西门子对标文档)
  • 背景:docs/product 中 MD-04/08/09、EX-10 仍为 🔜;用户五张 Excel 需要可校验入库,并要能看见柔性资源与产能池。
  • 做了什么:
    • MD-04:importers.py + POST /api/import/preview|commit(P1 校验 / P2 入库);种类覆盖订单/物料/BOM/路线/设备/模具/工序/区域;写固定轨或 flex*
    • MD-08/09:主数据「柔性资源」页签(设备/模具/工序池/区域只读 + 导入联动);master.clear 增 flex 范围
    • EX-10:视口「产能池」模式 + PoolCapacityView(负载色标);口令 flex.capacity 联动切池并刷新
    • 订单/主数据面板挂载 ImportBar;黄金测试 test_importers.py
  • 验证:pytest tests/golden;前端 tsc

2026-07-22 — 主数据一键清理改为真正清空

  • 类型:fix
  • 背景:资源页点「一键清理」后工厂/产线仍在——原实现是回种种子,不是清空。
  • 做了什么:master.clear 按页签整表清空(资源树 / 工艺模型 / 维保);确认卡明示「清空后列表为空」。
  • 验证:golden 断言 factories/lines/materials 清空

2026-07-22 — 订单/主数据一键清理

  • 类型:feat(面板运维)
  • 背景:订单与主数据录入后缺少板块级清空,演示/试错不便。
  • 做了什么:
    • 订单面板「一键清理」→ order.clear:清空销售订单 + 采购/委外建议(P2)
    • 主数据面板「一键清理」→ master.clear:按当前页签(资源/工艺模型/日历维保)回种到种子基线(订单与历史排产不碰)
    • 对话口令:「清空全部订单」「清理工艺模型主数据」
  • 验证:golden 增补清理用例;pytest / tsc

2026-07-22 — 订单删除 + 自然语言新增/批量导入(订单与主数据)

  • 类型:feat(录数闭环)
  • 背景:订单面板只有取消没有删除;主数据/订单虽可表单维护,但缺少对话侧自然语言新增与批量导入。
  • 做了什么:
    • order.delete:物理删除销售订单,同步清该单草稿采购/委外;面板「删除订单」+ 口令「删除订单 SOxxxx」
    • data.import:口令「导入订单 / 导入物料」解析多行 CSV 或口语行,P2 确认后批量写入
    • master.material.upsert 对话新建物料;订单 order.upsert 继续支持自然语言建单
    • 快捷指令与欢迎语补充录数示例;intake.py 解析模块
  • 验证:golden 增补删除与导入用例;pytest / tsc

2026-07-22 — 工艺模型 CRUD 起步(对齐聚制云主数据分层)

  • 类型:feat(主数据外围)
  • 背景:手册要求工艺模型「物料→BOM→工序→工艺路线」全 CRUD,且排产前必须产线-产品绑定;原主数据面板只能改库存/工时,养不活排产依据。
  • 做了什么:
    • masterdata.py:物料新建/全字段/停用;BOM 头新建 + 行增删改;工序库;工艺路线新建/步骤增删改;产线-产品绑定增删改;投影补 operations/lineProducts
    • 发号器补 material/bom/operation/routing/lineProduct;Harness 登记 master.operation.upsert / master.lineProduct.upsert
    • 前端主数据「工艺模型」拆页签:物料 / BOM / 工序 / 工艺路线 / 产线绑定
    • 黄金测试 M6:工艺模型 CRUD 闭环
  • 验证:pytest tests/golden;前端 tsc

2026-07-22 — 对齐聚制云:计划追溯链 + 主数据/排产依据可查

  • 类型:feat(产品对齐 + 可解释性)
  • 背景:对照 demand/聚制云…操作手册 V1.1,当前主数据维护无分层顺序、排产结果无法沿 SO→BOM/路线→采购委外→PO/WO→负荷/库存追溯,用户感知“混乱、找不到依据”。
  • 做了什么:
    • 产品文档 docs/product/master-data-and-plan-chain.md:手册主数据分层、计划链、与现状缺口、目标追溯模型
    • 后端 server/aps_domain/trace.py + GET /api/plan/trace + 意图 plan.trace:一单给出主数据依据、分解、排产工单、负荷分钟、库存缺口与缺失项
    • 订单面板「追溯」页 + 聊天 plan-trace 块;快捷口令「追溯订单依据」
    • 知识库补种:主数据录入顺序 / 工艺路线配置 / 订单排产与追溯 / 库存齐套口径 / 柔性轨说明(旧库幂等补齐)
  • 验证:进程内分解+试排后追溯可见 BOM 缺口、工单、产线负荷;pytest/tsc 见本轮末

2026-07-22 — 外围功能补齐(只留核心算法待调):柔性可视化 / 对话建单 / MRP 下达 / 视口细节

  • 类型:feat(外围闭环,四批次)
  • 背景:核心算法(固定产线 RuleEngine、柔性 PoolEngine)已可跑;用户要求先补齐系统外围功能,只留核心算法后续慢慢调试。经全量盘点,缺口集中在四处闭环,逐一补齐(CP/GA/HYBRID 高级求解器属核心算法,不在本轮)。

批次 A — 柔性排产可视化闭环

  • 后端 server/aps_domain/flex.py + server/gateway/app.py:新增 flex_gantt_view 与 GET /api/flex/gantt(行=设备按区域分组,条=柔性工单,含换型/移动/加工分解、瓶颈/超期/冲突标记)
  • 前端:api/types.ts+client.ts 加 FlexGanttData/fetchFlexGantt;新增 viewport/FlexGanttView.tsx;ViewportPanel 追加「柔性甘特」页签与柔性 KPI;App.tsx 的 WorldData 扩展 flexGantt,refreshWorld 并拉柔性甘特,captureSessionResult/hasVisualResult 支持纯柔性结果
  • 联动:_run_flex 触发后发 viewport.mode=flex+world.refresh,右侧自动切到柔性甘特并 capture 会话结果 —— 解决「柔性排产完了看不到工单」

批次 B — 对话/写入闭环

  • order.upsert 对话建单:intent.py 加建/改单快路(客户/成品/数量/交期/等级/加急槽位抽取 + 中文日期解析)与 LLM 提示;workflow._stage_order_upsert 解析成品并出 P2 确认卡,缺字段友好追问;orders.find_product_by_hint 按名称/编码模糊解析成品
  • text UIBlock:ChatPanel 补 TextBlock 渲染(标题+正文+要点),不再静默丢弃

批次 C — MRP 建议单确认下达(DRAFT→正式)

  • mrp.py:confirmation_for_mrp_release / apply_mrp_release(DRAFT→RELEASED,可按订单/按 采购·委外 粒度)
  • harness 注册 mrp.release=P2;contracts 加意图;workflow 出卡 + execute_confirmed 执行(写前自动建档);intent 加「下达」快路 + LLM 提示
  • POST /api/mrp/release 出确认卡;OrderPanel 分解视图加「确认下达全部/只采购/只委外」按钮与 DRAFT/已下达状态徽标

批次 D — 视口细节

  • 视口工具栏「时间粒度」徽标改为可点切换(天⇄小时)

  • 负荷热力视图响应产线聚焦(load_view 行补 lineCode,LoadView 按编码过滤)

  • 验证:pytest 全套 51 项全绿;前端 tsc --noEmit 通过、vite build 成功;进程内实测 order.upsert(建单落库)与 MRP 分解→下达(48 采购草稿全部 RELEASED)闭环通过


2026-07-22 — 柔性排产结果可下钻:每条产线给出工单级依据 + 冲突原因

  • 类型:feat(可解释性)
  • 背景:用户反馈「排产结果很混乱,要每条结果都有数据可依据」。原 flex-schedule 块只给完工时间与准时/超期标签,看不到时间是怎么算出来的。
  • 做了什么:
    • 后端 server/aps_domain/workflow.py 的 _run_flex:结果块新增两部分依据——
      • 每条虚拟产线携带 steps(工单级明细:序/工序/设备+区/模具/换型min/移动min/加工min/起止时段/是否瓶颈)
      • 顶层 conflicts(DELAY/缺料/无能力等,含描述与处置建议);虚拟产线按交期排序消除“混乱观感”,并补充订单号/优先级列
    • 前端 apps/web/src/chat/ChatPanel.tsx 的 FlexScheduleBlock:行可点击展开,内嵌工单明细表 + 表尾说明「完工时间 = 各工序(换型+移动+加工)沿工艺顺序跨班次累加」;底部列出冲突依据清单
    • 样式 apps/web/src/styles.css:新增 .flex-line-row/.flex-detail/.flex-step-table/.flex-conflicts 等
  • 验证结果(进程内核对):FO-2602 高压线束 6 道工序完整展开(来料检验→下线→压接★→装配→测试→包装,各工时/设备/模具清晰);4 项 DELAY 冲突与超期标签一一对应
  • 回归:tests/golden(51)全绿,test_pool_engine(14)全绿

2026-07-22 — 柔性演示数据重做:对齐康尼芜湖 4 产品共线场景

  • 类型:feat(数据)
  • 背景:原柔性种子只有 2 产品(线束/PDU),与 demand/ 康尼芜湖方案的「4 类共线产品 + 7 能力池」不匹配,演示不够真实。
  • 做了什么(server/state/seed.py 的 _seed_flex,忠实吸收 demand §3.2/§3.3/§6.1):
    • 4 类产品:高压线束总成 HV-HARNESS、PDU 配电单元 PDU-UNIT、充电枪总成 CHARGE-GUN、高压连接器 HV-CONN
    • 10 道工序,四类瓶颈与方案 §6.1 对齐:压接端子(线束)、激光焊接(PDU·全厂最紧)、控制盒装配ESD(充电枪)、插拔力测试(连接器)
    • 22 台设备 / 4 区域:下线机×2、压接机×4(可移动跨区)、装配台×3、激光焊接机×1、氦质谱+气密检测×2、ESD 装配台×2、测试台×4、插拔力测试机×1、来料检验×1、包装台×2
    • 5 副压接模具家族(代表 50+ 套)、12 项物料 + 8 条 BOM(4 成品各自关键料)、4 条工艺路线(含共用压接池的产品竞争)
    • 10 张多品种小批量订单(4 产品,交期/优先级错落,8 RELEASED + 2 CREATED)
    • 班组扩到 5 个覆盖新工序
  • 验证结果(进程内核对):跑一版柔性排产 → 10 条虚拟产线 / 56 工单;瓶颈识别 = 压接(4台)·焊接(1台)·ESD(2台)·插拔力(1台);瓶颈产能法:限制性瓶颈=激光焊接≈88件/天、ESD≈182、插拔力≈228、压接≈1795(与 demand §6.1 的 96/192/240/960 量级一致)
  • 同步更新:tests/golden/test_pool_engine.py 计数断言(5单/30工单 → 10单/56工单;vlCount/onTime 值域)
  • 涉及路径:server/state/seed.py · tests/golden/test_pool_engine.py
  • 验证:全量 pytest 51 passed;scripts/flex_simulation.py 全流程 exit 0
  • 注意:旧 world.json 会被 ensure_flex_seed 幂等补种为旧结构——要看新数据需重启后端并「重置数据」(或删除持久化 world.json)
  • 文档同步:本文件

2026-07-22 — 修复:对话气泡样式塌陷 + 柔性回复图文表格化

  • 类型:fix + feat(前端)
  • 背景(缺陷):
    1. 右侧用户气泡出现「短中文一字一行竖排」——根因是 .bubble 的 word-break: break-all 遇上 .msg.user .msg-content 的 align-items:flex-end,令气泡塌陷到"单字符最小宽度"
    2. 左侧柔性排产/瓶颈产能/交期承诺回复全是纯文字,可读性差
  • 做了什么:
    • apps/web/src/styles.css:修 .bubble → width: fit-content; max-width: 100%; overflow-wrap: break-word; word-break: normal(短内容抱紧、长内容按容器宽换行,不再逐字竖排);新增柔性块样式(KPI 指标格、虚拟产线表、瓶颈标签、能力池条形图、交期双卡)
    • server/contracts.py + apps/web/src/api/types.ts:UIBlock.type 新增 flex-schedule / flex-capacity / flex-due
    • server/aps_domain/workflow.py:三个柔性处理分支改为「一句话结论文案 + 结构化 UIBlock」——排产结果给 KPI 指标格 + 虚拟产线表(产品/数量/工序数/完工/交期/准时标签)+ 瓶颈标签;瓶颈产能给各能力池日产能条形图(瓶颈池橙→黄高亮);交期承诺给乐观/预计双卡
    • apps/web/src/chat/ChatPanel.tsx:新增 FlexScheduleBlock / FlexCapacityBlock / FlexDueBlock 三个渲染组件;快捷指令加「跑一版柔性排产 / 瓶颈产能 / PDU 500套什么时候能交」
  • 涉及路径:apps/web/src/styles.css · apps/web/src/chat/ChatPanel.tsx · apps/web/src/api/types.ts · server/contracts.py · server/aps_domain/workflow.py
  • 验证:npx tsc -b 通过(前端零类型错误);全量 pytest 51 passed;in-process 核对三类柔性块 props 结构正确
  • 注意:需重启后端 + 前端热更新(或刷新页面)生效
  • 文档同步:本文件

2026-07-22 — 修复:柔性排产接入对话意图管线(不再降级乱答)

  • 类型:fix + feat
  • 背景(缺陷):柔性排产此前只有 /api/flex/* REST 接口,未进意图管线。用户在对话里说「走一个全流程排产」时,既不命中固定产线 schedule.run(其要求"试排/重排/跑一版"动词),就降级到 LLM/知识库,把《排产逻辑》PPT 原文当答案吐出——表现为"乱回答"。
  • 做了什么:
    • server/contracts.py:IntentName 新增 flex.schedule / flex.capacity / flex.simulate_due(并补登此前遗漏的 order.decompose,修掉其经对话触发时的契约校验隐患)
    • server/agent_core/intent.py:一级规则快路新增柔性触发词——柔性/能力池/虚拟产线/多品种小批量/全流程排产,以及方向词 正排(ASC)/倒排(DESC)/瓶颈锚(BOTTLENECK)(方向词在本系统仅 PoolEngine 实现,故归柔性);交期问句(何时/多久能交 + 产品 + 数量)→ flex.simulate_due 并抽出 productCode/quantity;同步补 LLM 意图枚举
    • server/aps_domain/workflow.py:新增 flex.schedule(回执版本/虚拟产线/瓶颈/准时率/各单完工)、flex.capacity(瓶颈产能法各池日产能 + 限制性瓶颈)、flex.simulate_due(乐观/预计完工)三个处理分支与文案;_HELP 增列柔性口令
    • server/state/seed.py:新增幂等 ensure_flex_seed();柔性领域服务在读写前调用,旧 world.json(flex 层加入前落盘)自动补齐柔性主数据,无需手动重置
    • server/agent_core/harness.py:登记 flex.capacity/flex.simulate_due 为 P0(只读)
  • 涉及路径:server/contracts.py · server/agent_core/intent.py · server/aps_domain/workflow.py · server/aps_domain/flex.py · server/state/seed.py · server/agent_core/harness.py · tests/golden/test_pool_engine.py
  • 验证:新增意图路由护栏 F12(3 用例:柔性五口令+模式解析 / 瓶颈产能+交期槽位抽取 / 固定产线与知识库不被误吞);全量 pytest 51 passed;in-process 跑通全部柔性口令并核对回执文案
  • 注意:需重启后端加载新代码;旧世界首次触发柔性口令会自动补种(无需 重置数据)
  • 文档同步:本文件

2026-07-22 — 柔性排产全流程操作手册 + 自然语言流程描述

  • 类型:docs
  • 做了什么:
    • 新增 docs/product/flex-simulation-guide.md:第一部分「自然语言全流程描述」(设备虚拟化→能力池→虚拟产线→瓶颈产能→交期承诺→动态重排,用大白话讲一遍);第二部分走法 A 一键脚本;第三部分走法 B 逐接口(PowerShell Invoke-RestMethod 示例 + 端点速查);第四部分走法 C 换真实数据;第五部分验收清单 + 常见问题
    • 在 docs/product/README.md 与大管家 docs/README.md 导航登记本手册与数据采集模板
  • 涉及路径:docs/product/flex-simulation-guide.md · docs/product/README.md · docs/README.md · 本文件
  • 验证:文档交叉引用自检;命令与端点签名对照 server/gateway/app.py / scripts/flex_simulation.py;未改运行代码
  • 文档同步:product/* · docs/README.md · 本文件

2026-07-22 — 柔性排产全流程模拟 + 瓶颈产能法 + 三模式差异化

  • 类型:feature + docs
  • 做了什么:
    • 新增端到端模拟脚本 scripts/flex_simulation.py:一次跑通「主数据/产能池 → 瓶颈锚排产+虚拟产线甘特 → 瓶颈产能评估 → 正/倒/瓶颈锚三模式对比 → 交期承诺(PDU 500套) → 动态重排(紧急插单 / 设备故障)」全链路,全中文可读输出
    • 新增 capacity_analysis(瓶颈产能法 PL-07)+ GET /api/flex/capacity:按能力池算日产能=池可用工时÷单件工时,标出限制性瓶颈(本演示=单机激光焊接池 88件/天,对照台账法压接池虚高 1920件/天)
    • 修 PoolEngine 倒排(DESC)排序:改为交期最晚优先,使三模式在压力场景下真正分化(正排/瓶颈锚 114h 延迟、准时 1/5;倒排 295h、准时 0/5)
    • PoolEngine 结果新增 makespan(最晚完工)与 onTimeCount(准时单数)
    • 动态调度双案例:可移动压接机故障(池化韧性、日产能 1795→1344 仍有冗余)vs 单点瓶颈焊接机故障(无备机 → PDU 停摆,暴露 NO_CAPABILITY,提示备机/外包/议交期)
  • 涉及路径:scripts/flex_simulation.py · server/engines/pool_engine.py · server/aps_domain/flex.py · server/gateway/app.py · tests/golden/test_pool_engine.py · docs/**
  • 验证:python -m pytest tests\golden -q → 48 passed(原 46 + 新 F10/F11);python scripts\flex_simulation.py 全流程跑通
  • 文档同步:product/features.md(PL-07)· product/implementation-spec.md · architecture/harness.md(/api/flex/capacity)· 本文件
  • 遗留:前端虚拟产线甘特 + 产能池仪表盘(EX-10);真正的滚动窗口分窗(SC-12)与局部重排(DY-01 L1/L2,当前重排为全量 L4)

2026-07-22 — 柔性排产首切片:设备能力池 + 虚拟产线(PoolEngine)

  • 类型:feature + docs
  • 做了什么:
    • 新增柔性排产引擎 server/engines/pool_engine.py(PoolEngine,name=FLEX):订单→每道工序从能力池(拥有该工序能力的设备集合)动态取设备→组装虚拟产线(flexVirtualLines);含模具适配/换型、可移动设备移动耗时、设备级占槽、工序 precedence;支持 ASC 正排 / DESC 倒排 / BOTTLENECK 瓶颈锚 三模式(吸收 排产逻辑.ppt)
    • 种子追加 flex* 数据(server/state/seed.py 的 _seed_flex):区域、可移动压接机×4+下线/焊接/检漏/测试等设备、高压端子模具族、产品 HV-HARNESS/PDU-UNIT 及工艺/BOM/订单/参数;与固定产线层并行独立键,不进 RULE 引擎与既有计数
    • 新增领域服务 server/aps_domain/flex.py:能力池投影 capability_pools、flex_overview、run_flex_schedule(P1 经 harness.guard+审计)、simulate_due(交期承诺模拟雏形,深拷贝沙盒)
    • 端点:GET /api/flex/world · POST /api/flex/schedule · POST /api/flex/simulate-due;harness 登记 flex.schedule P1
    • 产出数据采集模板 docs/product/demand-data-intake.md(11 张表字段+示例,兼作合成种子 schema)
    • 黄金测试 tests/golden/test_pool_engine.py(F1–F9:计数/设备无双占/工序序/压接必占适配模具/瓶颈摘要/冲突结构/移动痕/利用率值域/三模式)
  • 涉及路径:server/engines/pool_engine.py · server/engines/__init__.py · server/aps_domain/flex.py · server/state/seed.py · server/state/store.py · server/agent_core/harness.py · server/gateway/app.py · tests/golden/test_pool_engine.py · docs/**
  • 验证:python -m pytest tests\golden -q → 46 passed(原 37 + 新 9,无回归)
  • 文档同步:product/features.md(§0 + MD-08/09·SC-13/14·PL-07/08)· product/implementation-spec.md · product/demand-data-intake.md · architecture/harness.md · architecture/modules.md · 本文件
  • 遗留:前端虚拟产线甘特 + 产能池仪表盘(EX-10);滚动窗口分窗(SC-12);班组人力约束进排产(SC-11);柔性层与固定产线层的统一;意图口令「柔性排产」(当前经 REST 触发)

2026-07-22 — 吸收 demand/ 真实需求进产品文档

  • 类型:docs
  • 做了什么:
    • 解析 demand/:康尼芜湖柔性排产与产能评估方案(docx)+ 排产逻辑(ppt 正排/倒排/瓶颈混合)
    • 新增 docs/product/demand-kangni-wuhu.md:抽象为行业无关能力,并与现有编号映射;明确非绑定客户工厂
    • features.md 登记 MD-08/09、SC-12~14、PL-07/08、EX-10、DY-01、IND-03;差距清单按真实需求 P0 重排(柔性资源模型优先)
    • 同步 implementation-spec 编号总表、positioning 需求输入声明、product/大管家索引;.gitignore 忽略本地提取目录
  • 涉及路径:docs/product/demand-kangni-wuhu.md · docs/product/features.md · docs/product/implementation-spec.md · docs/product/positioning.md · docs/product/README.md · docs/README.md · docs/product/aps-benchmark-siemens.md · .gitignore
  • 验证:文档交叉引用自检;未改运行代码
  • 文档同步:product/* · 本文件
  • 遗留:新编号落地规格卡随 M4/M5 开工补齐;柔性场景种子数据与引擎实现另开切片

2026-07-16 — 订单分解 MRP 首切片 + BOM/工艺路线可维护(对标西门子)

  • 类型:feature + docs
  • 做了什么:
    • 新增 MRP 领域服务 server/aps_domain/mrp.py:订单按 BOM/工艺路线分解为 自制(进排产)/ 采购建议(净需求=毛需求−库存−在途,建议下单日按采购前置期倒排)/ 委外建议(isExternal 外协工艺步骤);写入 purchaseOrders/outsourceOrders DRAFT 建议表,重复分解幂等替换
    • order.decompose 登记 P1;GET /api/mrp + POST /api/mrp/decompose;对话口令「分解订单 SOxxx / 生成采购建议 / MRP」走同一动作
    • MD-02 深化:新增 master.bom.upsert(明细用量/关键料)与 master.routing.upsert(准备/单件时间/外协标记)两个 P2 动作;主数据面板选中成品后可直接编辑 BOM 与工艺步骤
    • 订单面板新增「分解建议」视图与「分解此单」按钮,展示采购/委外建议(含来源订单、建议下单日、前置期)
    • 黄金测试 tests/golden/test_mrp.py:缺料出采购建议+前置期倒排、充足物料零建议、外协往返、指定订单幂等、BOM 用量联动
  • 涉及路径:server/aps_domain/mrp.py · server/aps_domain/masterdata.py · server/aps_domain/workflow.py · server/agent_core/harness.py · server/agent_core/intent.py · server/gateway/app.py · server/state/seed.py · server/state/store.py · apps/web/src/orders/OrderPanel.tsx · apps/web/src/master/MasterPanel.tsx · apps/web/src/api/* · tests/golden/test_mrp.py · docs/**
  • 验证:python -m pytest tests\golden -q → 37 passed;npm run build → 成功
  • 文档同步:product/features.md(OR-07)· product/journeys.md(旅程 A4)· product/implementation-spec.md · product/aps-benchmark-siemens.md · architecture/harness.md · architecture/modules.md · 本文件
  • 遗留:建议单确认下达(转正式采购/委外,P2/P3 对接 ERP)、跨订单库存分配、多层 BOM 级联、引擎跳过外协工序占槽为后续切片

2026-07-16 — MD-01/02/03 主数据维护模块首切片

  • 类型:feature + docs
  • 做了什么:
    • 新增主数据领域服务 server/aps_domain/masterdata.py:资源树/物料BOM/日历维保只读投影 + master.line.upsert(产线编辑停启用)/ master.material.upsert(库存在途安全库存)/ master.maintenance.upsert(维保新增取消)三个 P2 写动作
    • 新增 GET /api/master 与 POST /api/master/stage;页面只暂存确认卡,批准统一走 /api/actions/confirm,写前自动 Checkpoint + 审计链
    • 引擎联动修复:find_product_lines / find_workstation_for_operation 补 ACTIVE 过滤(停用资源不进新排产);维保冲突检测忽略 CANCELLED 窗口
    • 前端新增主数据面板 MasterPanel(资源/物料与BOM/日历与维保三页签),侧栏与右侧工具栏、命令面板均可进入
    • WorldStore 发号器支持 maintenance 表
    • 黄金测试 tests/golden/test_master_data.py:停用产线排除、库存调零缺料增加、维保窗口冲突往返、确认卡校验、审计链完整
  • 涉及路径:server/aps_domain/masterdata.py · server/gateway/app.py · server/aps_domain/workflow.py · server/agent_core/harness.py · server/engines/queries.py · server/engines/rule_engine.py · server/state/store.py · apps/web/src/master/MasterPanel.tsx · apps/web/src/App.tsx · apps/web/src/projects/ProjectPanel.tsx · apps/web/src/api/* · tests/golden/test_master_data.py · docs/**
  • 验证:python -m pytest tests\golden -q → 33 passed;npm run build → 成功
  • 文档同步:product/features.md · product/journeys.md(旅程 A3)· product/implementation-spec.md · architecture/harness.md · architecture/modules.md · 本文件
  • 遗留:工位/设备编辑、BOM/工艺路线版本发布、周日历模板、Excel 导入(MD-04)为后续切片;主数据意图口令(对话入口)后续补齐

2026-07-16 — 对标西门子 Opcenter APS 完善产品功能清单

  • 类型:docs
  • 做了什么:
    • 新增 docs/product/aps-benchmark-siemens.md:以西门子 Opcenter APS(原 Preactor)三大模块 + 8 段标准流程为标尺,逐项盘点覆盖度与差距
    • features.md 扩充:新增「计划层 Advanced Planning」章节(PL-01~PL-06)+ 主数据/订单/排产/执行多项对标功能点(MD-05~07、OR-05~06、SC-07~11、EX-06~09、IND-01~02),差距清单按「缺口×频率」重排
    • implementation-spec.md 编号总表同步新增 25 个功能编号
    • 更新 product 索引与大管家导航
  • 涉及路径:docs/product/aps-benchmark-siemens.md · docs/product/features.md · docs/product/implementation-spec.md · docs/product/README.md · docs/README.md
  • 验证:文档编号一致性自检;未改运行代码
  • 文档同步:product/* · docs/README.md · 本文件
  • 遗留:新登记功能点的落地规格卡随各里程碑(M4/M5/M6)开工时补齐;计划层 AP 为最大缺口

2026-07-16 — Codex 式工作台布局与会话节点导航

  • 类型:feature + fix + docs
  • 做了什么:
    • 将左侧从图标轨/项目面板改为 Codex 桌面端式工作区侧栏:快捷入口、项目列表、当前项目任务、底部设置
    • 去掉顶栏重复项目/任务标题,中央区域回归沉浸式对话;无结果数据时对话区铺满主工作区
    • 订单管理、检查点/版本、会话结果收敛到右侧工具入口,结果视图按当前会话快照展示
    • 新增会话节点导航:对话区最右侧生成消息节点,悬停显示节点摘要,点击滚动到对应消息
    • 修复上一版左侧新结构缺少样式导致原生控件裸露的问题
    • 修复右侧工具展开后的大面积空白:右侧工作区改为吃满剩余空间,竖向工具栏固定贴最右侧
  • 涉及路径:apps/web/src/App.tsx · apps/web/src/projects/ProjectPanel.tsx · apps/web/src/chat/ChatPanel.tsx · apps/web/src/styles.css
  • 验证:npm run build → 成功;python -m pytest tests\golden -q → 28 passed
  • 文档同步:本文件
  • 遗留:左侧快捷入口后续可继续绑定真实“知识库管理”页面;当前先复用设置/集成入口

2026-07-16 — 首屏引导与操作口径专业化

  • 类型:fix + docs
  • 做了什么:
    • 将对话首屏从口号式说明改为“排产工作流 / 方案评估 / 版本治理 / 视图分析”的业务化引导
    • 快捷指令与命令面板改为计划员工作台口径,如“多策略方案对比”“查看当前KPI”“发布当前排产版本”
    • 甘特空态、时间线空态、后端帮助和无版本提示统一为专业表达
    • 增加旧欢迎语本地缓存迁移,命中“左边说,右边动”时自动替换新版欢迎语,不清空其他消息
  • 涉及路径:apps/web/src/chat/ChatPanel.tsx · apps/web/src/App.tsx · apps/web/src/viewport/GanttView.tsx · apps/web/src/timeline/TimelineRail.tsx · server/aps_domain/workflow.py · server/aps_domain/reports.py
  • 验证:npm run build → 成功;python -m pytest tests\golden -q → 28 passed
  • 文档同步:本文件
  • 遗留:项目/任务默认名称后续可随真实项目模板继续行业化

2026-07-16 — OR-01 订单管理首切片 + 审计契约修复

  • 类型:feature + fix + docs
  • 做了什么:
    • 新增订单领域服务:订单只读投影、成品校验、order.upsert/cancel/complete P2 写入逻辑
    • 新增 GET /api/orders 与 POST /api/orders/stage,订单页面只暂存确认卡,批准仍统一走 /api/actions/confirm
    • 前端新增订单管理面板:列表、编辑表单、新建/编辑/取消/完成、内嵌确认卡与批准/驳回
    • 修复审计事件时间契约:新增 at,保留 ts,治理页与旧数据兼容
    • 黄金测试新增 OR-01 覆盖:新增订单进入排产、取消订单排除、确认卡摘要、审计双字段
    • 同步门禁矩阵、模块登记、产品状态、业务旅程与落地规格
  • 涉及路径:server/aps_domain/orders.py · server/aps_domain/workflow.py · server/gateway/app.py · server/agent_core/audit.py · apps/web/src/orders/OrderPanel.tsx · apps/web/src/App.tsx · apps/web/src/api/* · tests/golden/test_order_management.py · docs/**
  • 验证:python -m pytest tests\golden -q → 28 passed;npm run build → 成功
  • 文档同步:product/features.md · product/journeys.md · product/implementation-spec.md · architecture/harness.md · architecture/modules.md · 本文件
  • 遗留:OR-01 后续仍缺多明细、批量变更、附件;OR-03 订单审核状态机未做

2026-07-16 — 产品功能落地规格补全

  • 类型:docs
  • 做了什么:
    • 新增 docs/product/implementation-spec.md,按主数据、订单、排产、执行、对话治理拆出功能落地卡
    • 为每个功能点补充用户目标、最小切片、权力等级、数据对象、API/动作、UI、验收与测试要求
    • 在 features.md 增加落地规格编号,覆盖当前可演示能力、主数据、订单、排产引擎、结果执行、对话治理
    • 更新 product 索引和大管家导航,产品评审可从功能清单跳到落地规格
  • 涉及路径:docs/product/implementation-spec.md · docs/product/features.md · docs/product/README.md · docs/README.md
  • 验证:文档链接与编号自检;未改运行代码,未跑业务测试
  • 文档同步:product/* · docs/README.md · 本文件
  • 遗留:后续实现任一功能时仍需同步 journeys.md、harness.md 或 algorithm/* 的对应落地细节

2026-07-16 — 文档体系重组(大管家 + 分类落地)

  • 类型:docs
  • 做了什么:
    • 建立 docs/README.md 大管家入口与活文档铁律
    • 按角色拆分:product/ · architecture/ · algorithm/
    • PROGRESS.md → CHANGELOG.md;HARNESS/REGEN/FEATURES 迁入对应分类并校正「已落地 vs 规划」口径
    • 种子工厂名改为「演示工厂」(去地域硬编码,与产品通用定位一致)
  • 涉及路径:docs/** · plan.md §12.9 · README.md · server/state/seed.py
  • 验证:文档结构自检;种子仅改展示名,不影响黄金测试键结构
  • 文档同步:本文件 · product/* · architecture/* · algorithm/* · 大管家
  • 遗留:plan.md 蓝图中仍有大量「目标态」章节,以 docs/algorithm/ 与 product/features.md 的状态列为准

2026-07-16 — 产品化整改:缺陷修复 + 设置收敛 + 通用化

  • 类型:fix + feature + docs
  • 做了什么:
    • 修复右侧无数据:/api/gov/tests?run=true 改为 asyncio.to_thread;前端 refreshWorld 逐端点兜底 + 3s 重试
    • 导航收敛:轨道仅 项目/对话/时间线/设置;门禁与重生并入设置
    • 前端种子项目改「演示项目(示例数据)」;顶栏「智能排产 · 通用行业版」
    • 产出功能清单(后迁入 product/features.md)
  • 涉及路径:server/gateway/golden.py · apps/web/src/** · docs/
  • 验证:后端多端点 200;npm run build 通过
  • 遗留:订单/主数据管理页等见 product/features.md 差距清单

2026-07-16 — plan.md 深水区五问补全

  • 类型:docs
  • 做了什么:plan.md 增补约束体系、主控参数、方案优选、插单重排、小样本迁移等蓝图节(目标态,多数未进代码)
  • 涉及路径:plan.md
  • 验证:章节编号连贯
  • 遗留:落地以 algorithm/scheduling-v1.md 为准;蓝图能力标 🔜

2026-07-16 — UI 对标 Codex 操作

  • 类型:feature
  • 做了什么:新建任务前置、Kebab 菜单、任务重命名、多行输入、快捷指令收起
  • 涉及路径:apps/web/src/projects/** · apps/web/src/chat/** · apps/web/src/shell/**
  • 验证:npm run build 通过
  • 遗留:任务状态仍前端固定「运行中」

2026-07-16 — M3 知识与偏好

  • 类型:feature
  • 做了什么:知识资产库 + bigram 检索带出处;日报/版本对比报告;偏好加权缺省策略;意图与前端 evidence/report 块
  • 涉及路径:server/knowledge/** · server/aps_domain/reports.py · apps/web/** · tests/golden/test_m3_knowledge.py
  • 验证:pytest tests/golden -q → 24 passed;npm run build;E2E M3 PASS
  • 遗留:真向量 RAG、会话树服务端化、上下文四层管理

2026-07-16 — M2.5 Codex 级产品表面 + 文档体系初建

  • 类型:feature + docs
  • 做了什么:治理端点、GovConsole、Ctrl+K、过程文档初版
  • 验证:黄金测试全绿;npm run build
  • 遗留:权力矩阵在线编辑 🔜 M4

2026-07-16 — M2 前端补完(项目制 + 折叠 + 分隔条)

  • 类型:feature
  • 做了什么:项目/任务/文件、折叠轨、分隔条、时间线回滚口令
  • 验证:当时黄金测试 15/15;构建通过
  • 遗留:项目数据仍在浏览器 localStorage

2026-07-15~16 — M2 后端(成对状态 + 沙盒 + 时间线)

  • 类型:feature
  • 做了什么:Checkpoint、Explore 沙盒对比、时间线/治理 API、审计链
  • 验证:15/15

2026-07-15 — M0 + M1(Monorepo + 左说右动闭环)

  • 类型:feature
  • 做了什么:FastAPI + React 壳、规则引擎、意图两级管线、Harness、三视图
  • 验证:当时 11/11;断 LLM 可降级

更早 — M-POC

  • 类型:chore
  • 做了什么:poc/workbench.html 静态左说右动验证