fix(strategy-map): 移除悬空 import kpi_target_reader(该模块全仓不存在,致 app.main 导入失败/部署自检中止)→ 目标值取 target_monthly or target_value
ci/woodpecker/push/main Pipeline was successful

This commit is contained in:
wecom-fullstack
2026-10-20 13:01:02 +08:00
parent ecbe55c48a
commit 86e24c6310
+1 -11
View File
@@ -11,8 +11,6 @@ from app.models import StrategicMap, OperationLog, MapObjective, Objective, KR,
from app.utils.kr_name import sanitize_kr_name
from app.utils.kpi_value_scope import actual_only_clause
import copy
# CMA-KPI-20261003 ③ 落码:考核型目标读路径分流(kpi_targets 优先;未命中回退哨兵在 utils 内)
from app.utils.kpi_target_reader import fetch_target_map, pick_cycle_target, target_type_for_frequency
import json
import logging
@@ -984,8 +982,6 @@ def get_map_review(map_id: int, level: Optional[str] = None, db: Session = Depen
KPIDefinition.entity_id == entity_id,
).all() if all_kpi_codes else []
kpi_map = {k.kpi_code: k for k in kpi_defs}
# ③ 落码:考核型目标一次性取新路径(战略回顾当期)
_tmap = fetch_target_map(db, entity_id, [k.id for k in kpi_defs])
# 查询最新KPI实际值
kpi_ids = [k.id for k in kpi_defs]
@@ -1054,13 +1050,7 @@ def get_map_review(map_id: int, level: Optional[str] = None, db: Session = Depen
held = code in DATA_HOLD_KPIS
actual = None if held else lv.get("actual_value")
# 多粒度目标优先: 月目标(多数KPI月度) → 兼容legacy target_value (OpenCode审查#5)
# ③ 落码:新路径命中即用;未命中回退兼容列(哨兵在 utils,不 or 0)
# COMPAT-FALLBACK 到期 2026-11-02:新表未命中 → 回退兼容列(顺序回退,不 or 0)
target = pick_cycle_target(_tmap, kpi_def.id, "monthly", kpi_def.target_monthly)
if target is None:
target = pick_cycle_target(_tmap, kpi_def.id,
target_type_for_frequency(kpi_def.frequency),
kpi_def.target_value)
target = kpi_def.target_monthly or kpi_def.target_value
# 判断红黄绿灯(绿≥90% / 黄60-90% / 红<60%)
# 方向修正: 越低越好型(费用率/成本率/损耗/逾期/投诉/流失) 与 负值目标 (OpenCode审查#5)
level = "gray"