// ============================================================================= // Equipment Management — Domain Model // ============================================================================= // ── Enums ───────────────────────────────────────────────────────────────────── export enum AusruestungStatus { Einsatzbereit = 'einsatzbereit', Beschaedigt = 'beschaedigt', InWartung = 'in_wartung', AusserDienst = 'ausser_dienst', } export const AusruestungStatusLabel: Record = { [AusruestungStatus.Einsatzbereit]: 'Einsatzbereit', [AusruestungStatus.Beschaedigt]: 'Beschädigt', [AusruestungStatus.InWartung]: 'In Wartung', [AusruestungStatus.AusserDienst]: 'Außer Dienst', }; export type AusruestungWartungslogArt = 'Prüfung' | 'Reparatur' | 'Sonstiges'; // ── Lookup Entity ───────────────────────────────────────────────────────────── export interface AusruestungKategorie { id: string; name: string; kurzname: string; sortierung: number; } // ── Core Entity ─────────────────────────────────────────────────────────────── export interface Ausruestung { id: string; bezeichnung: string; kategorie_id: string; seriennummer: string | null; inventarnummer: string | null; hersteller: string | null; baujahr: number | null; status: AusruestungStatus; status_bemerkung: string | null; ist_wichtig: boolean; fahrzeug_id: string | null; standort: string; pruef_intervall_monate: number | null; letzte_pruefung_am: Date | null; naechste_pruefung_am: Date | null; bemerkung: string | null; deleted_at: Date | null; created_at: Date; updated_at: Date; } // ── List Item (Grid / Card view) ────────────────────────────────────────────── export interface AusruestungListItem { id: string; bezeichnung: string; kategorie_id: string; seriennummer: string | null; inventarnummer: string | null; hersteller: string | null; baujahr: number | null; status: AusruestungStatus; status_bemerkung: string | null; ist_wichtig: boolean; fahrzeug_id: string | null; standort: string; pruef_intervall_monate: number | null; letzte_pruefung_am: Date | null; naechste_pruefung_am: Date | null; bemerkung: string | null; created_at: Date; updated_at: Date; kategorie_name: string; kategorie_kurzname: string; fahrzeug_bezeichnung: string | null; fahrzeug_kurzname: string | null; pruefung_tage_bis_faelligkeit: number | null; } // ── Detail View ─────────────────────────────────────────────────────────────── export interface AusruestungDetail extends AusruestungListItem { wartungslog: AusruestungWartungslog[]; } // ── Wartungslog Entity ──────────────────────────────────────────────────────── export interface AusruestungWartungslog { id: string; ausruestung_id: string; datum: Date; art: AusruestungWartungslogArt; beschreibung: string; ergebnis: string | null; kosten: number | null; pruefende_stelle: string | null; dokument_url: string | null; erfasst_von: string | null; created_at: Date; } // ── Dashboard KPI ───────────────────────────────────────────────────────────── export interface EquipmentStats { total: number; einsatzbereit: number; beschaedigt: number; inWartung: number; ausserDienst: number; inspectionsDue: number; inspectionsOverdue: number; wichtigNichtBereit: number; } // ── Vehicle Equipment Warning ───────────────────────────────────────────────── export interface VehicleEquipmentWarning { fahrzeug_id: string; ausruestung_id: string; bezeichnung: string; status: AusruestungStatus; kategorie_name: string; } // ── Create / Update DTOs ────────────────────────────────────────────────────── export interface CreateAusruestungData { bezeichnung: string; kategorie_id: string; seriennummer?: string; inventarnummer?: string; hersteller?: string; baujahr?: number; status?: AusruestungStatus; status_bemerkung?: string; ist_wichtig?: boolean; fahrzeug_id?: string; standort?: string; pruef_intervall_monate?: number; letzte_pruefung_am?: string; naechste_pruefung_am?: string; bemerkung?: string; } export interface UpdateAusruestungData { bezeichnung?: string; kategorie_id?: string; seriennummer?: string | null; inventarnummer?: string | null; hersteller?: string | null; baujahr?: number | null; status?: AusruestungStatus; status_bemerkung?: string | null; ist_wichtig?: boolean; fahrzeug_id?: string | null; standort?: string; pruef_intervall_monate?: number | null; letzte_pruefung_am?: string | null; naechste_pruefung_am?: string | null; bemerkung?: string | null; } export interface CreateAusruestungWartungslogData { datum: string; art: AusruestungWartungslogArt; beschreibung: string; ergebnis?: string; kosten?: number; pruefende_stelle?: string; dokument_url?: string; }