- 新表 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
3.1 KiB
3.1 KiB
CMA本体三支柱:科目↔KPI↔OKR 三层互联 — 交付报告
任务:yanxue-cma-ontology-trilogy.md(2026-08-19 21:00 并发任务) 执行:项目Bot(wecom-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/weightGET /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 可逐层下钻到账本;反之从科目可上溯到目标。
验证记录(铁律七)
- ✅ 备份完成(mysqldump 3表 135KB)
- ✅ 每步 SQL 后 SELECT 验证(89/15/9 行确认)
- ✅ 后端重启:
systemctl restart cma-backend(systemd,非 restart.sh 的 pkill 模式)→ active +/healthok - ✅ 追溯链 API 3个O全部跑通(含 KR + 科目映射)
- ✅ 前端
npm run build13.89s 成功,已部署/var/www/cma/ - ✅ 回归门:
pytest tests/→ 409 passed, 1 xfailed, 0 failed- 注:首次全量跑有 13 个 test_reports 失败,二次全量 + 单文件隔离均通过 → 属既有测试排序/状态污染,与本改动无关
遗留说明
- 业务/调研类 KPI(客户满意度、保留率等)非科目驱动,trace 中 subjects 为空数组并标注,符合本体语义(不强行虚构账本映射)
models/__init__.py同时含并发任务"KPI多粒度"未提交列(target_monthly/quarterly/yearly,2026-08-17已上线),本提交一并带入(同文件无法拆分,功能均已完成)- 并发任务"自动化测试补覆盖"的 conftest/tests 改动未包含在本提交
Git
- 提交:本体三支柱(科目↔KPI↔OKR)三层互联 + 追溯链API + OKR详情页签
- 推送:SSH 2222 → git.sxbh.ltd