This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import type { MileageSummary } from './summary-api.js';
|
||||
import type { OneOsDailyMileage } from './oneos-model.js';
|
||||
import { buildPlateTargetNamesMap, dailyMileageMap, mergeMonitoringVehicles, type TargetRow } from './cache-model.js';
|
||||
import type { CachedVehicle, VehicleInfoRow } from './types.js';
|
||||
import { sourceCategoryFromProtocol } from './source-policy.js';
|
||||
|
||||
export function buildSummaryMileage(summary: MileageSummary, yesterdayRows: OneOsDailyMileage[], infoMap: Map<string, VehicleInfoRow>, targets: TargetRow[], regions: Record<string, string>): CachedVehicle[] {
|
||||
const byPlate = new Map(summary.vehicles.map(v => [v.plateNumber, v]));
|
||||
return mergeMonitoringVehicles([], infoMap, dailyMileageMap(yesterdayRows), buildPlateTargetNamesMap(targets), regions).map(vehicle => {
|
||||
const row = byPlate.get(vehicle.plate.trim().toUpperCase());
|
||||
if (!row) return { ...vehicle, periodMileageKm: null };
|
||||
const categories = new Set(row.sourceProtocols.map(sourceCategoryFromProtocol));
|
||||
return { ...vehicle, vin: row.vin || vehicle.vin,
|
||||
dailyKm: row.periodMileageKm ?? 0, periodMileageKm: row.periodMileageKm,
|
||||
totalKm: row.endDateTotalMileageKm,
|
||||
validDays: row.validDays, missingDays: row.missingDays, anomalyDays: row.anomalyDays,
|
||||
qualityStatus: row.status, qualityReasons: row.qualityReasons, sourceProtocols: row.sourceProtocols,
|
||||
mileageAnomaly: row.anomalyDays ? row.qualityReasons.join(', ') || 'DATA_ANOMALY' : null,
|
||||
source: row.validDays > 0 ? 'ONEOS_API' : 'NONE', isDataSynced: row.validDays > 0,
|
||||
isOnline: row.periodMileageKm != null && row.periodMileageKm > 0,
|
||||
sourceProtocol: row.endDateSourceProtocol,
|
||||
sourceCategory: categories.size > 1 ? 'MIXED' : categories.values().next().value || null,
|
||||
dataTime: row.endDateDataTime, updatedAt: row.updatedAt, calculatedAt: null,
|
||||
};
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user