feat: add issue kanban/attachments/deadlines, dashboard widget DnD, and checklisten system
This commit is contained in:
162
frontend/src/types/checklist.types.ts
Normal file
162
frontend/src/types/checklist.types.ts
Normal file
@@ -0,0 +1,162 @@
|
||||
export interface FahrzeugTyp {
|
||||
id: number;
|
||||
name: string;
|
||||
beschreibung?: string;
|
||||
icon?: string;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface ChecklistVorlageItem {
|
||||
id: number;
|
||||
vorlage_id: number;
|
||||
bezeichnung: string;
|
||||
beschreibung?: string;
|
||||
pflicht: boolean;
|
||||
sort_order: number;
|
||||
}
|
||||
|
||||
export interface ChecklistVorlage {
|
||||
id: number;
|
||||
name: string;
|
||||
fahrzeug_typ_id?: number;
|
||||
fahrzeug_typ?: FahrzeugTyp;
|
||||
intervall?: 'weekly' | 'monthly' | 'yearly' | 'custom';
|
||||
intervall_tage?: number;
|
||||
beschreibung?: string;
|
||||
aktiv: boolean;
|
||||
items?: ChecklistVorlageItem[];
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface FahrzeugChecklistItem {
|
||||
id: number;
|
||||
fahrzeug_id: string;
|
||||
bezeichnung: string;
|
||||
beschreibung?: string;
|
||||
pflicht: boolean;
|
||||
sort_order: number;
|
||||
aktiv: boolean;
|
||||
}
|
||||
|
||||
export interface ChecklistAusfuehrungItem {
|
||||
id: number;
|
||||
ausfuehrung_id: string;
|
||||
vorlage_item_id?: number;
|
||||
fahrzeug_item_id?: number;
|
||||
bezeichnung: string;
|
||||
ergebnis?: 'ok' | 'nok' | 'na';
|
||||
kommentar?: string;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface ChecklistAusfuehrung {
|
||||
id: string;
|
||||
fahrzeug_id: string;
|
||||
fahrzeug_name?: string;
|
||||
vorlage_id?: number;
|
||||
vorlage_name?: string;
|
||||
status: 'offen' | 'abgeschlossen' | 'unvollstaendig' | 'freigegeben';
|
||||
ausgefuehrt_von?: string;
|
||||
ausgefuehrt_von_name?: string;
|
||||
ausgefuehrt_am?: string;
|
||||
freigegeben_von?: string;
|
||||
freigegeben_von_name?: string;
|
||||
freigegeben_am?: string;
|
||||
notizen?: string;
|
||||
items?: ChecklistAusfuehrungItem[];
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface ChecklistFaelligkeit {
|
||||
fahrzeug_id: string;
|
||||
fahrzeug_name: string;
|
||||
vorlage_id: number;
|
||||
vorlage_name: string;
|
||||
naechste_faellig_am: string;
|
||||
letzte_ausfuehrung_id?: string;
|
||||
}
|
||||
|
||||
export type ChecklistAusfuehrungStatus = ChecklistAusfuehrung['status'];
|
||||
|
||||
export const CHECKLIST_STATUS_LABELS: Record<ChecklistAusfuehrungStatus, string> = {
|
||||
offen: 'Offen',
|
||||
abgeschlossen: 'Abgeschlossen',
|
||||
unvollstaendig: 'Unvollst\u00e4ndig',
|
||||
freigegeben: 'Freigegeben',
|
||||
};
|
||||
|
||||
export const CHECKLIST_STATUS_COLORS: Record<ChecklistAusfuehrungStatus, 'default' | 'warning' | 'success' | 'info'> = {
|
||||
offen: 'default',
|
||||
abgeschlossen: 'info',
|
||||
unvollstaendig: 'warning',
|
||||
freigegeben: 'success',
|
||||
};
|
||||
|
||||
export interface ChecklistVorlageFilter {
|
||||
fahrzeug_typ_id?: number;
|
||||
aktiv?: boolean;
|
||||
}
|
||||
|
||||
export interface ChecklistAusfuehrungFilter {
|
||||
fahrzeug_id?: string;
|
||||
vorlage_id?: number;
|
||||
status?: ChecklistAusfuehrungStatus[];
|
||||
}
|
||||
|
||||
export interface CreateVorlagePayload {
|
||||
name: string;
|
||||
fahrzeug_typ_id?: number;
|
||||
intervall?: 'weekly' | 'monthly' | 'yearly' | 'custom';
|
||||
intervall_tage?: number;
|
||||
beschreibung?: string;
|
||||
aktiv?: boolean;
|
||||
}
|
||||
|
||||
export interface UpdateVorlagePayload {
|
||||
name?: string;
|
||||
fahrzeug_typ_id?: number | null;
|
||||
intervall?: 'weekly' | 'monthly' | 'yearly' | 'custom' | null;
|
||||
intervall_tage?: number | null;
|
||||
beschreibung?: string | null;
|
||||
aktiv?: boolean;
|
||||
}
|
||||
|
||||
export interface CreateVorlageItemPayload {
|
||||
bezeichnung: string;
|
||||
beschreibung?: string;
|
||||
pflicht?: boolean;
|
||||
sort_order?: number;
|
||||
}
|
||||
|
||||
export interface UpdateVorlageItemPayload {
|
||||
bezeichnung?: string;
|
||||
beschreibung?: string | null;
|
||||
pflicht?: boolean;
|
||||
sort_order?: number;
|
||||
}
|
||||
|
||||
export interface CreateFahrzeugItemPayload {
|
||||
bezeichnung: string;
|
||||
beschreibung?: string;
|
||||
pflicht?: boolean;
|
||||
sort_order?: number;
|
||||
}
|
||||
|
||||
export interface UpdateFahrzeugItemPayload {
|
||||
bezeichnung?: string;
|
||||
beschreibung?: string | null;
|
||||
pflicht?: boolean;
|
||||
sort_order?: number;
|
||||
aktiv?: boolean;
|
||||
}
|
||||
|
||||
export interface SubmitAusfuehrungPayload {
|
||||
items: { itemId: number; ergebnis: 'ok' | 'nok' | 'na'; kommentar?: string }[];
|
||||
notizen?: string;
|
||||
}
|
||||
|
||||
export interface ChecklistWidgetSummary {
|
||||
overdue: ChecklistFaelligkeit[];
|
||||
dueSoon: ChecklistFaelligkeit[];
|
||||
}
|
||||
@@ -25,6 +25,7 @@ export interface Issue {
|
||||
erstellt_von_name?: string;
|
||||
zugewiesen_an: string | null;
|
||||
zugewiesen_an_name?: string | null;
|
||||
faellig_am: string | null;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
@@ -53,6 +54,7 @@ export interface CreateIssuePayload {
|
||||
beschreibung?: string;
|
||||
typ_id?: number;
|
||||
prioritaet?: string;
|
||||
faellig_am?: string | null;
|
||||
}
|
||||
|
||||
export interface UpdateIssuePayload {
|
||||
@@ -63,6 +65,7 @@ export interface UpdateIssuePayload {
|
||||
status?: string;
|
||||
zugewiesen_an?: string | null;
|
||||
kommentar?: string;
|
||||
faellig_am?: string | null;
|
||||
}
|
||||
|
||||
export interface IssueFilters {
|
||||
@@ -108,3 +111,14 @@ export interface IssueStatusCount {
|
||||
}
|
||||
|
||||
export type IssueWidgetSummary = IssueStatusCount[];
|
||||
|
||||
export interface IssueDatei {
|
||||
id: string;
|
||||
issue_id: number;
|
||||
dateiname: string;
|
||||
dateipfad: string;
|
||||
dateityp: string | null;
|
||||
dateigroesse: number | null;
|
||||
hochgeladen_von: string | null;
|
||||
hochgeladen_am: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user