From bc1e0ea32e6e5ecf5f8253794f2b4f2e8bdb95ca Mon Sep 17 00:00:00 2001 From: kkfluous Date: Thu, 2 Apr 2026 13:30:02 +0800 Subject: [PATCH] refactor: extract mileage shared types --- src/server/routes/mileage/types.ts | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/server/routes/mileage/types.ts diff --git a/src/server/routes/mileage/types.ts b/src/server/routes/mileage/types.ts new file mode 100644 index 0000000..f9c7154 --- /dev/null +++ b/src/server/routes/mileage/types.ts @@ -0,0 +1,74 @@ +/** 缓存中的单辆车数据 */ +export interface CachedVehicle { + plate: string; + vin: string; + dailyKm: number; + totalKm: number | null; + source: string; + isOnline: boolean; + isDataSynced: boolean; + customer: string | null; + department: string | null; + manager: string | null; + rentStatus: string | null; + entity: string | null; + project: string | null; + yesterdayKm: number; +} + +/** 车牌前缀统计 */ +export interface PlatePrefix { + prefix: string; + count: number; +} + +/** 筛选选项(前端下拉) */ +export interface MonitoringFilters { + departments: string[]; + customers: string[]; + plates: string[]; + projects: string[]; + entities: string[]; + rentStatuses: string[]; + platePrefixes: PlatePrefix[]; + targetNames: string[]; +} + +/** 监控缓存 */ +export interface MonitoringCache { + vehicles: CachedVehicle[]; + stats: { totalToday: number; totalAll: number; vehicleCount: number }; + filters: MonitoringFilters; + targetPlatesMap: Map>; + updatedAt: string; +} + +/** /monitoring 响应中的统计 */ +export interface MonitoringStats { + totalToday: number; + totalAll: number; + vehicleCount: number; + yesterdayTotal: number; +} + +/** /monitoring 完整响应 */ +export interface MonitoringResponse { + vehicles: CachedVehicle[]; + stats: MonitoringStats; + filters: MonitoringFilters; + total: number; + page: number; + totalPages: number; + updatedAt: string; +} + +/** 车辆关联信息(从 lingniu_prod 查出的原始行) */ +export interface VehicleInfoRow { + plate: string; + customer: string | null; + department: string | null; + manager: string | null; + rent_status: string | null; + entity: string | null; + project: string | null; +}