# HHA Logistics - Flutter App

Diese Flutter-Anwendung liegt im Monorepo unter `app/`.

Das zugehoerige Spring Boot + Vaadin Backend liegt daneben unter `../backend/`.

Eine moderne, optisch ansprechende Flutter-App für die Hamburger Hochbahn (HHA) zur Verwaltung von Logistik-Prozessen.

## Features

### Kernfunktionen
- **Tour-Management**: Übersichtliche Darstellung aller Touren und Stationen
- **Barcode-Scanning**: Schnelles Erfassen von Objekten per Kamera
- **State-Management**: Automatische Zustandsübergänge für Objekte
- **Offline-Unterstützung**: Lokale Datenspeicherung mit Synchronisation
- **Echtzeit-Sync**: Automatische Aktualisierung der Daten

### Objekttypen
- **Geldkassetten** (MEK, BEK)
- **HP Patronen** (H1, H2, H3)
- **Fahrkartenrollen**
- **Safebags** (Wertsachenbehälter)
- **Container**

### Stationstypen
- Lager (Beladung/Rückgabe)
- Dienststellen
- Haltestellen
- Fahrscheinautomaten
- Versorgungsstellen
- Geldinstitute

## Technischer Stack

### Architektur
- **Clean Architecture**: Trennung von Domain, Data und Presentation Layer
- **BLoC Pattern**: State Management mit flutter_bloc
- **Repository Pattern**: Abstraktion der Datenquellen

### UI/UX
- **Material Design 3**: Modernes, konsistentes Design
- **Flutter Animate**: Flüssige Animationen
- **Phosphor Icons**: Hochwertige Icons
- **Google Fonts**: Inter als Hausschrift

### Technologien
- **Mobile Scanner**: Barcode-Scanning
- **SQFlite**: Lokale Datenbank
- **Dio**: HTTP-Client für API-Kommunikation
- **Shared Preferences**: Lokale Einstellungen

## Projektstruktur

```
app/
├── lib/
│   ├── core/
│   ├── data/
│   ├── domain/
│   └── presentation/
├── android/
├── build/
├── pubspec.yaml
└── run_app.sh
```

## Installation

### Voraussetzungen
- Flutter SDK >= 3.0.0
- Dart SDK >= 3.0.0
- Android Studio / Xcode

### Setup

1. Repository klonen:
```bash
git clone <repository-url>
cd hha_logistics
cd app
```

2. Dependencies installieren:
```bash
flutter pub get
```

3. Code-Generierung ausführen:
```bash
flutter pub run build_runner build
```

4. App starten:
```bash
flutter run
```

## Konfiguration

### API-Endpunkt
Die API-URL wird in `lib/core/constants/app_constants.dart` konfiguriert:
```dart
static const String baseUrl = 'https://hha-app1.assecutor.de/hha';
```

### Berechtigungen

#### Android (android/app/src/main/AndroidManifest.xml)
```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
```

#### iOS (ios/Runner/Info.plist)
```xml
<key>NSCameraUsageDescription</key>
<string>Kamera wird für Barcode-Scanning benötigt</string>
```

## Fachlicher Workflow

### 1. Login & Datensynchronisation
- Anmeldung mit Geräte-IMEI
- Automatischer Datenabgleich mit Server
- Lokale Speicherung für Offline-Nutzung

### 2. Tour-Übersicht
- Liste aller Stationen der aktuellen Tour
- Fortschrittsanzeige
- Unterscheidung zwischen offenen und erledigten Stationen

### 3. Station-Arbeit
- Barcode-Scanning zur Identifikation
- Automatische State-Machine für Zustandsübergänge
- Manuelle Barcode-Eingabe möglich

### 4. State-Machine
Die App implementiert folgende Zustandsübergänge:
- `unknown` → `to_delivery` → `delivery` → `station` → `in_fa` → `ret_gi` → `fin_gi`
- Fehlerfälle: `ret_fail` → `ret_fail_fzg` → `ret_fail_stk`
- Dienststelle: `ret_ds` → `ret_ds_fzg` → `fin_ds`

### 5. Bestandsführung
- Echtzeit-Anzeige aller Objekte
- Filterung nach Status und Typ
- Quittungsverwaltung für Geldkassetten

## Design-System

### Farben
- **Primary**: HHA Rot (#E3001B)
- **Success**: Grün (#4CAF50)
- **Warning**: Orange (#FF9800)
- **Error**: Rot (#E3001B)

### State Colors
- `delivery`: Grau (#B3B3B3)
- `station`: Gelb (#FFDD00)
- `in_fa`: Grün (#9CDA7A)
- `ret_fail`: Rot (#FF9081)
- `ret_ds`: Hellblau (#AFE0ED)
- `fin_ds`: Blau (#29B7FB)

## Entwicklung

### Code-Generierung
Nach Änderungen an Modellen:
```bash
flutter pub run build_runner build --delete-conflicting-outputs
```

### Tests ausführen
```bash
flutter test
```

### Release Build
```bash
# Android
flutter build apk --release
flutter build appbundle --release

# iOS
flutter build ios --release
```

## Lizenz

Copyright © 2024 Hamburger Hochbahn AG

## Support

Bei Fragen oder Problemen wenden Sie sich an:
- IT-Support: support@hha.de
- Entwicklung: dev@hha.de
