diff --git a/src/modules/mileage/api.ts b/src/modules/mileage/api.ts new file mode 100644 index 0000000..986c433 --- /dev/null +++ b/src/modules/mileage/api.ts @@ -0,0 +1,28 @@ +import type { MonitoringData, TargetSummary, TargetVehicle, TrendPoint } from './types'; + +const BASE = '/api/mileage'; + +async function fetchJson(url: string): Promise { + const res = await fetch(url); + if (!res.ok) throw new Error(`API error: ${res.status} ${res.statusText}`); + return res.json(); +} + +export async function fetchMonitoring(): Promise { + return fetchJson(`${BASE}/monitoring`); +} + +export async function fetchTargets(): Promise { + return fetchJson(`${BASE}/targets`); +} + +export async function fetchTargetVehicles(targetId: number): Promise { + return fetchJson(`${BASE}/target/${targetId}/vehicles`); +} + +export async function fetchTrend(targetId?: number, days = 7): Promise { + const params = new URLSearchParams(); + if (targetId) params.set('targetId', String(targetId)); + params.set('days', String(days)); + return fetchJson(`${BASE}/trend?${params.toString()}`); +}