import { JobStatus } from '@app/shared/global'; export interface PilotKpiResponse { assignedJobs: number; assignedHectares: number; sprayedToday: number; flightHoursToday: number; operations: PilotOperationsResponse; historical: { jobs: PilotHistoricalMetric; hectares: PilotHistoricalMetric; flightHours: PilotHistoricalMetric; }; } export interface PilotHistoricalMetric { year: number; month: number; week: number; day: number; } export interface PilotSummaryResponse { today: PilotSummaryMetrics; yesterday: PilotSummaryMetrics; deltas: PilotSummaryDeltas; } export interface PilotSummaryMetrics { hectares: number; flightHours: number; haPerHour: number; avgSpeedKmh: number; sprayVolumeLiters: number; } export interface PilotSummaryDeltas { hectaresPct: number; flightHoursPct: number; haPerHourPct: number; avgSpeedPct: number; sprayVolumePct: number; } export interface PilotOperationsResponse { distanceKm: number; sprayVolumeLiters: number; } export interface PilotActiveJobsResponse { jobs: PilotActiveJob[]; } export interface PilotActiveJob { jobId: number; name: string; clientName: string; aircraftReg: string; status: JobStatus; displayStatus: string; haTotal: number; haSprayed: number; progressPct: number; volumeAppliedLiters: number; } /** Trend chart response for the default week view or a user-selected date range. */ export interface PilotTrendResponse { labels: string[]; hoursFlown: number[]; hectaresPerDay: number[]; } /** Performance response aggregated from the pilot's recent application files. */ export interface PilotPerformanceResponse { avgXtErrorMeters: number; xtThreshold: PilotXtThreshold; avgSprayAltitudeMeters: number | null; altitudeSource: 'sprayHeight' | 'radarAlt' | 'gpsAlt' | 'none'; altThreshold: PilotAltitudeThreshold; sampleSize: number; hasAltitudeData: boolean; } export interface PilotXtThreshold { good: number; monitor: number; } export interface PilotAltitudeThreshold { target: number; goodDelta: number; monitorDelta: number; }