25 lines
869 B
TypeScript
25 lines
869 B
TypeScript
import type { MonitoringVehicle } from './types';
|
|
import type { VehicleRecentDay } from './api';
|
|
|
|
export function monitoringMileageValue(vehicle: MonitoringVehicle): number | string {
|
|
if (vehicle.mileageAnomaly) return '数据异常';
|
|
if (!vehicle.isDataSynced) return '—';
|
|
return Math.max(0, vehicle.dailyKm || 0);
|
|
}
|
|
|
|
export function hasDailyMileage(day: VehicleRecentDay): boolean {
|
|
return day.isDataSynced && Number.isFinite(day.dailyKm) && day.dailyKm >= 0;
|
|
}
|
|
|
|
export function recentMileageStats(days: VehicleRecentDay[]) {
|
|
const validDays = days.filter(hasDailyMileage);
|
|
const totalKm = validDays.reduce((sum, day) => sum + day.dailyKm, 0);
|
|
return {
|
|
totalKm,
|
|
synced: validDays.length,
|
|
avg: validDays.length ? totalKm / validDays.length : 0,
|
|
max: Math.max(1, ...validDays.map(day => day.dailyKm)),
|
|
totalDays: days.length,
|
|
};
|
|
}
|