xpeditis2.0/apps/frontend/src/lib/api/dashboard.ts
David 08787c89c8
Some checks failed
Dev CI / Unit Tests (${{ matrix.app }}) (backend) (push) Blocked by required conditions
Dev CI / Unit Tests (${{ matrix.app }}) (frontend) (push) Blocked by required conditions
Dev CI / Notify Failure (push) Blocked by required conditions
Dev CI / Quality (${{ matrix.app }}) (backend) (push) Has been cancelled
Dev CI / Quality (${{ matrix.app }}) (frontend) (push) Has been cancelled
chore: sync full codebase from cicd branch
Aligns dev with the complete application codebase (cicd branch).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 12:56:16 +02:00

141 lines
2.8 KiB
TypeScript

/**
* Dashboard API
*
* Endpoints for dashboard analytics and KPIs
*/
import { get } from './client';
/**
* Dashboard KPIs Response
*/
export interface DashboardKPIs {
bookingsThisMonth: number;
bookingsThisMonthChange: number;
totalTEUs: number;
totalTEUsChange: number;
estimatedRevenue: number;
estimatedRevenueChange: number;
pendingConfirmations: number;
pendingConfirmationsChange: number;
}
/**
* Bookings Chart Data
*/
export interface BookingsChartData {
labels: string[];
data: number[];
}
/**
* Trade Lane Data
*/
export interface TradeLane {
route: string;
bookingCount: number;
origin: string;
destination: string;
}
/**
* Dashboard Alert
*/
export interface DashboardAlert {
id: string;
severity: 'critical' | 'high' | 'medium' | 'low';
title: string;
message: string;
bookingId?: string;
bookingNumber?: string;
createdAt: string;
}
/**
* Get dashboard KPIs
* GET /api/v1/dashboard/kpis
*/
export async function getKPIs(): Promise<DashboardKPIs> {
return get<DashboardKPIs>('/api/v1/dashboard/kpis');
}
/**
* Get bookings chart data (6 months)
* GET /api/v1/dashboard/bookings-chart
*/
export async function getBookingsChart(): Promise<BookingsChartData> {
return get<BookingsChartData>('/api/v1/dashboard/bookings-chart');
}
/**
* Get top 5 trade lanes
* GET /api/v1/dashboard/top-trade-lanes
*/
export async function getTopTradeLanes(): Promise<TradeLane[]> {
return get<TradeLane[]>('/api/v1/dashboard/top-trade-lanes');
}
/**
* Get dashboard alerts
* GET /api/v1/dashboard/alerts
*/
export async function getAlerts(): Promise<DashboardAlert[]> {
return get<DashboardAlert[]>('/api/v1/dashboard/alerts');
}
/**
* CSV Booking KPIs Response
*/
export interface CsvBookingKPIs {
totalAccepted: number;
totalRejected: number;
totalPending: number;
totalWeightAcceptedKG: number;
totalVolumeAcceptedCBM: number;
acceptanceRate: number;
acceptedThisMonth: number;
rejectedThisMonth: number;
}
/**
* Top Carrier Data
*/
export interface TopCarrier {
carrierName: string;
totalBookings: number;
acceptedBookings: number;
rejectedBookings: number;
acceptanceRate: number;
totalWeightKG: number;
totalVolumeCBM: number;
avgPriceUSD: number;
}
/**
* Get CSV booking KPIs
* GET /api/v1/dashboard/csv-booking-kpis
*/
export async function getCsvBookingKPIs(): Promise<CsvBookingKPIs> {
return get<CsvBookingKPIs>('/api/v1/dashboard/csv-booking-kpis');
}
/**
* Get top carriers (top 5 by booking count)
* GET /api/v1/dashboard/top-carriers
*/
export async function getTopCarriers(): Promise<TopCarrier[]> {
return get<TopCarrier[]>('/api/v1/dashboard/top-carriers');
}
/**
* Export all dashboard APIs
*/
export const dashboardApi = {
getKPIs,
getBookingsChart,
getTopTradeLanes,
getAlerts,
getCsvBookingKPIs,
getTopCarriers,
};