# 变更登记簿(CHANGELOG) > **大管家的账本。** 每次改代码、加功能、改功能、修缺陷,同一轮必须追加一节。 > 写法见 [docs/README.md §2.2](./README.md)。旧名:`PROGRESS.md`(已迁入本文件)。 --- ## 2026-07-24 — 桌面/Web 双形态与 ~/.aps(对标 Codex) - **类型**:feat - **背景**:Skill 只是服务端 JSON 卡片,不是 Codex 式用户目录资产;缺桌面壳与双端打包命令。 - **交付**: - `server/aps_home.py`:`APS_MODE=desktop` → `~/.aps/{skills,sessions,data,…}`;Web 默认 `server/data` - Skill 改为目录布局 `skills//manifest.json`(`APS_SKILLS_PATH` 单文件仍兼容测试) - Electron 壳 `apps/desktop/`;根脚本 `npm run dev:web|dev:desktop`、`build:web|build:desktop` - `GET /api/system/paths`;管理台展示 skills 目录 - 文档:`docs/architecture/desktop.md` - **测试**:`test_aps_home` ## 2026-07-23 — 通用机加工排产平台(M-A…M-G 七里程碑落地) - **类型**:feat - **背景**:康尼数据硬编码在代码里、工时缺失被引擎默默按 1 分钟兜底、UI 无组件库、Skill 只读、RAG 无管理页且外部算法无法消费、低置信直接拒识不追问。目标:升级为面向整个机加工行业的通用排产平台。 - **交付**: - **M-A 数据库地基**:`server/db/`(SQLAlchemy 2.0 + SQLite `master.db`,多项目隔离)+ world 双向投影(引擎零改动);康尼口径全部搬进 `server/importers/profiles/kangni.json`(代码零硬编码);演示数据 → `server/data/packs/demo.json` 数据包(日期按 baseDate 平移重放) - **M-B 工时闭环**:`readiness.py` 齐备度检查(产品→路线→工时→资源→日历);工时来源标记(实测/推断/模板/待维护);排产后显式产出 `TIME_UNMAINTAINED`/`TIME_INFERRED` 冲突;`readiness.query` P0 / `flex.time.update` P2;主数据页新增「工时维护」矩阵视图(行内编辑→P2) - **M-C UI 改版**:antd(ConfigProvider 暗色主题对齐 #F97316);订单/主数据/柔性面板全面 Table/Drawer/Form/Tabs/Modal 组件化,P2 确认卡统一 Modal - **M-D Skill 管理台**:`SkillConsole.tsx` Codex 式双面板(概览/健康/契约/测试/日志页签,启停 Switch/登记表单走 P2);manifest 扩展 `version/capabilities/ragScopes`(旧配置自动升级);契约 `schemaVersion`;`/api/skills/{id}/enable|audit|history|test`、`/api/skills/contracts` - **M-E RAG 平台**:`KnowledgePanel.tsx` 知识管理页(资产/检索调试/模板库/索引状态);`routing_templates.py` 行业工艺路线结构化模板库(与知识资产互引);`POST /api/rag/query` 供外部 Skill 消费(ragScopes 鉴权);Problem 可注入 `meta.knowledgeRefs`;索引状态/重建 API - **M-F 对话智能**:`dialog.py` 多轮澄清槽位机(低置信→候选卡→序号/关键词回填,两轮上限)+ 引导式排产向导 `schedule.wizard`(缺路线推荐模板/缺工时追问/缺日历给默认,写入全走 P2) - **M-G 收尾**:`docs/architecture/database.md`、`dialog.md` 新增;`rag.md`/`skills.md`/`harness.md`/`modules.md` 同步;端到端验收 `test_e2e_acceptance`(入库→工时维护→向导排产→外部 skill 试排→知识问答) - **测试**:`test_db_projection`、`test_excel_importer`、`test_readiness`、`test_dialog_clarify`、`test_schedule_wizard`、`test_routing_templates`、`test_skill_console`、`test_e2e_acceptance`;全量 golden 226 通过;前端 `tsc --noEmit` 零错误 + vite build 通过 ## 2026-07-23 — RAG 知识库 + 外部算法排产 Skill - **类型**:feat - **背景**:知识库仅 bigram 吐原文、无文档导入;排产引擎不可插拔外部算法。 - **交付**: - RAG:`ingest` 切块入库(P2)、`EmbeddingProvider` 混合嵌入、`hybrid_search`、`chat_text` 生成式问答带出处 - Skill:中性 `SchedulingProblem/Solution` DTO、`ExternalEngine`、`SkillRegistry`、`algo.stub`、口令与 harness 权力登记 - API:`/api/knowledge/import*`、`/api/skills*`;设置页「算法 Skill」列表+健康检查 - 文档:`docs/architecture/rag.md`、`skills.md`;harness/modules 同步 - **测试**:`test_knowledge_ingest`、`test_embedding_fallback`、`test_external_engine` ## 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`](./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` 静态左说右动验证