docs(P19AI1-4,P19AI1-5): 收口AI-1文档矩阵与执行合同
这个提交包含在:
@@ -64,6 +64,7 @@ E2E loop = plan → issues(csv) → 方案批准 → implement → test → revi
|
|||||||
- 优先使用可验证工具与官方 SDK(例如 OCR 使用官方 SDK)。
|
- 优先使用可验证工具与官方 SDK(例如 OCR 使用官方 SDK)。
|
||||||
- 引入新依赖时,在 Issue `Notes` 写明:用途、版本、替代方案、回滚路径。
|
- 引入新依赖时,在 Issue `Notes` 写明:用途、版本、替代方案、回滚路径。
|
||||||
- 若工具不可用,记录原因并采用最安全替代方案。
|
- 若工具不可用,记录原因并采用最安全替代方案。
|
||||||
|
- 涉及 MCP server 选择、启用边界、Tools 字段或外部工具目录时,必须优先参考 `docs/mcp-tools.md`;若该文件不存在,则视为 MCP 未启用。
|
||||||
|
|
||||||
## Safety
|
## Safety
|
||||||
- 不修复非当前 Issue 范围问题(可记录但不顺手改)。
|
- 不修复非当前 Issue 范围问题(可记录但不顺手改)。
|
||||||
|
|||||||
+9
-3
@@ -1,7 +1,7 @@
|
|||||||
# 领域事件清单(P19 / P19+IM-1 / P19+ERP-3)
|
# 领域事件清单(P19 / P19+IM-1 / P19+ERP-3 / P19+AI-1)
|
||||||
|
|
||||||
**快照日期**:2026-03-09
|
**快照日期**:2026-03-10
|
||||||
**目标**:冻结 `hyb-oa` 当前采购与资产域的标准领域事件名,并补充 `P19+IM-1` 已实际消费的 IM 通知类型清单,以及 `P19+ERP-1 / ERP-3` 已实际落地的 ERP 消费映射,作为后续 ERP / IM / AI 适配的事实源。
|
**目标**:冻结 `hyb-oa` 当前采购与资产域的标准领域事件名,并补充 `P19+IM-1` 已实际消费的 IM 通知类型清单,以及 `P19+ERP-1 / ERP-3 / AI-1` 已实际落地的消费映射,作为后续 ERP / IM / AI 适配的事实源。
|
||||||
|
|
||||||
## 1. 使用原则
|
## 1. 使用原则
|
||||||
- 本文档同时维护两类事实:
|
- 本文档同时维护两类事实:
|
||||||
@@ -105,3 +105,9 @@
|
|||||||
- `asset.card.created` → `AssetLedgerSummaryPayload` → `erp.asset.export`
|
- `asset.card.created` → `AssetLedgerSummaryPayload` → `erp.asset.export`
|
||||||
- `PATCH /api/assets/:id` 导致 `legalEntityId / costCenterId / status(retired|archived)` 变化 → 资产 ERP 内部集成事实 → `erp.asset.export`
|
- `PATCH /api/assets/:id` 导致 `legalEntityId / costCenterId / status(retired|archived)` 变化 → 资产 ERP 内部集成事实 → `erp.asset.export`
|
||||||
- 资产 ERP 成功派发后,运行时统一把外部 ERP 资产编号回写到 `integration_bindings(provider=erp, entity_type=asset_erp_card)`;领用 / 归还 / 位置调拨仍不进入 ERP 消费映射。
|
- 资产 ERP 成功派发后,运行时统一把外部 ERP 资产编号回写到 `integration_bindings(provider=erp, entity_type=asset_erp_card)`;领用 / 归还 / 位置调拨仍不进入 ERP 消费映射。
|
||||||
|
|
||||||
|
## 11. P19+AI-1 已实现消费说明
|
||||||
|
- `P19+AI-1` 不新增新的公开领域事件名;AI 一期只消费既有报销、采购、资产事实,并保持同步只读建议形态。
|
||||||
|
- 报销详情 AI 建议消费的事实锚点为 `reimbursement_form` 当前详情、预算提示与待办节点;采购详情 AI 建议消费 `purchase_request` 当前详情、归档摘要与资产候选信息;资产详情 AI 建议消费 `asset_card` 当前卡片摘要与财务维度信息。
|
||||||
|
- AI 一期的三条建议接口均采用白名单快照,不提升为长期公共事件,也不改变 `asset.card.created`、`purchase_request.*`、`purchase_order.archived` 等既有事件名的稳定性承诺。
|
||||||
|
- AI 输出仅形成 `summary / riskHints / nextActions` 结构化建议,并通过审计动作 `AI_SUGGESTION_REQUESTED` 记录请求摘要;不写库、不派发 Outbox、不回写业务状态。
|
||||||
|
|||||||
+17
-4
@@ -1,8 +1,8 @@
|
|||||||
# hyb-oa 实现状态矩阵(P5-P19+IM-1+ERP-3+R10)
|
# hyb-oa 实现状态矩阵(P5-P19+IM-1+ERP-3+R10+MCP-1+AI-1)
|
||||||
|
|
||||||
**快照日期**:2026-03-09
|
**快照日期**:2026-03-10
|
||||||
**范围**:`F1-F42`(含 `F19b/F19c/F19d`)+ `R1-S2` + `P9A1-P9D1` + `P10E1-P10G1` + `G0-G6` + `H1` + `M1-M4` + `P13-0-P13-8` + `P14-0-P14-8` + `P15A-0-P15A-5` + `P15B-0-P15B-6` + `P16A-0-P16A-6` + `P16B-0-P16B-6` + `P16C-0-P16C-6` + `R9-0-R9-3` + `G2-0-G2-6` + `P17A-0-P17A-6` + `P17B-0-P17B-6` + `P18A-0-P18A-6` + `P18B-0-P18B-6` + `P19-0-P19-6` + `P19IM1-0-P19IM1-6` + `P19ERP1-0-P19ERP1-6` + `P19ERP2-0-P19ERP2-6` + `P19ERP3-0-P19ERP3-6` + `R10-0-R10-4`,共 225 项。
|
**范围**:`F1-F42`(含 `F19b/F19c/F19d`)+ `R1-S2` + `P9A1-P9D1` + `P10E1-P10G1` + `G0-G6` + `H1` + `M1-M4` + `P13-0-P13-8` + `P14-0-P14-8` + `P15A-0-P15A-5` + `P15B-0-P15B-6` + `P16A-0-P16A-6` + `P16B-0-P16B-6` + `P16C-0-P16C-6` + `R9-0-R9-3` + `G2-0-G2-6` + `P17A-0-P17A-6` + `P17B-0-P17B-6` + `P18A-0-P18A-6` + `P18B-0-P18B-6` + `P19-0-P19-6` + `P19IM1-0-P19IM1-6` + `P19ERP1-0-P19ERP1-6` + `P19ERP2-0-P19ERP2-6` + `P19ERP3-0-P19ERP3-6` + `R10-0-R10-4` + `P19MCP1-0-P19MCP1-4` + `P19AI1-0-P19AI1-5`,共 236 项。
|
||||||
**事实源**:`issues/2026-02-09_13-39-02-p5-blueprint-v3.csv` + `issues/2026-02-09_23-30-00-p6-p8-remaining-work-master.csv` + `issues/2026-02-10_09-42-31-p9-maintenance-performance-matrix.csv` + `issues/2026-02-10_10-35-30-p10-production-hardening.csv` + `issues/2026-02-11-p11-p12-governance-mobile.csv` + `issues/2026-02-12_01-09-41-p13-l5-governance.csv` + `issues/2026-02-13_00-11-56-p14-l5-operationalization.csv` + `issues/2026-03-06_14-30-00-p15a-l5-permission-decouple.csv` + `issues/2026-03-06_14-30-00-p15b-l5-leave-v1.csv` + `issues/2026-03-07_13-47-05-p16a-l5-master-data-core.csv` + `issues/2026-03-07_16-22-07-p16b-l5-holiday-calendar.csv` + `issues/2026-03-07_17-14-39-p16c-l5-suppliers.csv` + `issues/2026-03-07_18-15-03-r9-g2-p19-roadmap-refresh.csv` + `issues/2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv` + `issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv` + `issues/2026-03-07_21-00-37-p17b-l5-procurement-budget-archive.csv` + `issues/2026-03-07_22-02-09-p18a-l5-asset-registry-core.csv` + `issues/2026-03-07_22-34-03-p18b-l5-asset-movements-inventory.csv` + `issues/2026-03-07_23-22-00-p19-l4-integration-readiness.csv` + `issues/2026-03-08_12-18-10-p19-im-1-l5-collaboration-adapter.csv` + `issues/2026-03-08_14-10-53-p19-erp-1-l5-masterdata-journal-bridge.csv` + `issues/2026-03-08_22-46-51-p19-erp-2-l5-procurement-commitment-archive.csv` + `issues/2026-03-09_00-10-00-p19-erp-3-l5-asset-ledger-summary.csv` + `issues/2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv`(执行合同)
|
**事实源**:`issues/2026-02-09_13-39-02-p5-blueprint-v3.csv` + `issues/2026-02-09_23-30-00-p6-p8-remaining-work-master.csv` + `issues/2026-02-10_09-42-31-p9-maintenance-performance-matrix.csv` + `issues/2026-02-10_10-35-30-p10-production-hardening.csv` + `issues/2026-02-11-p11-p12-governance-mobile.csv` + `issues/2026-02-12_01-09-41-p13-l5-governance.csv` + `issues/2026-02-13_00-11-56-p14-l5-operationalization.csv` + `issues/2026-03-06_14-30-00-p15a-l5-permission-decouple.csv` + `issues/2026-03-06_14-30-00-p15b-l5-leave-v1.csv` + `issues/2026-03-07_13-47-05-p16a-l5-master-data-core.csv` + `issues/2026-03-07_16-22-07-p16b-l5-holiday-calendar.csv` + `issues/2026-03-07_17-14-39-p16c-l5-suppliers.csv` + `issues/2026-03-07_18-15-03-r9-g2-p19-roadmap-refresh.csv` + `issues/2026-03-07_18-16-00-g2-l5-cross-domain-bridge.csv` + `issues/2026-03-07_19-33-09-p17a-l5-procurement-core.csv` + `issues/2026-03-07_21-00-37-p17b-l5-procurement-budget-archive.csv` + `issues/2026-03-07_22-02-09-p18a-l5-asset-registry-core.csv` + `issues/2026-03-07_22-34-03-p18b-l5-asset-movements-inventory.csv` + `issues/2026-03-07_23-22-00-p19-l4-integration-readiness.csv` + `issues/2026-03-08_12-18-10-p19-im-1-l5-collaboration-adapter.csv` + `issues/2026-03-08_14-10-53-p19-erp-1-l5-masterdata-journal-bridge.csv` + `issues/2026-03-08_22-46-51-p19-erp-2-l5-procurement-commitment-archive.csv` + `issues/2026-03-09_00-10-00-p19-erp-3-l5-asset-ledger-summary.csv` + `issues/2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv` + `issues/2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv` + `issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv`(执行合同)
|
||||||
|
|
||||||
**说明**:
|
**说明**:
|
||||||
- 本矩阵用于全局读图(审计/交接/回归覆盖追踪),不替代 `issues/*.csv` 的执行合同职责。
|
- 本矩阵用于全局读图(审计/交接/回归覆盖追踪),不替代 `issues/*.csv` 的执行合同职责。
|
||||||
@@ -260,3 +260,16 @@
|
|||||||
| R10-2 | 冻结后置backlog与进入条件 | N/A | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09 | DONE | manual | `IM-2/3/4`、车辆、资产财务深化明确降为后置 backlog,仅保留进入条件不抢主线 |
|
| R10-2 | 冻结后置backlog与进入条件 | N/A | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09 | DONE | manual | `IM-2/3/4`、车辆、资产财务深化明确降为后置 backlog,仅保留进入条件不抢主线 |
|
||||||
| R10-3 | 同步路线文档与矩阵事实源 | N/A | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09 | DONE | validate-feature-matrix | 集成边界与 Feature Matrix 纳入 R10 路线事实源,且不提前把未来 TODO phase 计入完成总数 |
|
| R10-3 | 同步路线文档与矩阵事实源 | N/A | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09 | DONE | validate-feature-matrix | 集成边界与 Feature Matrix 纳入 R10 路线事实源,且不提前把未来 TODO phase 计入完成总数 |
|
||||||
| R10-4 | R10校验与收口 | N/A | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09 | DONE | CSV 校验 + validate-feature-matrix | 新旧合同校验通过,主线 roadmap 可直接承接 P19+MCP-1 到 P21+PWA-2 |
|
| R10-4 | R10校验与收口 | N/A | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv | 2026-03-09 | DONE | CSV 校验 + validate-feature-matrix | 新旧合同校验通过,主线 roadmap 可直接承接 P19+MCP-1 到 P21+PWA-2 |
|
||||||
|
|
||||||
|
| P19MCP1-0 | P19MCP1执行合同建档 | N/A | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09 | DONE | CSV 校验 | MCP 只读工具基线执行合同建档,冻结示例配置优先与 GitHub deferred 边界 |
|
||||||
|
| P19MCP1-1 | MCP工具目录建档 | N/A | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09 | DONE | validate-mcp-tools | 新增 `docs/mcp-tools.md`,enabled servers 固定仅 `postgres`,`github` 仅作为 deferred candidate 记录 |
|
||||||
|
| P19MCP1-2 | MCP使用边界与回滚策略 | N/A | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09 | DONE | validate-mcp-tools + validate-feature-matrix | 固化只读排障边界、真实密钥禁入、GitHub 不启用与本机回滚策略,且与集成边界文档一致 |
|
||||||
|
| P19MCP1-3 | MCP文档校验与治理脚本 | N/A | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09 | DONE | validate-mcp-tools | 新增 `.mcp.json.example` 与 `scripts/validate-mcp-tools.py`,形成目录文档、示例配置、校验脚本闭环 |
|
||||||
|
| P19MCP1-4 | P19MCP1文档矩阵与验收收口 | N/A | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv | 2026-03-09 | DONE | validate-feature-matrix + git-diff-check | MCP 工具目录、边界文档、Feature Matrix 与事实源校验全部通过,可作为 `P19+AI-1` 前置基线 |
|
||||||
|
|
||||||
|
| P19AI1-0 | P19AI1执行合同刷新建档 | N/A | 2026-03-09_10-35-00-p19-ai-1-l5-suggestion-workbench.csv | 2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv | 2026-03-10 | DONE | CSV 校验 | 以 superseding CSV 刷新 AI-1 执行合同,修正 feature flag 与 seed/config 锚点后冻结只读建议边界 |
|
||||||
|
| P19AI1-1 | AI provider与治理开关 | N/A | 2026-03-09_10-35-00-p19-ai-1-l5-suggestion-workbench.csv | 2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv | 2026-03-10 | DONE | server:test | 新增 `ai.assist`、`ai_assist`、`AI_*` 配置与 mock/http provider 契约,默认关闭且不引入运行时 MCP 依赖 |
|
||||||
|
| P19AI1-2 | AI建议服务与接口 | N/A | 2026-03-09_10-35-00-p19-ai-1-l5-suggestion-workbench.csv | 2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv | 2026-03-10 | DONE | server:test | 实现报销 / 采购 / 资产三类只读 suggestion 接口、白名单脱敏快照、prompt hash 与审计摘要,不写库不改状态 |
|
||||||
|
| P19AI1-3 | 详情页AI建议卡片 | N/A | 2026-03-09_10-35-00-p19-ai-1-l5-suggestion-workbench.csv | 2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv | 2026-03-10 | DONE | client:typecheck/build | 在报销详情、采购详情、资产详情挂载 AI 建议卡片,权限不足或 AI 关闭时不显示,失败仅卡片内降级 |
|
||||||
|
| P19AI1-4 | AI文档事件与矩阵同步 | N/A | 2026-03-09_10-35-00-p19-ai-1-l5-suggestion-workbench.csv | 2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv | 2026-03-10 | DONE | validate-feature-matrix | 集成边界、领域事件、Feature Matrix 与事实源校验器同步收口到 `P5-P19+IM-1+ERP-3+R10+MCP-1+AI-1` |
|
||||||
|
| P19AI1-5 | P19AI1回归与验收收口 | N/A | 2026-03-09_10-35-00-p19-ai-1-l5-suggestion-workbench.csv | 2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv | 2026-03-10 | DONE | server:test + client:typecheck/build + validate-feature-matrix | AI provider、权限门禁、详情卡片、降级容错与既有主流程回归通过,`P19` 主线至此收口 |
|
||||||
|
|||||||
+30
-19
@@ -1,7 +1,7 @@
|
|||||||
# 集成边界冻结(P19 / P19+IM-1 / P19+ERP-3 / R10)
|
# 集成边界冻结(P19 / P19+IM-1 / P19+ERP-3 / R10 / P19+MCP-1 / P19+AI-1)
|
||||||
|
|
||||||
**快照日期**:2026-03-09
|
**快照日期**:2026-03-10
|
||||||
**当前基线**:`P19+IM-1`、`P19+ERP-1`、`P19+ERP-2` 与 `P19+ERP-3` 已完成;当前运行时已落地企微群机器人 + 深链 + Outbox 异步派发的一期协同适配,以及 ERP 主数据 Pull、报销付款凭证切片、采购双阶段 journal / 归档摘要出站、资产台账摘要出站。
|
**当前基线**:`P19+IM-1`、`P19+ERP-1`、`P19+ERP-2`、`P19+ERP-3`、`P19+MCP-1` 与 `P19+AI-1` 已完成;当前运行时已落地企微群机器人 + 深链 + Outbox 异步派发的一期协同适配,以及 ERP 主数据 Pull、报销付款凭证切片、采购双阶段 journal / 归档摘要出站、资产台账摘要出站、Postgres MCP 只读工具基线与报销 / 采购 / 资产详情页 AI 只读建议挂件。
|
||||||
**目标**:在保持核心域稳定的前提下,冻结 ERP / IM / AI / MCP 的长期边界,并记录 IM 一期与 ERP 三期的已实现范围、禁入规则以及 R10 之后的固定主线顺序。
|
**目标**:在保持核心域稳定的前提下,冻结 ERP / IM / AI / MCP 的长期边界,并记录 IM 一期与 ERP 三期的已实现范围、禁入规则以及 R10 之后的固定主线顺序。
|
||||||
|
|
||||||
## 1. 总体原则
|
## 1. 总体原则
|
||||||
@@ -134,6 +134,14 @@
|
|||||||
- 禁止 AI 自动创建、审批、归档业务单据。
|
- 禁止 AI 自动创建、审批、归档业务单据。
|
||||||
- 禁止 AI 直接修改预算、工作流、资产归属等核心状态。
|
- 禁止 AI 直接修改预算、工作流、资产归属等核心状态。
|
||||||
|
|
||||||
|
### 4.4 P19+AI-1 已实现范围
|
||||||
|
- 已新增 `GET /api/ai/status` 与三条详情建议接口:`/api/ai/suggestions/reimbursements/:id`、`/api/ai/suggestions/purchase-requests/:id`、`/api/ai/suggestions/assets/:id`。
|
||||||
|
- 已新增 `ai.assist` 权限、`ai_assist` feature flag 与 `AI_ASSIST_ENABLED / AI_PROVIDER / AI_BASE_URL / AI_MODEL / AI_TIMEOUT_MS / AI_AUTH_TOKEN` 环境变量;默认仍保持关闭。
|
||||||
|
- 已固定 AI 运行时只支持同步只读建议层,不新增 Prisma 表、不使用 Outbox、不接入 MCP 运行时,也不持久化 AI 历史结果。
|
||||||
|
- 已固定只读白名单快照:报销不暴露发票号码、付款凭证、姓名工号与明细原文;采购不暴露申请人个人信息、附件原名、长文本 reason 与外部 ERP 编号;资产不暴露 assignee 身份信息与外部 ERP 编号。
|
||||||
|
- 已在报销详情、采购详情、资产详情挂载 AI 建议卡片;当权限不足、总闸关闭、feature flag 未命中、上游超时或响应非法时,仅在卡片内降级展示,不影响主体页面渲染与业务动作。
|
||||||
|
- 已固定审计动作 `AI_SUGGESTION_REQUESTED`,仅记录 `targetType / targetId / provider / model / promptHash / tokenUsage / featureFlag`,不记录原始 prompt、脱敏前 payload 或上游全文。
|
||||||
|
|
||||||
## 5. 事件与通知交付规范
|
## 5. 事件与通知交付规范
|
||||||
|
|
||||||
### 5.1 事件最小结构
|
### 5.1 事件最小结构
|
||||||
@@ -160,25 +168,27 @@
|
|||||||
|
|
||||||
## 6. MCP 基线
|
## 6. MCP 基线
|
||||||
|
|
||||||
### 6.1 当前结论
|
### 6.1 P19+MCP-1 已实现范围
|
||||||
- `P19+IM-1` 阶段 **不启用 MCP**。
|
- 已新增 `docs/mcp-tools.md`,作为项目级 MCP 工具目录与使用边界事实源。
|
||||||
- 当前仓库中 **仍不创建** `docs/mcp-tools.md`,因为尚未进入真实 MCP 使用场景。
|
- 已新增 `.mcp.json.example`,仅提供 `postgres` 只读示例配置,不提交任何真实密钥、PAT 或数据库连接串。
|
||||||
|
- 已新增 `scripts/validate-mcp-tools.py`,用于校验工具目录、示例配置与 `AGENTS.md` 引用关系。
|
||||||
|
- 已明确当前 shell 中 `codex mcp list --json` 不可作为唯一事实源,因此工具目录固定以官方 package 文档、执行合同与仓库校验脚本共同收口。
|
||||||
|
|
||||||
### 6.2 首次启用前置条件
|
### 6.2 当前允许的 MCP 范围
|
||||||
若未来需要启用 MCP,固定顺序如下:
|
- `postgres MCP`:当前唯一允许启用的 MCP server,用于只读排障、迁移核对、账本核对。
|
||||||
1. 明确真实用途(数据库只读排障、GitHub PR / Issue / CI 协作等)
|
- `postgres:query`:固定用于只读 SQL 查询;所有查询必须处于 `READ ONLY` 事务语义下。
|
||||||
2. 新增 `docs/mcp-tools.md`
|
- schema resources:允许读取表结构、字段类型与 schema 元数据,不得反向修改业务数据。
|
||||||
3. 使用 `mcp-tools-catalog` 生成工具目录
|
|
||||||
4. 在执行合同中记录启用原因、风险与禁用边界
|
|
||||||
|
|
||||||
### 6.3 允许的 MCP 范围
|
### 6.3 Deferred candidate
|
||||||
- `postgres MCP`:只读排障、迁移核对、账本核对
|
- `github MCP`:当前仅记录为 deferred candidate,不纳入 enabled servers。
|
||||||
- `github MCP`:PR / Issue / CI 协作
|
- 原因:官方 GitHub MCP server 当前暴露读写混合工具集,不满足 `Read-only Tools Baseline`。
|
||||||
|
- 若未来需要启用,必须通过新的路线合同显式解锁,并单独治理最小权限 PAT、读写边界与回滚策略。
|
||||||
|
|
||||||
### 6.4 禁止事项
|
### 6.4 禁止事项
|
||||||
|
- 禁止提交真实 `.mcp.json`、真实数据库连接串、PAT、API Token 或其他密钥。
|
||||||
- 禁止在没有 `docs/mcp-tools.md` 的前提下默认启用 MCP。
|
- 禁止在没有 `docs/mcp-tools.md` 的前提下默认启用 MCP。
|
||||||
- 禁止用 MCP 绕过仓库内已存在的本地验证命令。
|
- 禁止用 MCP 绕过仓库内已存在的本地验证命令。
|
||||||
- 禁止将 MCP 用作写生产数据的通道。
|
- 禁止将 MCP 用作写生产数据或修改业务状态的通道。
|
||||||
|
|
||||||
## 7. 当前阶段明确不做
|
## 7. 当前阶段明确不做
|
||||||
- 不新增新的集成总线表结构
|
- 不新增新的集成总线表结构
|
||||||
@@ -195,9 +205,10 @@
|
|||||||
- 每个 phase 固定遵循:`执行合同 CSV -> 方案批准 -> 开发 -> 测试 -> 文档矩阵收口 -> 合并 main`。
|
- 每个 phase 固定遵循:`执行合同 CSV -> 方案批准 -> 开发 -> 测试 -> 文档矩阵收口 -> 合并 main`。
|
||||||
|
|
||||||
### 8.2 MCP / AI 前置关系
|
### 8.2 MCP / AI 前置关系
|
||||||
- `P19+MCP-1` 是首次真实启用 MCP 的唯一前置 phase;在其完成前,`docs/mcp-tools.md` 仍不得作为已存在事实源引用。
|
- `P19+MCP-1` 已完成,并已把 `docs/mcp-tools.md`、`.mcp.json.example` 与 MCP 校验脚本固化为仓库治理基线。
|
||||||
- `P19+AI-1` 固定在 `P19+MCP-1` 之后启动,继续遵守“AI 只做建议,不直接写库”的硬边界。
|
- 当前唯一允许启用的 MCP server 为 `postgres`;`github` 继续保持 deferred,不进入 enabled servers。
|
||||||
- AI 一期只覆盖采购、报销、资产详情的只读建议工作台,不开放自由聊天、自动审批或 agent 自治。
|
- `P19+AI-1` 已在 `P19+MCP-1` 之后完成落地,并继续遵守“AI 只做建议,不直接写库”的硬边界。
|
||||||
|
- 当前 AI 一期已覆盖采购、报销、资产详情的只读建议工作台;自由聊天、自动审批与 agent 自治仍明确不做。
|
||||||
|
|
||||||
### 8.3 差旅统付主线
|
### 8.3 差旅统付主线
|
||||||
- `P20+TRAVEL-1` 固定负责差旅申请、行程段与 `travel_orders` 入站整合,作为对公统付的前置主数据与流程基线。
|
- `P20+TRAVEL-1` 固定负责差旅申请、行程段与 `travel_orders` 入站整合,作为对公统付的前置主数据与流程基线。
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
ID,Title,Description,Acceptance,Test_Method,Tools,Dev_Status,Review1_Status,Regression_Status,Files,Dependencies,Notes
|
||||||
|
P19AI1-0,P19AI1执行合同刷新建档,创建并校验AI只读建议工作台刷新执行合同CSV,刷新CSV通过校验且字段完整并冻结AI-1只读建议边界,python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv,manual,DONE,DONE,DONE,issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv,[],AI一期只做详情页建议摘要异常提示与下一步建议 不做写库动作且不依赖MCP运行时
|
||||||
|
P19AI1-1,AI provider与治理开关,新增AI配置 环境变量 feature flag与ai.assist权限并固化provider契约,AI调用具备mock和http openai-compatible两类provider且默认关闭并受权限与flag双重控制,cd server && npm run test,manual,DONE,DONE,DONE,server/src/config.js | server/src/constants/permissions.js | server/src/services/featureFlags/index.js | server/src/scripts/seed-config.js | server/src/services/ai | server/tests | issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv,"[""P19AI1-0""]",首期不落AI持久化表 仅请求时生成与审计摘要
|
||||||
|
P19AI1-2,AI建议服务与接口,实现报销 采购 资产三类只读suggestion接口并补敏感信息脱敏与审计,三个suggestion接口可返回summary riskHints nextActions sourceSnapshot providerMeta generatedAt且失败不影响原业务,cd server && npm run test,manual,DONE,DONE,DONE,server/src/routes/ai.js | server/src/services/ai/provider.js | server/src/services/ai/prompts.js | server/src/services/ai/sanitizer.js | server/src/services/ai/suggestions.js | server/tests | issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv,"[""P19AI1-1""]",审计只记录target provider model promptHash tokenUsage 不记录原始敏感prompt
|
||||||
|
P19AI1-3,详情页AI建议卡片,在报销 采购 资产详情页增加只读AI建议卡片并处理权限与失败展示,有权限用户可在详情页查看AI建议卡片 无权限或AI关闭时不暴露入口且页面主流程零回归,cd client && npm run typecheck && npm run build,manual,DONE,DONE,DONE,client/src/pages/ReimbursementDetailPage.tsx | client/src/pages/PurchaseRequestsPage.tsx | client/src/pages/AssetRegistryPage.tsx | client/src/api/ai.ts | client/src/components/ai | issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv,"[""P19AI1-2""]",不新增独立AI后台 页面仅作详情侧建议挂件
|
||||||
|
P19AI1-4,AI文档事件与矩阵同步,同步AI边界 API事实源 Feature Matrix与使用说明,AI文档与矩阵完成收口并明确AI只做建议不提升为自动执行能力,python3 scripts/validate-feature-matrix.py,manual,DONE,DONE,DONE,docs/integration-boundaries.md | docs/domain-events.md | docs/feature-matrix.md | scripts/validate-feature-matrix.py | issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv,"[""P19AI1-3""]",新增GET /api/ai/status且不引入新的公共领域事件名
|
||||||
|
P19AI1-5,P19AI1回归与验收收口,完成AI provider 权限门禁 详情卡片与降级容错验证后收口,AI mock和http失败语义均可回归且不影响报销采购资产详情与既有集成流程,cd server && npm run prisma:validate && npm run test && cd ../client && npm run typecheck && npm run build && python3 /home/shunli/.codex/skills/plan/scripts/validate_issues_csv.py issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv && python3 scripts/validate-feature-matrix.py && git diff --check,manual,DONE,DONE,DONE,issues/2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv | server/tests | client/src/pages/ReimbursementDetailPage.tsx | client/src/pages/PurchaseRequestsPage.tsx | client/src/pages/AssetRegistryPage.tsx,"[""P19AI1-4""]",重点核对AI关闭 无权限 4xx 5xx timeout 脱敏日志与矩阵236收口
|
||||||
|
@@ -43,6 +43,8 @@ CSV_FACT_SOURCES = [
|
|||||||
ROOT / "issues" / "2026-03-08_22-46-51-p19-erp-2-l5-procurement-commitment-archive.csv",
|
ROOT / "issues" / "2026-03-08_22-46-51-p19-erp-2-l5-procurement-commitment-archive.csv",
|
||||||
ROOT / "issues" / "2026-03-09_00-10-00-p19-erp-3-l5-asset-ledger-summary.csv",
|
ROOT / "issues" / "2026-03-09_00-10-00-p19-erp-3-l5-asset-ledger-summary.csv",
|
||||||
ROOT / "issues" / "2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv",
|
ROOT / "issues" / "2026-03-09_10-15-00-r10-post-erp3-roadmap-refresh.csv",
|
||||||
|
ROOT / "issues" / "2026-03-09_10-25-00-p19-mcp-1-l4-readonly-tools-baseline.csv",
|
||||||
|
ROOT / "issues" / "2026-03-10_12-54-30-p19-ai-1-l5-suggestion-workbench-refresh.csv",
|
||||||
]
|
]
|
||||||
|
|
||||||
ID_PATTERN = re.compile(r"^[A-Z][0-9][0-9A-Za-z-]*$")
|
ID_PATTERN = re.compile(r"^[A-Z][0-9][0-9A-Za-z-]*$")
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户