/// Aggregat-Wurzel eines Tour-Tages. /// /// Die `Tour` selbst ist minimal — sie hält nur Identität und Eckdaten; /// die fachlich interessanten Daten (Lieferungen + Stammdaten-Lookups) /// sitzen in `TourDetails`. Diese Trennung erlaubt es, Touren-Listen /// (z. B. `/me/tours/today`) zu rendern, ohne das gesamte Aggregat /// laden zu müssen. class Tour { const Tour({ required this.id, required this.accountId, required this.date, required this.syncedAt, }); final String id; final int accountId; final DateTime date; /// Zeitpunkt des letzten ERP-Sync. Wird in der Header-Zeile als /// „Stand: …"-Hinweis angezeigt — wenn das ungewöhnlich alt ist, sieht /// der Fahrer das. final DateTime syncedAt; Tour copyWith({ String? id, int? accountId, DateTime? date, DateTime? syncedAt, }) { return Tour( id: id ?? this.id, accountId: accountId ?? this.accountId, date: date ?? this.date, syncedAt: syncedAt ?? this.syncedAt, ); } } /// Tagestour-Übersicht, wie sie `/me/tours/today` liefert. Schlankes Objekt /// für die Initialphase (Tour-Auswahl), ohne das volle Aggregat zu /// transportieren. class TourSummary { const TourSummary({ required this.tourId, required this.tourDate, required this.deliveryCount, }); final String tourId; final DateTime tourDate; final int deliveryCount; }