diff --git a/docs/api-verification-split.md b/docs/api-verification-split.md new file mode 100644 index 00000000..497c07c6 --- /dev/null +++ b/docs/api-verification-split.md @@ -0,0 +1,482 @@ +# CMA API验证分工表(2026-08-31) + +> 生成:项目Bot | 数据源:后端 /openapi.json 实测 | 统计口径:334路径/404方法操作(openapi实测,非任务书398估算) + +## 分类标准 + +| 分类 | 标准 | 谁验证 | 数量(操作) | +|:--|:--|:--|:--| +| L3必测 | 北极星四层决策点相关、影响拍板 | 任总抽验 | 60 | +| L2 Bot验证 | 业务流程闭环 | 项目Bot/QA Bot | 169 | +| L1 自动验证 | 数据完整性/计算正确性/接口可用 | 脚本/cron | 175 | + +## 四层路径分布 + +- ①数据接入: 184 个操作 +- ②多Bot互动: 43 个操作 +- ③数据找人: 82 个操作 +- ④决策闭环: 95 个操作 + +## 完整清单(404操作) + +| 方法 | API路径 | 所属层 | 验证人 | 当前状态 | +|:--|:--|:--|:--|:--| +| GET | `/api/cma/action-plans` | ④决策闭环 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/action-plans` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/action-plans/coso-checklist` | ④决策闭环 | 脚本/cron | ✅ L1自动 | +| GET | `/api/cma/action-plans/stats` | ④决策闭环 | 任总抽验 | ✅ L1自动 | +| DELETE | `/api/cma/action-plans/{plan_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/action-plans/{plan_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/admin/alerts/check` | ①数据接入 | 脚本/cron | ✅ L1自动 | +| POST | `/api/cma/admin/cache/clear` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/admin/erp-sync` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/admin/erp-sync/dry-run` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/ai/ask` | ③数据找人 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/ai/dashboard-analysis` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/ai/dashboard-analysis-stream` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/ai/kpi-analysis/{kpi_id}` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/ai/review-plans` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/ai/suggestions` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/ai/suggestions` | ③数据找人 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/ai/suggestions/{suggestion_id}` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/ai/suggestions/{suggestion_id}/apply` | ③数据找人 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/ai/suggestions/{suggestion_id}/dismiss` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/alert-rules` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/alert-rules` | ③数据找人 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/alert-rules/batch` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/alert-rules/calculate-dynamic` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/alert-rules/check-all` | ③数据找人 | 任总抽验 | ✅ L1自动 | +| POST | `/api/cma/alert-rules/check-forecast` | ③数据找人 | 脚本/cron | ✅ L1自动 | +| GET | `/api/cma/alert-rules/dynamic-thresholds` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/alert-rules/generate-defaults` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/alert-rules/generate-suggestions` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/alert-rules/kpi/{kpi_id}` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/alert-rules/run-forecast-deviation` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/alert-rules/{rule_id}` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/alert-rules/{rule_id}` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/alerts` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/alerts/check-timeout` | ③数据找人 | 脚本/cron | ✅ L1自动 | +| GET | `/api/cma/alerts/risk-matrix` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/alerts/{alert_id}/create-action-plan` | ③数据找人 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/alerts/{alert_id}/escalate` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/alerts/{alert_id}/process` | ③数据找人 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/alerts/{alert_id}/resolve` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/alignment/config` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/alignment/config` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/alignment/modes` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/alignment/tree` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/analysis/auto-calculate` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/analysis/result` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/analysis/result` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/analysis/result/{result_id}` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/auth/entities` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/auth/login` | ①数据接入 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/auth/login-entities` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/auth/me` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/auth/my-entities` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/auth/register` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/auth/roles` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/auth/switch-entity` | ①数据接入 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/bi-reports` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/bi-reports` | ③数据找人 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/bi-reports/analyze` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/bi-reports/export` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/bi-reports/templates` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/bi-reports/templates/seed` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/bi-reports/templates/{template_id}` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/bi-reports/{report_id}` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/bi-reports/{report_id}` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/bi-reports/{report_id}` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/bot-bridge/kpi-result` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/bot-bridge/mpm-result` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/bot-bridge/verify/{action_plan_id}` | ②多Bot互动 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/bot-bridge/verify/{action_plan_id}/history` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot-kpis` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/bot-kpis/{kpi_id}/value` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/bot/actions` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/alerts` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/budget/plans` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/cost/actual` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/cost/standard` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/data-sources` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/bot/import` | ②多Bot互动 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/bot/iron-law` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/iron-law/bots` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/bot/kpi-value-with-check` | ②多Bot互动 | 任总抽验 | ✅ L1自动 | +| GET | `/api/cma/bot/kpis` | ②多Bot互动 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/bot/kpis/create-with-links` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/bot/kpis/{kpi_id}/history` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/nlp` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/bot/okr/create` | ②多Bot互动 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/bot/okr/list` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/organization` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/overview` | ②多Bot互动 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/ping` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/query` | ②多Bot互动 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/risk-levels` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/strategic-maps` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bot/users` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/bsc-layers` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/budget/alert-direction` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/budget/alert-direction` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/apply-method` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/auto-decompose` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/cash-classify-rules` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/cash-classify-rules` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/budget/cash-classify-rules/{rule_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/budget/cash-classify-rules/{rule_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/cash-unclassified` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/cash-unclassified/{item_id}/classify` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/cash-unclassified/{item_id}/ignore` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/comparison` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/budget/comparison/kpi/{kpi_id}` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/budget/config` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/config` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/derivation-rules` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/derivation-rules` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/budget/derivation-rules/{rule_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/budget/derivation-rules/{rule_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/deviation-alerts` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/budget/deviation-alerts/{alert_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/deviation-alerts/{alert_id}/attribution` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/deviation-check` | ④决策闭环 | 脚本/cron | ✅ L1自动 | +| GET | `/api/cma/budget/deviation-report` | ④决策闭环 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/driver/calculate` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/driver/history` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/budget/driver/industries` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/budget/driver/mode` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/driver/mode` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/driver/sensitivity` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/driver/templates` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/generate-from-kpis` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/kpi-budget-candidates` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/method-comparison` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/plans` | ④决策闭环 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/plans` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/budget/plans/{plan_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/budget/plans/{plan_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/roll-forward` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/sync-cash-plans` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/value-collect/logs` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/value-collect/run` | ①数据接入 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/value-sources` | ①数据接入 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/value-sources` | ①数据接入 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/value-sources/coverage` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/value-sources/test` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/budget/value-sources/{source_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/budget/value-sources/{source_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/versions` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/versions/approve` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/versions/diff` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/versions/submit` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/budget/zero-based/generate` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/budget/zero-based/items` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/budget/zero-based/items` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/budget/zero-based/items/{item_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/budget/zero-based/items/{item_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/cash/alerts/status` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/cash/balance` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/cash/balance` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/cash/check-alerts` | ①数据接入 | 脚本/cron | ✅ L1自动 | +| GET | `/api/cma/cash/dashboard` | ①数据接入 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/cash/gap-forecast` | ①数据接入 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/cash/import/bohai-ar` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/cash/import/template` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/cash/import/vouchers` | ①数据接入 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/cash/plans` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/cash/plans` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/cash/plans/{plan_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/cash/plans/{plan_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/cash/plans/{plan_id}/complete` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/cash/receivables` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/cash/receivables/{plan_id}/payment` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/cash/upcoming` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/cost/abc/activities` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/cost/abc/activities` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/cost/abc/allocate` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/cost/abc/allocations` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/cost/actual-costs` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/cost/actual-costs` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/cost/breakdown` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/cost/comparison` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/cost/dashboard` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/cost/overview` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/cost/standard-costs` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/cost/standard-costs` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/cost/standard-costs/{cost_id}` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/cost/standard-costs/{cost_id}` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/cost/variance` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/customer-dashboard` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/customer-dashboard/summary` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/customer-dashboard/trend/{kpi_id}` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/dashboard/finance-analysis` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/dashboard/kpis` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/dashboard/my-dashboard` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/dashboard/my-kpis` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/dashboard/predict` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/dashboard/summary` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| PUT | `/api/cma/data-classification/batch` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/data-classification/export` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/data-classification/industry-reference` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/data-classification/inventory` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/data-classification/kpis/{kpi_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/data-classification/stats` | ①数据接入 | 任总抽验 | ✅ L1自动 | +| PUT | `/api/cma/data-classification/subjects/{subject_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/data-quality/check` | ①数据接入 | 任总抽验 | ✅ L1自动 | +| GET | `/api/cma/data-quality/check-governance` | ①数据接入 | 脚本/cron | ✅ L1自动 | +| GET | `/api/cma/data-quality/governance-check` | ①数据接入 | 任总抽验 | ✅ L1自动 | +| GET | `/api/cma/data-quality/logs` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| DELETE | `/api/cma/data-quality/logs/{log_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/data-quality/logs/{log_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/data-quality/stats` | ①数据接入 | 脚本/cron | ✅ L1自动 | +| POST | `/api/cma/data/import-excel` | ①数据接入 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/data/import-excel-smart` | ①数据接入 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/data/sources` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/data/sources` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/data/sources/{source_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/data/sources/{source_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/data/sync-kpis` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/deviation-push/map-nodes/{map_id}` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/deviation-push/push-to-map` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/entities` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/entities` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/entities/{entity_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/expenses/reimbursements` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/expenses/reimbursements` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/expenses/reimbursements/{reimb_id}` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/expenses/reimbursements/{reimb_id}/approve` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/expenses/reimbursements/{reimb_id}/reject` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/expenses/reimbursements/{reimb_id}/resubmit` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/expenses/reimbursements/{reimb_id}/return` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/expenses/rules` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/expenses/rules` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/expenses/rules/seed` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/expenses/rules/{rule_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/expenses/rules/{rule_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/expenses/stats` | ①数据接入 | 脚本/cron | ✅ L1自动 | +| GET | `/api/cma/growth-quality/diagnosis` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/growth-quality/periods` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/knowledge-articles` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/knowledge-articles/{article_id}` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/knowledge/ethics-quiz` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/knowledge/events` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/knowledge/generate/daily` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/knowledge/generate/monthly` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/knowledge/generate/weekly` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/knowledge/summaries` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/knowledge/summaries/latest` | ②多Bot互动 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/knowledge/summaries/{summary_id}` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/kpi-causality` | ④决策闭环 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/kpi-causality` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpi-causality/full-network` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/kpi-causality/kpi/{kpi_id}/network` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/kpi-causality/simulate` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpi-causality/verify-status` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| DELETE | `/api/cma/kpi-causality/{causality_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpi-causality/{causality_id}` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/kpi-causality/{causality_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/kpi-causality/{causality_id}/verify` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpi/governance/audit` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/kpi/validate` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpis` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/kpis` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpis/categories` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/kpis/glossary` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/kpis/hierarchy` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/kpis/score` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| DELETE | `/api/cma/kpis/{kpi_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpis/{kpi_id}` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/kpis/{kpi_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/kpis/{kpi_id}/associate-map` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpis/{kpi_id}/causality-chain` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/kpis/{kpi_id}/objectives` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/kpis/{kpi_id}/restore` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/kpis/{kpi_id}/values` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/kpis/{kpi_id}/values` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/lead` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/maps` | ④决策闭环 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/maps` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| POST | `/api/cma/maps/batch-delete` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/maps/create-with-template` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/maps/{map_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/maps/{map_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/maps/{map_id}/connections` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/maps/{map_id}/connections` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/maps/{map_id}/krs` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/maps/{map_id}/objectives` | ④决策闭环 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/maps/{map_id}/objectives` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/maps/{map_id}/objectives/sort` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/maps/{map_id}/objectives/{obj_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/maps/{map_id}/objectives/{obj_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/maps/{map_id}/review` | ④决策闭环 | 任总抽验 | 🟡 读接口待抽验 | +| GET | `/api/cma/maps/{map_id}/review-records` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/maps/{map_id}/review-records` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/maps/{map_id}/review-records/{record_id}` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/maps/{map_id}/versions` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/maps/{map_id}/versions/snapshot` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/maps/{map_id}/versions/{ver_id}/rollback` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/notifications/channels` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/notifications/channels` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/notifications/channels/{ch_id}` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/notifications/channels/{ch_id}` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/notifications/channels/{ch_id}/test` | ②多Bot互动 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/notifications/logs` | ②多Bot互动 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/okr` | ④决策闭环 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/okr` | ④决策闭环 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/okr-templates` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/okr-templates` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/okr-templates/{template_id}` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/okr-templates/{template_id}/apply` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/okr-templates/{template_id}/use` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/okr/{obj_id}` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| PATCH | `/api/cma/okr/{obj_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/okr/{objective_id}/krs` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/okr/{objective_id}/krs/sync` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/okr/{objective_id}/krs/{kr_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/okr/{objective_id}/krs/{kr_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/okr/{okr_id}/decomposition` | ④决策闭环 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/okr/{okr_id}/decomposition/milestones/generate` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/okr/{okr_id}/decomposition/milestones/{kr_id}` | ④决策闭环 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/ontology/objectives` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/ontology/trace` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/org/nodes` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/org/nodes` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/org/nodes/{node_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/org/nodes/{node_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/org/nodes/{node_id}/toggle` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/org/tree` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/permissions/config` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/permissions/config` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/permissions/modules` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/predict/accuracy` | ③数据找人 | 任总抽验 | 🟡 读接口待抽验 | +| POST | `/api/cma/predict/cash-forecast` | ③数据找人 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/api/cma/predict/cash-forecast/history` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/predict/cvp` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/predict/cvp-detailed` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/predict/growth-quality` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/predict/investment` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/predict/kpi-forecast` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/predict/kpi-forecast/finance` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/predict/kpi-forecast/sensitivity` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/predict/real-option` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/predict/relevant-decision` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/predict/scenario` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/predict/scenario-suggestion/generate` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/predict/scenario-suggestions` | ③数据找人 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/predict/sensitivity` | ③数据找人 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/products/matrix` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/balance-sheet` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/bsc-scorecard` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/budget-execution` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/cash-flow` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/category-map` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/dupont` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/reports/generate` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/reports/history` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/history/{report_id}` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/kpi-trends` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/reports/mpm-calculate` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/reports/profit-statement` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/profit-summary` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/proforma/balance-sheet` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/proforma/cash-flow` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/proforma/profit-statement` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/restatement` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/statutory` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/reports/statutory/export` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/security/captcha/request` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/security/captcha/request2` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/security/captcha/verify` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/subjects` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/subjects/batch/category` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/subjects/{subject_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/tax/burden` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/tax/check` | ①数据接入 | 脚本/cron | ✅ L1自动 | +| GET | `/api/cma/tax/dashboard` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/tax/demo-data` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/tax/invoices` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/tax/invoices` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/tax/invoices/abnormal` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/tax/invoices/check` | ①数据接入 | 脚本/cron | ✅ L1自动 | +| DELETE | `/api/cma/tax/invoices/{invoice_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/tax/invoices/{invoice_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/tax/records` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/tax/records` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/tax/records/{record_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/tax/records/{record_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/tax/ss` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/tax/ss` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/tax/ss/abnormal` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/tax/ss/check` | ①数据接入 | 脚本/cron | ✅ L1自动 | +| DELETE | `/api/cma/tax/ss/{ss_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/tax/ss/{ss_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/templates` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/templates` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/templates/{template_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/templates/{template_id}` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| PUT | `/api/cma/templates/{template_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/templates/{template_id}/instantiate` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/tenant/current` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/tenant/switch` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| GET | `/api/cma/thresholds/suggest/{kpi_id}` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| GET | `/api/cma/users` | ①数据接入 | 脚本/cron | 🟡 读接口待抽验 | +| POST | `/api/cma/users` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| DELETE | `/api/cma/users/{user_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| PUT | `/api/cma/users/{user_id}` | ①数据接入 | 项目Bot/QA | 🔵 写接口Bot闭环 | +| POST | `/api/cma/verify/{plan_id}` | ①数据接入 | 任总抽验 | 🔵 写接口Bot闭环 | +| GET | `/health` | ①数据接入 | 脚本/cron | ✅ 已验证 | + +## L3必测清单(任总亲测,50路径/60操作) + +| # | 方法 | API路径 | 归属 | +|:--|:--|:--|:--| +| 1 | GET | `/api/cma/action-plans` | ④闭环-行动方案 | +| 2 | GET | `/api/cma/action-plans/stats` | ④闭环-行动统计 | +| 3 | POST | `/api/cma/ai/ask` | ③找人-AI问答 | +| 4 | GET | `/api/cma/ai/suggestions` | ③找人-AI建议 | +| 5 | POST | `/api/cma/ai/suggestions/{suggestion_id}/apply` | ③找人-建议落地 | +| 6 | GET | `/api/cma/alert-rules` | ③找人-预警规则 | +| 7 | POST | `/api/cma/alert-rules/check-all` | ③找人-全量预警检查 | +| 8 | GET | `/api/cma/alerts` | ③找人-预警列表 | +| 9 | POST | `/api/cma/alerts/{alert_id}/create-action-plan` | ③找人-预警转行动 | +| 10 | POST | `/api/cma/alerts/{alert_id}/process` | ③找人-预警处理 | +| 11 | POST | `/api/cma/auth/login` | ①数据接入-登录(账套) | +| 12 | POST | `/api/cma/auth/switch-entity` | ①数据接入-切换企业 | +| 13 | GET | `/api/cma/bi-reports` | ③找人-BI报表 | +| 14 | POST | `/api/cma/bot-bridge/verify/{action_plan_id}` | ②多Bot-验证桥 | +| 15 | POST | `/api/cma/bot/import` | ②多Bot-Bot导入 | +| 16 | POST | `/api/cma/bot/kpi-value-with-check` | ②多Bot-KPI带校验写入 | +| 17 | GET | `/api/cma/bot/kpis` | ②多Bot-KPI读写 | +| 18 | POST | `/api/cma/bot/okr/create` | ②多Bot-OKR创建 | +| 19 | GET | `/api/cma/bot/overview` | ②多Bot-总览 | +| 20 | GET | `/api/cma/bot/query` | ②多Bot-查询 | +| 21 | POST | `/api/cma/budget/auto-decompose` | ④闭环-预算自动分解 | +| 22 | GET | `/api/cma/budget/deviation-report` | ④闭环-预算偏差报告 | +| 23 | GET | `/api/cma/budget/plans` | ④闭环-预算 | +| 24 | POST | `/api/cma/budget/roll-forward` | ④闭环-滚动预算 | +| 25 | POST | `/api/cma/budget/value-collect/run` | ①数据接入-实际值归集 | +| 26 | GET | `/api/cma/budget/value-sources` | ①数据接入-数据源管理 | +| 27 | POST | `/api/cma/budget/versions/approve` | ④闭环-预算版本审批 | +| 28 | GET | `/api/cma/cash/dashboard` | ③找人-资金驾驶舱 | +| 29 | GET | `/api/cma/cash/gap-forecast` | ③找人-资金缺口 | +| 30 | POST | `/api/cma/cash/import/vouchers` | ①数据接入-凭证导入 | +| 31 | GET | `/api/cma/cost/dashboard` | ③找人-成本驾驶舱 | +| 32 | GET | `/api/cma/cost/variance` | ③找人-成本差异 | +| 33 | GET | `/api/cma/dashboard/kpis` | ③找人-KPI看板 | +| 34 | GET | `/api/cma/dashboard/my-dashboard` | ③找人-工作台 | +| 35 | GET | `/api/cma/dashboard/summary` | ③找人-总览 | +| 36 | GET | `/api/cma/data-classification/stats` | ①数据接入-分级统计 | +| 37 | GET | `/api/cma/data-quality/check` | ①数据接入-质量检查 | +| 38 | GET | `/api/cma/data-quality/governance-check` | ①数据接入-治理检查 | +| 39 | POST | `/api/cma/data/import-excel` | ①数据接入-Excel导入 | +| 40 | POST | `/api/cma/data/import-excel-smart` | ①数据接入-智能导入 | +| 41 | GET | `/api/cma/knowledge/summaries/latest` | ③找人-知识摘要 | +| 42 | GET | `/api/cma/kpi-causality` | ④闭环-KPI因果 | +| 43 | POST | `/api/cma/kpi-causality/simulate` | ④闭环-因果模拟 | +| 44 | GET | `/api/cma/maps` | ④闭环-战略地图 | +| 45 | GET | `/api/cma/maps/{map_id}/objectives` | ④闭环-地图目标 | +| 46 | GET | `/api/cma/maps/{map_id}/review` | ④闭环-地图评审 | +| 47 | GET | `/api/cma/okr` | ④闭环-OKR | +| 48 | GET | `/api/cma/predict/accuracy` | ③找人-预测准确率 | +| 49 | POST | `/api/cma/predict/cash-forecast` | ③找人-现金流预测 | +| 50 | POST | `/api/cma/verify/{plan_id}` | ④闭环-自动验证 | \ No newline at end of file diff --git a/docs/northstar-layer-maps/01-data-ingestion.md b/docs/northstar-layer-maps/01-data-ingestion.md new file mode 100644 index 00000000..a4be981e --- /dev/null +++ b/docs/northstar-layer-maps/01-data-ingestion.md @@ -0,0 +1,41 @@ +# 北极星① 数据接入 — 一页纸逻辑地图 + +> 定位:让数据进得来、进得对、进得全。任总10分钟消化层。 + +## 数据流(箭头图) +``` +财务软件(用友/金蝶/管家婆) ──R3调研中──┐ +Excel/手工录入 ──import-excel-smart──┤ +Bot写入 ──bot/kpi-value-with-check───┼─→ 数据源登记(value-sources) +网银流水 ──cash/import/vouchers──────┤ ↓ + 数据质量检查(data-quality) + ↓ + KPI实际值归集(value-collect) + ↓ + 进入CMA可分析数据池(KPI/预算/现金流) +``` + +## 关键API(核心5个) +| 核心 | API | 作用 | +|:--|:--|:--| +| ⭐1 | `POST /data/import-excel-smart` | 智能导入Excel(含科目映射) | +| ⭐2 | `POST /budget/value-collect/run` | 实际值自动归集 | +| ⭐3 | `GET /data-quality/governance-check` | 数据治理检查(财务七规则) | +| ⭐4 | `POST /cash/import/vouchers` | 凭证/流水导入 | +| ⭐5 | `POST /bot/kpi-value-with-check` | Bot带校验写入KPI值 | + +## 决策点(需任总拍板 1-3个) +1. 财务软件接口选型:接哪个软件(用友/金蝶/管家婆)→ R3调研后定 +2. 数据质量标准:治理检查评分阈值定多少(当前error-10/warning-5) +3. 历史数据导入范围:导入多少个月的流水/凭证 + +## 验证点 +- ✅ L1自动:data-quality/governance-check(脚本/cron每日) +- ✅ L1自动:value-collect 归集正确性(幂等验证) +- 🟡 L2 Bot验证:import-excel-smart 导入闭环(QA Bot造数验证) +- 🔴 L3任总抽验:登录/切换企业/智能导入/治理检查 4项核心 + +## 当前状态 +- ✅ 手工/Excel/Bot写入 已落地(2026-08-30) +- ✅ 数据质量检查 已落地(财务七规则) +- ⏳ 财务软件接口 调研中(R3,zhixiangtong适配器方案已出) diff --git a/docs/northstar-layer-maps/02-multi-bot.md b/docs/northstar-layer-maps/02-multi-bot.md new file mode 100644 index 00000000..a011bb51 --- /dev/null +++ b/docs/northstar-layer-maps/02-multi-bot.md @@ -0,0 +1,44 @@ +# 北极星② 多Bot互动 — 一页纸逻辑地图 + +> 定位:14个Bot像同事一样读写CMA数据、协同干活。任总10分钟消化层。 + +## 数据流(箭头图) +``` +14Bot(研学/财务/项目/运维/创作/商务...) + │ bot/query bot/kpis bot/import + ▼ + bot_bridge(A2A桥接层,X-BOT-KEY鉴权) + │ 写:kpi-value-with-check / kpi-result / okr/create + │ 读:budget/plans / cost/actual / okr/list + ▼ + 验证引擎(verify + bot-bridge/verify) + │ passed → 自动回填 + OKR联动 + 通知 + │ failed → 打回Bot重试(≤3次) → 升级人工 + ▼ + CMA数据池(KPI/预算/OKR/ActionPlan) +``` + +## 关键API(核心5个) +| 核心 | API | 作用 | +|:--|:--|:--| +| ⭐1 | `POST /bot/kpi-value-with-check` | Bot写KPI值+校验 | +| ⭐2 | `GET /bot/overview` | Bot总览(各Bot权限内数据) | +| ⭐3 | `POST /bot-bridge/verify/{plan_id}` | Bot侧轻量验证入口 | +| ⭐4 | `POST /bot/okr/create` | Bot创建OKR | +| ⭐5 | `POST /bot/import` | Bot批量导入 | + +## 决策点(需任总拍板 1-3个) +1. Bot写入权限边界:哪个Bot能写哪些表(L1-L4分级已定,执行中) +2. 验证失败打回策略:打回次数/升级阈值(当前默认3次) +3. Bot间数据一致性:多Bot写同一KPI冲突时谁优先(唯一执行人铁律) + +## 验证点 +- ✅ L1自动:bot/iron-law 铁律KPI看板(每日聚合) +- 🟡 L2 Bot验证:bot_bridge读写闭环(QA Bot造数验证) +- 🔴 L3任总抽验:overview总览 / query查询 / 验证桥 3项核心 + +## 当前状态 +- ✅ A2A + bot_bridge 已落地(14Bot互通) +- ✅ verify引擎已上线(2026-08-30修复4缺陷,commit 6910d90) +- ⏳ 失败打回Bot自动重试链路(cron残留修复派单中) +- 🟡 Bot联合决策(同数据多Bot出结论)——中期规划 diff --git a/docs/northstar-layer-maps/03-data-finds-you.md b/docs/northstar-layer-maps/03-data-finds-you.md new file mode 100644 index 00000000..af4e296f --- /dev/null +++ b/docs/northstar-layer-maps/03-data-finds-you.md @@ -0,0 +1,50 @@ +# 北极星③ 数据找人 — 一页纸逻辑地图 + +> 定位:异常和机会主动推送,不等任总来翻数据。任总10分钟消化层。 + +## 数据流(箭头图) +``` +CMA数据池(KPI/预算/现金流) + │ + ▼ + 规则引擎(alert-rules + 动态阈值) + │ 偏差>阈值 / 预测偏差 / 数据异常 + ▼ + 预警中心(alerts:异常红/警告黄) + │ 风险矩阵 / 超时升级 + ├──────────────┐ + ▼ ▼ + AI分析(ai/ask、kpi-analysis、dashboard-analysis) + │ │ + ▼ ▼ + 机会推送(预测向好/预算余量/滚动机会)──→ 决策建议(ai/suggestions) + │ │ + ▼ ▼ + 每日推送(企微) 建议落地 apply → ④决策闭环 +``` + +## 关键API(核心5个) +| 核心 | API | 作用 | +|:--|:--|:--| +| ⭐1 | `GET /alerts` | 预警列表(异常+机会) | +| ⭐2 | `POST /alert-rules/check-all` | 全量预警规则检查 | +| ⭐3 | `POST /ai/suggestions` | AI决策建议生成 | +| ⭐4 | `GET /dashboard/my-dashboard` | 工作台(数据找人入口) | +| ⭐5 | `POST /predict/cash-forecast` | 现金流预测(提前预警) | + +## 决策点(需任总拍板 1-3个) +1. 预警阈值校准:动态阈值(系统推荐)还是静态阈值(人工设定)?→ 建议动态+人工确认 +2. 推送频率:每日推送是否太频?红黄绿分级是否合理? +3. AI建议落地权限:建议→KPI/预算/行动的"一键落地"是否需要二次确认(默认需要) + +## 验证点 +- ✅ L1自动:alert-rules/check-all(cron每日9:30) +- ✅ L1自动:预测准确率(predict/accuracy 月度回测) +- 🟡 L2 Bot验证:AI建议生成→落地闭环 +- 🔴 L3任总抽验:预警处理 / AI建议 / 工作台 / 现金流预测 4项核心 + +## 当前状态 +- ✅ 异常预警(红黄绿)+ 偏差推送 已落地 +- ✅ AI建议生成 已上线(apply落地链路在④闭环) +- ⏳ 机会推送扩大(R2:KPI向好/预算余量/滚动机会)——近期规划 +- 🟡 推送策略化(按角色/频率分级)——中期 diff --git a/docs/northstar-layer-maps/04-decision-loop.md b/docs/northstar-layer-maps/04-decision-loop.md new file mode 100644 index 00000000..32c33bed --- /dev/null +++ b/docs/northstar-layer-maps/04-decision-loop.md @@ -0,0 +1,51 @@ +# 北极星④ 决策闭环 — 一页纸逻辑地图 + +> 定位:从建议到决策到执行到留痕,全链路可追溯。任总10分钟消化层。 + +## 数据流(箭头图) +``` +③数据找人推送的建议/预警 + │ + ▼ + 决策入口(战略地图 maps + OKR目标) + │ 北极星四层泳道:财务/客户/流程/学习 + ▼ + 决策落地(AI建议 apply → 预算/行动方案) + │ 建议→写库+操作日志留痕 + ▼ + 执行跟踪(ActionPlan 行动方案) + │ auto_verify 自动验证(规则引擎) + ▼ + 验证闭环(passed → 自动回填KPI + OKR进度 / failed → 打回重试≤3次) + │ + ▼ + 复盘留痕(操作日志 + 版本快照 + 评审记录) + │ + └────→ 回到①数据接入(新数据进池),形成PDCA飞轮 +``` + +## 关键API(核心5个) +| 核心 | API | 作用 | +|:--|:--|:--| +| ⭐1 | `GET /maps` | 战略地图(决策主画布) | +| ⭐2 | `GET /okr` | OKR目标(KPI阈值=验证规则) | +| ⭐3 | `POST /budget/versions/approve` | 预算版本审批(拍板点) | +| ⭐4 | `POST /verify/{plan_id}` | 自动验证(规则引擎闭环) | +| ⭐5 | `GET /action-plans` | 行动方案(决策执行跟踪) | + +## 决策点(需任总拍板 1-3个) +1. 预算版本审批:年度预算编制完成→任总审批(versions/approve)→锁定 +2. 战略目标与预算差异:>10%黄 / >20%红,需说明原因(2026-08-27已拍板) +3. 自动验证是否开启auto_close:默认false,防误闭环(已固化) + +## 验证点 +- ✅ L1自动:verify/{plan_id}(cron每日9:30,4缺陷已修复) +- ✅ L1自动:预算偏差报告(deviation-report) +- 🟡 L2 Bot验证:建议apply→预算/行动 落地闭环 +- 🔴 L3任总抽验:战略地图 / OKR / 预算审批 / 行动方案 4项核心 + +## 当前状态 +- ✅ 战略地图+OKR+预算+行动方案 全链路已落地 +- ✅ verify引擎 4缺陷修复完成(2026-08-31 cron残留派单中) +- ⏳ AI建议→一键落地(R1)——近期重点 +- 🟡 决策复盘闭环(版本回滚+评审)——中期 diff --git a/docs/northstar-layer-maps/README.md b/docs/northstar-layer-maps/README.md new file mode 100644 index 00000000..4a8baf15 --- /dev/null +++ b/docs/northstar-layer-maps/README.md @@ -0,0 +1,44 @@ +# 北极星四层逻辑地图 — 阅读导航 + +> 生成:项目Bot | 2026-08-31 | 目的:任总10分钟消化一层,398个API压缩成4张一页纸 + +## 建议阅读顺序(从根到梢) +``` +第1层:01-data-ingestion.md ①数据接入 —— 数据怎么进来的(先懂源头) +第2层:02-multi-bot.md ②多Bot互动 —— 14个Bot怎么协同干活 +第3层:03-data-finds-you.md ③数据找人 —— 数据怎么主动找任总 +第4层:04-decision-loop.md ④决策闭环 —— 建议→决策→执行→留痕 +``` + +## 四层关系一句话 +**数据进得来(①)→ Bot帮干活(②)→ 数据找人(③)→ 人拍板留痕(④)**,第④层闭环后新数据回流第①层,形成飞轮。 + +## 每层核心API(每层5个,共20个=任总最该认识的) +| 层 | 核心API | 一句话作用 | +|:--|:--|:--| +| ① | import-excel-smart | 智能导入Excel | +| ① | value-collect/run | 实际值自动归集 | +| ① | data-quality/governance-check | 数据治理检查 | +| ② | bot/kpi-value-with-check | Bot带校验写KPI | +| ② | bot-bridge/verify | Bot侧验证入口 | +| ② | bot/overview | Bot总览 | +| ③ | alerts | 预警列表 | +| ③ | ai/suggestions | AI决策建议 | +| ③ | predict/cash-forecast | 现金流预测 | +| ④ | maps | 战略地图 | +| ④ | okr | OKR目标 | +| ④ | verify/{plan_id} | 自动验证闭环 | +| ④ | action-plans | 行动方案跟踪 | + +## 验证分工(详见 api-verification-split.md) +- 🔴 **L3 任总亲测 50个**(影响拍板的核心,唯一需要亲测的) +- 🟡 L2 项目Bot/QA Bot 169个(业务流程闭环) +- ✅ L1 脚本/cron 175个(数据完整性/计算正确性,异常才找人) + +## 当前系统状态速览 +| 层 | 状态 | 下一步 | +|:--|:--|:--| +| ①数据接入 | ✅手工/Excel/Bot | ⏳财务软件接口(R3调研中) | +| ②多Bot互动 | ✅A2A+verify引擎 | ⏳失败打回自动重试 | +| ③数据找人 | ✅异常预警+AI建议 | ⏳机会推送扩大(R2) | +| ④决策闭环 | ✅全链路已落地 | ⏳AI建议一键落地(R1) |