From 5a1b21104d198dedc3335595ea9d57a40c9ea69e Mon Sep 17 00:00:00 2001 From: freedakgmail Date: Thu, 30 Jul 2026 09:18:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=8F=E8=90=A5=E8=B1=A1=E9=99=90?= =?UTF-8?q?=E9=98=88=E5=80=BC=E7=94=A8=E4=B8=AD=E4=BD=8D=E6=95=B0(?= =?UTF-8?q?=E8=90=A5=E6=94=B618642/=E6=AF=9B=E5=88=A9=E7=8E=8770%)?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=A1=8C=E5=8A=A8=E5=BB=BA=E8=AE=AE?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/routes/data.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/server/src/routes/data.ts b/server/src/routes/data.ts index b5affe2..dabfc1e 100644 --- a/server/src/routes/data.ts +++ b/server/src/routes/data.ts @@ -120,12 +120,26 @@ router.get('/stores/:code', async (req: AuthRequest, res) => { return sendError(res, 'Store not found', 404) } + const sc = scorecard.rows[0] as any + const rk = risk.rows[0] as any + const act = action.rows[0] as any + + // 计算经营象限 + const medianRev = 18642 + const medianMargin = 70.0 + const dailyRev = parseFloat(rk?.avg_daily_received) || 0 + const margin = parseFloat(rk?.theoretical_margin_pct) || 0 + const quadrant = dailyRev >= medianRev && margin >= medianMargin ? '明星门店' + : dailyRev >= medianRev && margin < medianMargin ? '现金牛门店' + : dailyRev < medianRev && margin >= medianMargin ? '潜力门店' + : '问题门店' + sendSuccess(res, { - scorecard: scorecard.rows[0], - risk: risk.rows[0], + scorecard: sc, + risk: rk, platform: platform.rows[0], benchmark: benchmark.rows[0], - action: action.rows[0], + action: { ...act, management_quadrant: quadrant, risk_level: rk?.risk_level }, }) } catch (err: any) { sendError(res, err.message)