import type { HydrogenDailyRow } from '../types'; export { formatYmd, getQuickRange, getRangeModeLabel, normalizeRange, QUICK_PICK_OPTIONS, type RangeMode, } from '../daily-range/model'; export function summarizeHydrogenRows(rows: HydrogenDailyRow[] | null) { const source = rows ?? []; // 图表固定按日期升序;复制数组避免改变接口返回及表格原始顺序。 const trendData = [...source].sort((left, right) => left.date.localeCompare(right.date)); const totalKg = source.reduce((total, row) => total + row.totalKg, 0); const activeDays = source.filter(row => row.totalKg > 0).length; const stationNames = new Set(); source.forEach(row => row.stations.forEach(station => stationNames.add(station.name))); const peakDay = trendData.reduce( (best, item) => (!best || item.totalKg > best.totalKg ? item : best), null, ); const lowDay = trendData .filter(item => item.totalKg > 0) .reduce( (low, item) => (!low || item.totalKg < low.totalKg ? item : low), null, ); return { trendData, totalKg, activeDays, stationCount: stationNames.size, avgKg: activeDays > 0 ? totalKg / activeDays : 0, peakDay, lowDay, zeroDays: source.filter(row => row.totalKg === 0).length, }; }