From 8472f22f1eb492bd79f395ae94be3f8c67bdc340 Mon Sep 17 00:00:00 2001 From: kkfluous Date: Sat, 28 Mar 2026 20:17:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=87=BA=E5=8B=A4=E7=8E=87=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E5=BD=93=E5=A4=A9=E8=AE=A1=E7=AE=97=EF=BC=88=E5=BD=93?= =?UTF-8?q?=E5=A4=A9=E5=87=BA=E5=8B=A4=E6=95=B0/=E6=80=BB=E8=BF=90?= =?UTF-8?q?=E8=90=A5=E6=95=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前用近30天activeDays/totalDays计算,现改为: 当天里程>0的车辆数 / 部门总运营车辆数 × 100% Co-Authored-By: Claude Opus 4.6 (1M context) --- src/server/routes/vehicles.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/server/routes/vehicles.ts b/src/server/routes/vehicles.ts index 04c9d24..5e5081f 100644 --- a/src/server/routes/vehicles.ts +++ b/src/server/routes/vehicles.ts @@ -693,23 +693,20 @@ app.get('/dept-stats', async (c) => { mgrMap.get(mgr)!.push(v); } - // Compute attendance & mileage for a set of vehicles + // Compute attendance (today) & avg mileage (30d) for a set of vehicles const getMileageStats = (vList: Vehicle[]) => { - let totalActive = 0; - let totalDays = 0; + const todayActive = vList.filter((v) => (todayMileageMap.get(v.plateNumber) || 0) > 0).length; let totalMileage = 0; let count = 0; for (const v of vList) { const m = mileageMap.get(v.plateNumber); if (m) { - totalActive += m.activeDays; - totalDays += m.totalDays; totalMileage += m.avgMileage; count++; } } return { - attendanceRate: totalDays > 0 ? Math.round((totalActive / totalDays) * 1000) / 10 : 0, + attendanceRate: vList.length > 0 ? Math.round((todayActive / vList.length) * 1000) / 10 : 0, avgMileage: count > 0 ? Math.round(totalMileage / count) : 0, }; };