feat: 推广 V3.5 实时氢耗并完善导出

This commit is contained in:
lingniu
2026-09-04 15:42:02 +08:00
parent a26179c8fe
commit e402eb5e60
53 changed files with 2855 additions and 320 deletions
@@ -24,6 +24,7 @@ import type {
AlertRuleRevision,
AlertSummary,
DailyMileageRow,
HydrogenDailyEvidence,
DashboardSummary,
HistoryLocationRow,
HistoryDataResponse,
@@ -487,6 +488,10 @@ export const api = {
dailyMileage: (query: MileageQuery, signal?: AbortSignal) => request<Page<DailyMileageRow>>('/api/mileage/daily', withSignal({
method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(query)
}, signal)),
hydrogenDailyEvidence: (vin: string, date: string, signal?: AbortSignal) => request<HydrogenDailyEvidence>(
`/api/v2/vehicles/${encodeURIComponent(vin)}/hydrogen-evidence?date=${encodeURIComponent(date)}`,
withSignal(undefined, signal)
),
mileageStatistics: (query: MileageQuery, signal?: AbortSignal) => request<MileageStatistics>('/api/v2/statistics/mileage', withSignal({
method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(query)
}, signal)),
@@ -470,6 +470,8 @@ export interface VehicleCoverageRow {
plate: string;
phone: string;
oem: string;
brandName?: string;
modelName?: string;
protocols: string[];
missingProtocols: string[];
sourceStatus: VehicleSourceStatus[];
@@ -908,10 +910,40 @@ export interface DailyMileageRow {
pureHydrogenMileageKm?: number;
hydrogenConsumptionKg?: number | null;
hydrogenConsumptionKgPer100Km?: number | null;
hydrogenSocBalancedKg?: number | null;
hydrogenSocBalancedKgPer100Km?: number | null;
hydrogenEvidenceAvailable?: boolean;
hydrogenQualityStatus?: string;
hydrogenAlgorithmVersion?: string;
source: string;
anomalySeverity?: string;
}
export interface HydrogenIntervalEvidence {
index: number; type: 'MIXED' | 'PURE_ELECTRIC'; startTime: string; endTime: string;
startEventId: string; endEventId: string; source: string;
startPressureMpa: number; endPressureMpa: number; startTemperatureC: number; endTemperatureC: number;
startMassKg: number; endMassKg: number; rawHydrogenConsumptionKg: number;
startSocPercent?: number; endSocPercent?: number; batteryDischargeKWh?: number; batteryEquivalentKg?: number;
socBalancedConsumptionKg?: number; startMileageKm?: number; endMileageKm?: number; mileageKm?: number;
consumptionKgPer100Km?: number; sampleCount: number; qualityStatus: string; qualityReason: string;
}
export interface HydrogenDailyEvidence {
vin: string; plate: string; date: string; source: string; rawConsumptionKg: number;
batterySocDeltaPct?: number; batteryDischargeKWh?: number; batteryEquivalentKg?: number;
socBalancedConsumptionKg?: number; mixedMileageKm: number; pureElectricMileageKm: number;
consumptionKgPer100Km?: number; socBalancedKgPer100Km?: number; sampleCount: number;
refuelCount: number; chargeCount: number; validSegmentCount: number; invalidSegmentCount: number;
qualityStatus: string; qualityReason: string; algorithmVersion: string; calculatedAt: string;
parameters: {
batteryCapacityKWh: number; hydrogenEnergyKWhPerKg: number; powerOnDelaySeconds: number;
powerOffLeadSeconds: number; refuelRiseMpa: number; refuelSustainSeconds: number;
pureElectricDropMpa: number; pureElectricWindowSeconds: number; algorithmVersion: string;
};
intervals: HydrogenIntervalEvidence[];
}
export interface MileageSummary {
vehicleCount: number;
recordCount: number;