aps-agent/docs/architecture/harness.md

75 lines
5.0 KiB
Markdown
Raw 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.

# 门禁权力矩阵(Harness)
> 与 `server/agent_core/harness.py` 的 `_POWER_MAP` **一一对应**。
> 改 `_POWER_MAP` 或新增需备案的 API → **同轮**改本表,并在 [`../CHANGELOG.md`](../CHANGELOG.md) 留痕。
等级语义:P0 只读 / P1 写沙盒或草稿(直通)/ P2 写主干或破坏性(确认卡)/ P3 外部副作用(未开放;未登记动作默认 P3 拒绝)。
## 权力矩阵(与 _POWER_MAP 同步)
| action | 等级 | 为什么是这个等级 | 确认卡要点 | 加入 |
| --- | --- | --- | --- | --- |
| `schedule.run` | P1 | 试排只产草稿版本 | 无需确认 | M1 |
| `schedule.publish` | P2 | 发布写主干、推进订单状态 | 版本号/订单数/冲突数;发布前自动建档 | M1 |
| `scenario.compare` | P1 | 深拷贝沙盒,主干零接触 | 无需确认 | M2 |
| `checkpoint.create` | P1 | 只新增快照 | 无需确认 | M2 |
| `checkpoint.rollback` | P2 | 整体替换主干世界 | 目标检查点;回滚前再自动建档 | M2 |
| `data.reset` | P2 | 清空重播种子 | 明示重置;重置前自动建档 | M1 |
| `knowledge.query` | P0 | 只读知识;强制出处 | 无需确认 | M3 |
| `report.generate` | P1 | 产出文档并入知识库(不改排产世界) | 无需确认;对外承诺函未来升 P2 | M3 |
| `order.upsert` | P2 | 新增/编辑销售订单会改变后续排产输入 | 客户/产品/数量/交期;写入前自动建档 | M4 首切片 |
| `order.cancel` | P2 | 取消订单会从后续排产输入中排除 | 订单号/当前状态;写入前自动建档 | M4 首切片 |
| `order.complete` | P2 | 完成订单会从后续排产输入中排除 | 订单号/当前状态;写入前自动建档 | M4 首切片 |
| `master.line.upsert` | P2 | 产线编辑/停启用改后续新排产资源池 | 产线/产能/状态变更影响面;写入前自动建档 | M4 首切片 |
| `master.material.upsert` | P2 | 物料库存编辑改齐套检查输入 | 库存/在途/安全库存前后对比;写入前自动建档 | M4 首切片 |
| `master.maintenance.upsert` | P2 | 维保新增/取消改设备避让窗口 | 设备/窗口起止;写入前自动建档 | M4 首切片 |
| `master.bom.upsert` | P2 | BOM 用量改齐套需求与采购建议输入 | 用量前后对比/关键料;写入前自动建档 | M4 增强 |
| `master.routing.upsert` | P2 | 工艺步骤改占槽工时与外协标记 | 工时前后对比/外协变化;写入前自动建档 | M4 增强 |
| `order.decompose` | P1 | 订单分解只写 DRAFT 建议表(采购/委外),不碰主数据 | 无需确认(ALGO_RUN 审计留痕) | M4 首切片 |
| `viewport.*` | P0 | 纯视图状态 | 无需确认 | M1 |
| `query.*` | P0 | 只读查询 | 无需确认 | M1 |
## 只读端点备案(P0,不入 _POWER_MAP)
| 端点 | 用途 | 加入 |
| --- | --- | --- |
| `GET /api/world/summary·gantt·load·due` | 世界视图投影 | M1 |
| `GET /api/timeline` | 时间线 | M2 |
| `GET /api/gov/pending` | 待审批 | M2 |
| `GET /api/gov/audit` | 审计链 | M2 |
| `GET /api/gov/modules` | 模块注册表 | M2 |
| `GET /api/gov/policy` | 权力矩阵投影 | M2.5 |
| `GET /api/gov/tests` | 黄金测试看板(`run=true` 须线程池,防阻塞) | M2.5 |
| `GET /api/settings/llm` | LLM 状态 | M2.5 |
| `GET /api/knowledge/assets` · `/{id}` | 知识资产 | M3 |
| `GET /api/reports/{type}` | 报告导出 daily / version-diff | M3 |
| `GET /api/orders` | 订单管理页投影(订单 + 成品选项) | M4 首切片 |
| `GET /api/master` | 主数据管理页投影(资源树/物料BOM/日历维保) | M4 首切片 |
| `GET /api/mrp` | MRP 建议单投影(采购/委外 DRAFT) | M4 首切片 |
| `POST /api/mrp/decompose` | 订单分解(P1 直通,经 `harness.guard`) | M4 首切片 |
## 确认暂存端点备案(不直接执行写入)
| 端点 | 用途 | 权力路径 | 加入 |
| --- | --- | --- | --- |
| `POST /api/orders/stage` | 订单新增/编辑/取消/完成生成确认卡 | `order.*` P2 → `/api/actions/confirm` 执行 | M4 首切片 |
| `POST /api/master/stage` | 产线/物料/维保编辑生成确认卡 | `master.*` P2 → `/api/actions/confirm` 执行 | M4 首切片 |
## 防线
1. P2 只能:`stage_confirmation` → 确认卡 → `/api/actions/confirm` → `take_confirmation`
2. 未登记动作 → P3 拒绝;`guard()` 禁止 P2/P3 直通
3. P2 写主干前自动 Checkpoint(publish / reset / rollback)
4. GATE / WORLD_WRITE 写审计哈希链,可 `verify_audit_chain`
## 变更记录
| 日期 | 变更 |
| --- | --- |
| 2026-07-16 | 初版 8 条 + M2.5 只读端点 |
| 2026-07-16 | M3:`knowledge.query` / `report.generate` |
| 2026-07-16 | 迁入 `architecture/harness.md`;注明 tests 线程池 |
| 2026-07-16 | OR-01:新增 `order.upsert/cancel/complete` P2 与订单暂存端点 |
| 2026-07-16 | MD-01/02/03:新增 `master.line/material/maintenance.upsert` P2 与 `/api/master`、`/api/master/stage` |
| 2026-07-16 | MRP:新增 `master.bom/routing.upsert` P2、`order.decompose` P1 与 `/api/mrp*` |