| |
| |
| |
| |
|
|
| const API_BASE = import.meta.env.VITE_API_URL || 'http://localhost:8000'; |
| const API_PREFIX = '/api/v1'; |
|
|
| async function fetchJson(path: string, options: RequestInit = {}) { |
| const token = localStorage.getItem('fairrelay_token') || ''; |
| const res = await fetch(`${API_BASE}${path}`, { |
| ...options, |
| headers: { |
| 'Content-Type': 'application/json', |
| ...(token ? { Authorization: `Bearer ${token}` } : {}), |
| ...options.headers, |
| }, |
| }); |
| if (!res.ok) throw new Error(`API ${res.status}: ${res.statusText}`); |
| return res.json(); |
| } |
|
|
| |
| export const getHealth = () => fetchJson('/health'); |
| export const getApiHealth = () => fetchJson(`${API_PREFIX}/health`); |
|
|
| |
| export const runConsolidation = (payload: any) => |
| fetchJson(`${API_PREFIX}/consolidate`, { method: 'POST', body: JSON.stringify(payload) }); |
| export const runSimulation = (payload: any) => |
| fetchJson(`${API_PREFIX}/consolidate/simulate`, { method: 'POST', body: JSON.stringify(payload) }); |
|
|
| |
| export const runAllocation = (payload: any) => |
| fetchJson(`${API_PREFIX}/allocate`, { method: 'POST', body: JSON.stringify(payload) }); |
|
|
| |
| export const getDrivers = () => fetchJson(`${API_PREFIX}/drivers`); |
|
|
| |
| export const optimizeRoute = (payload: any) => |
| fetchJson(`${API_PREFIX}/routes/optimize`, { method: 'POST', body: JSON.stringify(payload) }); |
|
|
| |
| export function connectWS(channel: 'tracking' | 'shipments' | 'dashboard'): WebSocket { |
| const wsBase = API_BASE.replace('http', 'ws'); |
| return new WebSocket(`${wsBase}/ws/${channel}`); |
| } |
|
|
| |
| const OPS_BASE = import.meta.env.VITE_OPS_URL || 'http://localhost:3000'; |
|
|
| export const getOpsStats = () => fetch(`${OPS_BASE}/api/dashboard/stats`).then(r => r.json()); |
| export const getOpsActivity = () => fetch(`${OPS_BASE}/api/dashboard/activity`).then(r => r.json()); |
| export const getOpsTracking = () => fetch(`${OPS_BASE}/api/dashboard/live-tracking-gps`).then(r => r.json()); |
| export const getOpsShipments = (params?: string) => fetch(`${OPS_BASE}/api/shipments${params ? '?' + params : ''}`).then(r => r.json()); |
|
|