CI / backend-tests (push) Successful in 54s
React/Vite-PWA (frontend/):
- Login, Objektliste (Prompt 11 Screen 1), Kontroll-Screen (Screens 2-6 kompakt:
Start/Objekt-Sperre-Übernahme, Positionserfassung, Abschluss/Abbruch)
- Offline-Härtung (Prompt 17): IndexedDB-Queue (src/offline/queue.ts) puffert
Positions-PUTs lokal, automatische Übertragung bei Reconnect + periodischem
Sync-Versuch, Statusanzeige je Position (nicht gespeichert/wird übertragen/
gespeichert/Fehler), Abschluss-Button bleibt gesperrt bis alles gespeichert
- Nutzt aus, dass PUT /kontrollen/{id}/positionen/{material_id} backend-seitig
idempotent ist (Upsert) - Queue kann beliebig oft retryen ohne Duplikate
- Service Worker via vite-plugin-pwa für App-Shell-Caching (Start im Feld ohne
Cold-Load); PWA-Icons als TODO vermerkt (noch keine echten Bilddateien)
- Client-Fehler (4xx) werden nicht automatisch wiederholt, nur Netzwerkfehler
Flutter-Android-Grundgerüst (flutter_app/), auf Nutzerwunsch parallel begonnen:
- Gleiche API als zweiter Client (Prompt 19 API-first), Login/Objektliste/
Kontroll-Screen als Dart-Äquivalent zur PWA
- Bewusst OHNE Offline-Queue in dieser ersten Fassung (siehe flutter_app/README.md)
- Plattform-Ordner (android/, ios/) nicht von Hand erzeugt - müssen auf dem
Zielsystem per `flutter create .` nachgezogen werden, sonst zu fehleranfällig
ohne Testlauf
Offen: Playwright-E2E (Testphase 4), Praktiker-Session, PWA-Icons, Flutter-
Offline-Queue - brauchen laufendes Deployment bzw. sind kein reiner Code-Schritt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L85hmKbvX7Cqkq47KnQhFt
41 lines
1.8 KiB
Markdown
41 lines
1.8 KiB
Markdown
# MABEA Android-App (Flutter) – erstes Grundgerüst
|
||
|
||
Zweiter Client derselben API (Prompt 19 API-first-Prinzip) neben der React-PWA
|
||
(`frontend/`). Deckt Login, Objektliste, Kontroll-Screen (Start/Sperre-Übernahme/
|
||
Positionen/Abschluss/Abbruch) ab.
|
||
|
||
## Wichtig: Plattform-Ordner fehlen noch
|
||
|
||
Dieses Verzeichnis enthält nur `lib/`, `pubspec.yaml`, `analysis_options.yaml` -
|
||
die von `flutter create` generierten Plattform-Ordner (`android/`, `ios/`, Gradle-
|
||
Konfiguration etc.) wurden bewusst NICHT von Hand nachgebaut, da das ohne
|
||
Testlauf zu fehleranfällig wäre. Erstinbetriebnahme auf dem Zielsystem (mit
|
||
Flutter-SDK installiert):
|
||
|
||
```bash
|
||
cd flutter_app
|
||
flutter create . --platforms android --org de.perlbach24 --project-name mabea_app
|
||
# überschreibt pubspec.yaml NICHT automatisch mit *nix cp -n, ggf. lib/-Inhalt
|
||
# und pubspec.yaml-Dependencies danach gegen diese Version abgleichen
|
||
flutter pub get
|
||
flutter build apk
|
||
```
|
||
|
||
## API-Adresse
|
||
|
||
`lib/main.dart`: `kApiBaseUrl` ist aktuell fest auf den Deployment-Server
|
||
(`192.168.1.238`) gesetzt. Für Produktivbetrieb auf `--dart-define` umstellen
|
||
oder zumindest vor jedem Build prüfen/anpassen.
|
||
|
||
## Bewusst noch nicht umgesetzt (Unterschied zur React-PWA)
|
||
|
||
- **Keine Offline-Queue**: anders als die PWA (`frontend/src/offline/queue.ts`,
|
||
IndexedDB) sendet diese erste Fassung Positionen direkt; bei Netzwerkfehler
|
||
erscheint nur eine "erneut versuchen"-Meldung, keine automatische
|
||
Zwischenspeicherung/Sync bei Reconnect. Nachziehen, sobald die App über das
|
||
Grundgerüst hinauswächst - gleiches Muster wie in der PWA übertragbar
|
||
(z. B. `sqflite` oder `hive` statt IndexedDB).
|
||
- Kein QR-/Barcode-Kamera-Scan (Karte 10, Roadmap).
|
||
- Keine Tests (Flutter-Widget-/Integrationstests) - Sprintplan sieht Testphase 4
|
||
primär für die PWA vor (Playwright); Android-Testabdeckung ist noch offen.
|