From 9d712046f34323aa3eb8a4298ecacb0d41b4cae4 Mon Sep 17 00:00:00 2001 From: Hermes CI Fix Date: Wed, 26 Aug 2026 09:14:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20KPI=E8=AF=A6=E6=83=85'=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE'Tab=E7=A9=BA=E7=99=BD=20=E2=80=94=20get=5Fkp?= =?UTF-8?q?i=E9=99=84=E5=B8=A6kpi=5Fvalues=E5=8E=86=E5=8F=B2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: 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条 --- backend/app/api/kpis.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/backend/app/api/kpis.py b/backend/app/api/kpis.py index aae03b3b..61f203b6 100644 --- a/backend/app/api/kpis.py +++ b/backend/app/api/kpis.py @@ -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):