From 93198d7ad5f56dec571941521512199ff79d8bfa Mon Sep 17 00:00:00 2001 From: freedakgmail Date: Thu, 30 Jul 2026 09:51:44 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=A4=8D=E8=B4=AD=E7=8E=87=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E4=B9=9F=E8=BD=AC=E7=89=A9=E5=8C=96=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=EF=BC=8C=E5=81=A5=E5=BA=B7=E5=88=86API=E5=8A=A0=E9=80=9F?= =?UTF-8?q?=E5=88=B00.3=E7=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/routes/data.ts | 4 ++-- server/src/routes/situational-awareness.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/server/src/routes/data.ts b/server/src/routes/data.ts index 0e4c7e5..a6f837c 100644 --- a/server/src/routes/data.ts +++ b/server/src/routes/data.ts @@ -217,7 +217,7 @@ router.get('/member/comparison', async (req: AuthRequest, res) => { router.get('/member/repeat', async (req: AuthRequest, res) => { try { - const result = await query(`SELECT * FROM analytics.v_store_repeat_summary_monthly ORDER BY repeat_rate_pct DESC NULLS LAST`) + const result = await query(`SELECT * FROM analytics.mv_store_repeat_summary_monthly ORDER BY repeat_rate_pct DESC NULLS LAST`) sendSuccess(res, result.rows) } catch (err: any) { sendError(res, err.message) @@ -428,7 +428,7 @@ router.get('/stores/:code/member', async (req: AuthRequest, res) => { try { const [oppResult, repeatResult, monthlyResult] = await Promise.all([ query(`SELECT * FROM analytics.v_store_member_opportunity WHERE store_code = $1`, [req.params.code]), - query(`SELECT * FROM analytics.v_store_repeat_summary_monthly WHERE store_code = $1`, [req.params.code]), + query(`SELECT * FROM analytics.mv_store_repeat_summary_monthly WHERE store_code = $1`, [req.params.code]), query(` SELECT store_code, store_name, count(*) as member_count, sum(orders) as total_orders, sum(received) as total_received, diff --git a/server/src/routes/situational-awareness.ts b/server/src/routes/situational-awareness.ts index 3258d4a..391069e 100644 --- a/server/src/routes/situational-awareness.ts +++ b/server/src/routes/situational-awareness.ts @@ -26,7 +26,7 @@ router.get('/health-score', async (req: AuthRequest, res) => { ), member AS ( SELECT store_code, max(repeat_rate_pct) AS repeat_rate_pct - FROM analytics.v_store_repeat_summary_monthly + FROM analytics.mv_store_repeat_summary_monthly GROUP BY store_code ), task AS ( @@ -325,7 +325,7 @@ router.get('/correlation', async (req: AuthRequest, res) => { FROM analytics.v_store_platform_economics pe JOIN analytics.mv_store_risk_rating r2 ON pe.store_code = r2.store_code ) p ON r.store_code = p.store_code - LEFT JOIN analytics.v_store_repeat_summary_monthly m ON r.store_code = m.store_code + LEFT JOIN analytics.mv_store_repeat_summary_monthly m ON r.store_code = m.store_code WHERE r.received IS NOT NULL ORDER BY CASE WHEN COALESCE(p.platform_share, 0) > 40 AND COALESCE(r.member_bill_share_pct, 0) < 20 THEN 0 ELSE 1 END,