aps-agent/docs/round-88-chat-data-algorith...

62 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Round 88:对话指定数据包与排产算法
## 目标
让用户可以用一条自然语言指令同时指定数据来源和算法,例如:
> 使用 Optimize synthetic debug V1 数据,用 EDD 算法生成排产方案
也支持指定本机目录里的文件:
> 使用 D:\\aps-data 目录下的 orders.xlsx 数据用 EDD 算法生成排产方案
系统应解析出 `dataPackRef`、`engine=OPTIMIZE` 和 `sortMode=EDD`,从已登记的数据包加载完整世界,再通过现有柔性闭环流程生成方案。
## 设计
1. 已登记数据包使用 `server/state/packs.py` 的通用注册表解析,不增加某个客户或某个文件的专用 loader。目录/文件指令复用 `analyze_project_deep` 的通用 Excel/CSV/SQL 读取器;路径不存在时不回退到旧世界。
2. 对话解析器识别 Optimize 算法及 EDD/SPT/PRIORITY/FIFO/LPT/CR/ATC 等排产规则,并保留原有未点名算法时的默认行为。
3. `_run_flex` 在明确指定数据包时替换当前会话世界、重置 ID 计数器并记录所选包;随后把算法交给现有 `run_flex_schedule(..., engine_type="OPTIMIZE")`,不复制调度逻辑。
4. 结果块增加数据包和算法证据,文本明确显示“使用哪个数据包、哪个算法、生成多少虚拟产线/工单”。
## 实施范围
- `server/state/packs.py`:包别名和通用引用解析。
- `server/agent_core/intent.py`:数据包引用、算法槽位和自然语言参数。
- `server/aps_domain/workflow.py`:加载包、重置计数器、结果证据和未找到包的错误提示。
- `server/data/packs/optimize-simulation-v1.json`:补充可读 aliases(仅包元数据)。
- `tests/golden/test_optimize_chat_data_selection.py`:解析和端到端柔性排产验证。
## 验收标准
- 指令 `使用 Optimize synthetic debug V1 数据,用 EDD 算法生成排产方案` 命中 `flex.schedule`,参数包含 `dataPackRef`、`engine=OPTIMIZE`、`sortMode=EDD`。
- 指令 `使用 D:\\aps-data 目录下的 orders.xlsx 数据用 EDD 算法生成排产方案` 命中 `flex.schedule`,参数包含 `dataDir`、`dataFile`、`dataPath`、`engine=OPTIMIZE`、`sortMode=EDD`。
- 在干净会话中执行后得到 `FEASIBLE`、10 条虚拟产线、72 条工单,结果块能看到数据包名称和算法。
- 未知数据包不会创建排产版本,并返回可用数据包提示。
- 不存在的目录或文件不会使用当前旧数据排产,而是直接返回路径错误。
- 普通“生成一版柔性排产方案”仍走原来的 CLOSED_LOOP 默认路径。
## 验证命令
```text
pytest -q tests/golden/test_optimize_chat_data_selection.py tests/golden/test_optimize_chat_trigger.py tests/golden/test_optimize_simulation_world_pack.py tests/golden/test_optimize_engine.py
```
再使用独立 `APS_HOME` 启动后端和前端,通过 `/api/chat` 发送上述完整中文指令,检查 SSE 中的 intent 参数、`FEASIBLE` 结果及 10/72 统计。
## 风险与边界
- 数据包选择是显式的会话世界替换,只允许来自注册表的路径;本轮不开放任意路径加载。
- 规则名由 Optimize 适配器支持的 dispatch rule 白名单约束,未知算法不会被静默当成 EDD。
- 当前轮次只在 `round/88-chat-data-algorithm-selection` 验证;完成后停在合并前,等待用户确认是否合并到 `codex/integrate-optimize`。
## 计划审计
PLAN AUDIT: PASS
Blocking issues: none
Clarification needed: none
Non-blocking improvements: 后续可再把算法白名单从代码抽到能力描述接口;目录导入仍沿用现有 P2 确认流程的审计策略。