Files
cma-management/docs/ontology-trilogy-done.md
T
Hermes CI Fix bd9c70ea05 本体三支柱: 科目↔KPI↔OKR三层互联 + 追溯链API + OKR详情页签
- 新表 kpi_subject_map(89映射/24KPI) / objective_kpi(3O×5KPI) / krs(3O×3KR)
- GET /api/cma/ontology/trace?objective_id=N O→KPI→科目逐层追溯
- GET /api/cma/ontology/objectives 三层链路概览
- OkrDetail.vue 新增本体追溯链页签(KR目标/当前值 + KPI→科目标签流)
- 含并发已上线未提交的KPI多粒度列(target_monthly/quarterly/yearly)
- 回归: pytest 409 passed
2026-08-19 22:58:10 +08:00

58 lines
3.1 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.
# CMA本体三支柱:科目↔KPI↔OKR 三层互联 — 交付报告
> 任务:yanxue-cma-ontology-trilogy.md2026-08-19 21:00 并发任务)
> 执行:项目Botwecom-project | 完成:2026-08-19 22:56
> 优先级:P1(本体层核心补全)
## 交付内容
### 1. 数据层(3张新表 + 种子数据)
| 表 | 作用 | 数据量 | 验收 |
|:--|:--|:--|:--|
| `kpi_subject_map` | 科目↔KPI映射(指标→底层账) | **89条映射 / 24个KPI** | ≥10 ✓ |
| `objective_kpi` | KPI↔O支撑(目标→指标) | **3个O × 5个KPI** | 各≥3 ✓ |
| `krs` | 关键结果KR(OKR完整化) | **3个O × 3个KR** | 各2-3 ✓ |
- 备份:`backups/ontology-trilogy-backup-20260819.sql`subjects/kpi_definitions/objectives 全量,135KB
- 可重放脚本:`backend/scripts/seed_ontology_trilogy.sql`DDL + 种子,幂等可重跑)
### 2. API层(`backend/app/api/ontology.py`
- `GET /api/cma/ontology/trace?objective_id=N`**本体追溯链**:O(目标) → KPI(指标) → 科目(数据),含 KR 列表、KPI 支撑权重、科目 calc_type/weight
- `GET /api/cma/ontology/objectives` — 全部 OKR 三层链路概览(前端用)
### 3. 前端层(`OkrDetail.vue` + `api/index.ts`
- OKR 详情新增「本体追溯链」页签:追溯链横幅 + KR 卡片(目标/当前值/进度)+ KPI→科目 标签流(calc_type/weight),非科目驱动指标明确标注"不追溯账本"
## 追溯链实测(O→KPI→科目)
```
O#11 优化成本结构 → 5 KPI → 24 科目
费用率 → [6601销售费用, 6602管理费用, 6603财务费用, 6001收入(分母)]
净利润 → [6001+6051+6011+6111收入 - 6401-6402成本 - 6601-6602-6603费用...12科目]
O#12 保障现金流 → 5 KPI → 16 科目
O#13 渠道关系改善 → 5 KPI → 7 科目
```
从任一 O 可逐层下钻到账本;反之从科目可上溯到目标。
## 验证记录(铁律七)
1. ✅ 备份完成(mysqldump 3表 135KB
2. ✅ 每步 SQL 后 SELECT 验证(89/15/9 行确认)
3. ✅ 后端重启:`systemctl restart cma-backend`systemd,非 restart.sh 的 pkill 模式)→ active + `/health` ok
4. ✅ 追溯链 API 3个O全部跑通(含 KR + 科目映射)
5. ✅ 前端 `npm run build` 13.89s 成功,已部署 `/var/www/cma/`
6. ✅ 回归门:`pytest tests/`**409 passed, 1 xfailed, 0 failed**
- 注:首次全量跑有 13 个 test_reports 失败,二次全量 + 单文件隔离均通过 → 属既有测试排序/状态污染,与本改动无关
## 遗留说明
- 业务/调研类 KPI(客户满意度、保留率等)非科目驱动,trace 中 subjects 为空数组并标注,符合本体语义(不强行虚构账本映射)
- `models/__init__.py` 同时含并发任务"KPI多粒度"未提交列(target_monthly/quarterly/yearly2026-08-17已上线),本提交一并带入(同文件无法拆分,功能均已完成)
- 并发任务"自动化测试补覆盖"的 conftest/tests 改动未包含在本提交
## Git
- 提交:本体三支柱(科目↔KPI↔OKR)三层互联 + 追溯链API + OKR详情页签
- 推送:SSH 2222 → git.sxbh.ltd