agmission/Development/client/src/app/domain/models/pilot-dashboard.model.ts

96 lines
2.1 KiB
TypeScript

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;
}