fix: KPI详情'历史数据'Tab空白 — get_kpi附带kpi_values历史数据

根因: GET /kpis/{kpi_id} 只返回KPI定义信息, 未附带历史值
前端期望 kv.values(图表+表格数据) → 拿到undefined → Tab空白

修复: get_kpi 查询该KPI的kpi_values(按期间升序), 附带
values[{period, actual_value, source_type, data_status, source_batch}]

验证: F_REVENUE 10条(2026-01~08+), 渠补率9条
This commit is contained in:
Hermes CI Fix
2026-08-26 09:14:33 +08:00
parent a64f184525
commit 9d712046f3
+19 -1
View File
@@ -482,7 +482,25 @@ def get_kpi(kpi_id: int, db: Session = Depends(get_db), entity_id: int = Depends
# 账套隔离: 禁止跨企业读取 (2026-08-23 P1a)
if kpi.entity_id != entity_id:
raise HTTPException(404, "KPI不存在")
return kpi_to_dict(kpi)
result = kpi_to_dict(kpi)
# 附带历史数据(前端KPI详情"历史数据"Tab依赖)
# 2026-08-26修复: 原实现只返回定义信息,values缺失导致历史数据Tab空白
vals = db.query(KPIValue).filter(
KPIValue.kpi_id == kpi_id,
KPIValue.actual_value.isnot(None),
).order_by(KPIValue.period.asc()).all()
result["values"] = [
{
"id": v.id,
"period": v.period,
"actual_value": v.actual_value,
"source_type": v.source_type,
"data_status": v.data_status,
"source_batch": v.source_batch,
}
for v in vals
]
return result
def _validate_kpi_data(data: dict, db: Session, current_kpi_id: Optional[int] = None, is_update: bool = False):