feat(KR): KR完整修复 — krs表打通+方向符号operator+权重自由输入
- 后端okr.py: KR读取从ActionPlan改为krs表, 新增KR CRUD API(POST/PUT/DELETE /okr/{objective_id}/krs) + 批量sync
- operator方向符号: krs表加operator/tolerance/weight/sort_order/monthly_milestones列
- progress方向感知计算(>=/>: current/target, <=/<: target/current, =: 容差), 达成→status=achieved
- 关联KPI自动继承方向(threshold_green解析: F_COST_RATIO<=18等)
- maps.py: 保存地图时自动同步objectives+krs表, JSON→krs数据迁移脚本
- 前端: 权重下拉改自由数字输入(可小数33.33) + 方向选择器(≥/≤/>/</=) + 自动平分按钮 + KPI方向继承提示
- pytest: 10个新测试(krs CRUD/方向感知/权重校验/多租户隔离) + 更新旧KR测试
- 迁移: 现有strategic_maps JSON 12条KR已写入krs表
This commit is contained in:
@@ -93,6 +93,14 @@ export const okrApi = {
|
||||
api.put(`/okr/${okrId}/decomposition/milestones/${krId}`, { milestones }),
|
||||
generateMilestones: (okrId: number, krId: number) =>
|
||||
api.post(`/okr/${okrId}/decomposition/milestones/generate`, { kr_id: krId }),
|
||||
// KR完整修复(2026-08-27): krs表CRUD
|
||||
createKr: (objectiveId: number, data: any) => api.post(`/okr/${objectiveId}/krs`, data),
|
||||
updateKr: (objectiveId: number, krId: number, data: any) =>
|
||||
api.put(`/okr/${objectiveId}/krs/${krId}`, data),
|
||||
deleteKr: (objectiveId: number, krId: number) =>
|
||||
api.delete(`/okr/${objectiveId}/krs/${krId}`),
|
||||
syncKrs: (objectiveId: number, krs: any[]) =>
|
||||
api.put(`/okr/${objectiveId}/krs/sync`, { krs }),
|
||||
}
|
||||
|
||||
// ── 本体三支柱追溯链 (科目↔KPI↔OKR) ──
|
||||
|
||||
Reference in New Issue
Block a user