From 778a5d9c7930ef0efa0a5c449786de290387a931 Mon Sep 17 00:00:00 2001 From: Hermes CI Fix Date: Sat, 15 Aug 2026 21:44:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B7=A5=E4=BD=9C=E5=8F=B0KPI=E7=BA=A7?= =?UTF-8?q?=E5=88=AB=E5=88=A4=E6=96=AD=E6=94=AF=E6=8C=81=E5=8F=8D=E5=90=91?= =?UTF-8?q?=E6=8C=87=E6=A0=87=20=E2=80=94=20=E8=B4=B9=E7=94=A8=E7=8E=87/?= =?UTF-8?q?=E6=B8=A0=E8=A1=A5=E7=8E=87/=E5=BA=94=E6=94=B6=E5=A4=A9?= =?UTF-8?q?=E6=95=B0=E7=AD=89'=E8=B6=8A=E4=BD=8E=E8=B6=8A=E5=A5=BD'?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E4=B8=8D=E5=86=8D=E8=AF=AF=E5=88=A4green?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - my_dashboard的level判断原为actual/target比例法(≥0.9=green) - 反向指标(费用率24.9%/目标20%)被误判为green,实际应red - 新增REVERSE_INDICATORS集合:F_COST_RATIO/C_REBATE_RATE/F_AR_DAYS/F_REBATE_RATE/F_FACTORY_REBATE_RATE/F_COST_CONTROL_RATE - 反向指标逻辑:实际≤目标=绿,≤目标*1.1=黄,否则红 --- backend/app/api/dashboard.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/app/api/dashboard.py b/backend/app/api/dashboard.py index ab3d9b74..d3545a4c 100644 --- a/backend/app/api/dashboard.py +++ b/backend/app/api/dashboard.py @@ -417,8 +417,18 @@ def my_dashboard( target = k.target_value level = "gray" if actual is not None and target: - ratio = actual / target - level = "green" if ratio >= 0.9 else ("yellow" if ratio >= 0.7 else "red") + # 反向指标(越低越好):费用率/渠补率/应收天数/返利率/成本率 + REVERSE_INDICATORS = { + "F_COST_RATIO", "C_REBATE_RATE", "F_AR_DAYS", + "F_REBATE_RATE", "F_FACTORY_REBATE_RATE", "F_COST_CONTROL_RATE", + } + if k.kpi_code in REVERSE_INDICATORS: + # 反向:实际≤目标=绿;实际≤目标*1.1=黄;否则红 + level = "green" if actual <= target else ( + "yellow" if actual <= target * 1.1 else "red") + else: + ratio = actual / target + level = "green" if ratio >= 0.9 else ("yellow" if ratio >= 0.7 else "red") kpi_list.append({ "id": k.id,