Files
Holzleitner-Lieferservice-App/lib/feature/delivery/bloc/phase_event.dart
Dennis Nemec 456fb59668 Phasenbasierte Lieferübersicht + Beladen-Flow, plus Migrationsplan für Rust-Backend
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)
2026-05-14 22:27:56 +02:00

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,
});
}