This commit is contained in:
Matthias Hochmeister
2026-03-13 19:23:39 +01:00
parent 02d9d808b2
commit bc6d09200a
15 changed files with 610 additions and 74 deletions

View File

@@ -1,4 +1,4 @@
export type BuchungsArt = 'intern' | 'extern' | 'wartung' | 'reservierung' | 'sonstiges';
export type BuchungsArt = 'intern' | 'extern' | 'wartung' | 'reservierung' | 'sonstiges' | 'lehrgang';
export const BUCHUNGS_ART_LABELS: Record<BuchungsArt, string> = {
intern: 'Intern',
@@ -6,6 +6,7 @@ export const BUCHUNGS_ART_LABELS: Record<BuchungsArt, string> = {
wartung: 'Wartung/Service',
reservierung: 'Reservierung',
sonstiges: 'Sonstiges',
lehrgang: 'Lehrgang',
};
export const BUCHUNGS_ART_COLORS: Record<BuchungsArt, string> = {
@@ -14,6 +15,7 @@ export const BUCHUNGS_ART_COLORS: Record<BuchungsArt, string> = {
wartung: '#616161',
reservierung: '#7b1fa2',
sonstiges: '#00695c',
lehrgang: '#0288d1',
};
export interface FahrzeugBuchungListItem {
@@ -45,6 +47,8 @@ export interface Fahrzeug {
kurzname: string | null;
amtliches_kennzeichen: string | null;
status: string;
ausser_dienst_von: string | null;
ausser_dienst_bis: string | null;
}
export interface CreateBuchungInput {

View File

@@ -6,14 +6,12 @@ export enum FahrzeugStatus {
Einsatzbereit = 'einsatzbereit',
AusserDienstWartung = 'ausser_dienst_wartung',
AusserDienstSchaden = 'ausser_dienst_schaden',
InLehrgang = 'in_lehrgang',
}
export const FahrzeugStatusLabel: Record<FahrzeugStatus, string> = {
[FahrzeugStatus.Einsatzbereit]: 'Einsatzbereit',
[FahrzeugStatus.AusserDienstWartung]: 'Außer Dienst (Wartung)',
[FahrzeugStatus.AusserDienstSchaden]: 'Außer Dienst (Schaden)',
[FahrzeugStatus.InLehrgang]: 'In Lehrgang',
};
export type WartungslogArt =
@@ -23,6 +21,12 @@ export type WartungslogArt =
// ── API Response Shapes ───────────────────────────────────────────────────────
export interface AktiverLehrgang {
titel: string;
beginn: string;
ende: string;
}
export interface FahrzeugListItem {
id: string;
bezeichnung: string;
@@ -33,12 +37,15 @@ export interface FahrzeugListItem {
besatzung_soll: string | null;
status: FahrzeugStatus;
status_bemerkung: string | null;
ausser_dienst_von: string | null;
ausser_dienst_bis: string | null;
bild_url: string | null;
paragraph57a_faellig_am: string | null;
paragraph57a_tage_bis_faelligkeit: number | null;
naechste_wartung_am: string | null;
wartung_tage_bis_faelligkeit: number | null;
naechste_pruefung_tage: number | null;
aktiver_lehrgang: AktiverLehrgang | null;
}
export interface FahrzeugWartungslog {
@@ -67,6 +74,8 @@ export interface FahrzeugDetail {
besatzung_soll: string | null;
status: FahrzeugStatus;
status_bemerkung: string | null;
ausser_dienst_von: string | null;
ausser_dienst_bis: string | null;
standort: string;
bild_url: string | null;
created_at: string;
@@ -76,6 +85,7 @@ export interface FahrzeugDetail {
naechste_wartung_am: string | null;
wartung_tage_bis_faelligkeit: number | null;
naechste_pruefung_tage: number | null;
aktiver_lehrgang: AktiverLehrgang | null;
wartungslog: FahrzeugWartungslog[];
}
@@ -123,8 +133,22 @@ export type UpdateFahrzeugPayload = {
};
export interface UpdateStatusPayload {
status: FahrzeugStatus;
bemerkung?: string;
status: FahrzeugStatus;
bemerkung?: string;
ausserDienstVon?: string; // ISO datetime, required when status is ausser_dienst_*
ausserDienstBis?: string; // ISO datetime, required when status is ausser_dienst_*
}
export interface OverlappingBooking {
id: string;
titel: string;
beginn: string;
ende: string;
gebucht_von_name: string;
}
export interface StatusUpdateResponse {
overlappingBookings: OverlappingBooking[];
}
export interface CreateWartungslogPayload {