fix: KPI历史数据治理批量修复 — 元数据补全321条+编码规范处理222条
- 规则2: 补全321条元数据 (formula 207 / data_source 57 / data_owner 57)
- EXT_科目KPI: formula按财务维度默认'财务指标计算'
- F_/C_/P_/L_经典KPI: 精确公式(6条) + 数据源按维度(财务系统/业务系统)
- data_owner优先取负责部门, 否则默认财务部
- 规则3: 审计规则白名单化EXT_前缀(科目余额表导入, 仅限finance维度),
EXT_编码与dimension保持一致不改动; FB_/BH_ 21条真实前缀冲突
输出人工确认清单 docs/kpi_governance_human_review.md
- 验证: GET /api/cma/kpi/governance/audit → rule_counts {1:0, 2:0, 3:21, 4:0}
未改动任何kpi_code及引用表, 评分/地图/KPI列表接口正常
This commit is contained in:
@@ -26,6 +26,8 @@ router = APIRouter(
|
||||
|
||||
# 维度 → 编码前缀
|
||||
DIM_PREFIX = {"finance": "F", "customer": "C", "process": "P", "learning": "L"}
|
||||
# 历史遗留兼容前缀: EXT_ = 科目余额表导入的财务科目KPI(仅限 finance 维度)
|
||||
LEGACY_PREFIX_DIM = {"EXT": "finance"}
|
||||
VALID_LEVELS = ("strategic", "operational")
|
||||
# 视为"未完善"的占位符值
|
||||
PLACEHOLDERS = ("待补充", "待指定", "待完善", "待定", "暂无", "TBD", "tbd", "-", "--", "N/A", "n/a")
|
||||
@@ -103,7 +105,9 @@ def validate_kpi_payload(
|
||||
else:
|
||||
prefix = code.split("_")[0] if "_" in code else code
|
||||
if prefix not in ("F", "C", "P", "L"):
|
||||
add(3, "kpi_code", f"编码前缀不符: {code} 应以F_/C_/P_/L_开头")
|
||||
# 兼容历史遗留 EXT_ 前缀(科目余额表导入的财务科目KPI,仅限finance维度)
|
||||
if not (LEGACY_PREFIX_DIM.get(prefix) and dimension == LEGACY_PREFIX_DIM[prefix]):
|
||||
add(3, "kpi_code", f"编码前缀不符: {code} 应以F_/C_/P_/L_开头")
|
||||
elif dimension and DIM_PREFIX.get(dimension) and prefix != DIM_PREFIX[dimension]:
|
||||
expected = DIM_PREFIX[dimension]
|
||||
add(3, "kpi_code",
|
||||
|
||||
Reference in New Issue
Block a user