UI-Restructuring: - TabBar in scan_page durch dedizierte Phasen ersetzt: Sortieren / Beladen / Ausliefern - PhaseBloc + PhaseService leiten Phase aus Tour-/Item-States ab - DeliverySelectionPage (ab 2 Autos) und DeliverySortPage als eigene Flows - LoadingOverviewPage / LoadingCustomerPage für die Beladephase - PhaseStepper-Widget im Home für Phasen-Anzeige - Lager-Differenzierung (Standardlager 0 vs. Außenlager) via WarehouseBadge Process-Stubs: - ProcessRepository für Hold/Cancel/Sort/Assign-Flows (stub, bereit für Backend-Anbindung) Doku: - docs/BACKEND_MIGRATION.md: Phasenplan für Umstellung auf das neue Rust-Backend (OpenAPI-Generator, Keycloak OIDC, Clean-Arch-Layering)
42 lines
1.4 KiB
Dart
42 lines
1.4 KiB
Dart
import 'package:hl_lieferservice/feature/delivery/model/delivery_phase.dart';
|
|
|
|
abstract class PhaseEvent {}
|
|
|
|
/// Lädt (falls noch nicht geschehen) die persistierte Phase für ein Fahrzeug
|
|
/// und emittiert sie. Falls nichts persistiert ist, ermittelt der
|
|
/// [PhaseBloc] die Eintrittsphase abhängig von der Anzahl der Team-
|
|
/// Fahrzeuge:
|
|
/// * 1 Auto → [DeliveryPhase.sortieren]
|
|
/// * ≥2 Autos → [DeliveryPhase.auswaehlen]
|
|
class PhaseLoadForCar extends PhaseEvent {
|
|
final String carId;
|
|
|
|
PhaseLoadForCar({required this.carId});
|
|
}
|
|
|
|
/// Explizites Setzen einer Phase für ein Fahrzeug — wird sowohl beim
|
|
/// Sprung über den Stepper als auch nach automatischem Phasen-Wechsel
|
|
/// (z. B. Sortierung bestätigt → beladen) aufgerufen. Persistiert.
|
|
class PhaseSet extends PhaseEvent {
|
|
final String carId;
|
|
final DeliveryPhase phase;
|
|
|
|
PhaseSet({required this.carId, required this.phase});
|
|
}
|
|
|
|
/// Setzt die Phase für ein Fahrzeug, ohne sie zu persistieren. Wird intern
|
|
/// nach einem Load verwendet, da die Quelle bereits SharedPreferences ist.
|
|
/// [maxPhase] ist die höchste am Tag erreichte Phase aus der Persistenz —
|
|
/// fällt sie weg, wird die aktuelle [phase] als Max angenommen.
|
|
class PhaseLoaded extends PhaseEvent {
|
|
final String carId;
|
|
final DeliveryPhase phase;
|
|
final DeliveryPhase maxPhase;
|
|
|
|
PhaseLoaded({
|
|
required this.carId,
|
|
required this.phase,
|
|
required this.maxPhase,
|
|
});
|
|
}
|