Auf T10-Pro-Tablet (und vermutlich ähnlicher Budget-Hardware) lieferte CameraX bei Auto-Auflösung nur "MobileScannerErrorCode.genericError" ohne brauchbare Details – die Kamera-HAL kommt mit der von CameraX gewählten Default-Auflösung nicht klar. Fix: MobileScannerController jetzt mit fester cameraResolution (1280x720) + formats: [qrCode] (weniger Codec-Last als Auto-Erkennung aller Formate). Neuer "Mit niedrigerer Auflösung erneut versuchen"-Button im Fehler-Screen (fällt auf 640x480 zurück) als zusätzlicher Recovery-Pfad, falls 720p immer noch scheitert. v0.1.8+9. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
TimeMaster Kiosk (Flutter)
Stempeluhr-App für Android-Tablets, gedacht für den Betrieb hinter WireGuard-
VPN (feste Geräte-IP). Kein Ed25519-Request-Signing wie beim Browser-PC-
Terminal – Geräte-Auth läuft über ein einfaches Bearer-Token, siehe
backend/app/core/kiosk_security.py::_verify_bearer_device im Haupt-Repo.
Vollständiger Architektur-Plan: /home/sysops/.claude/plans/staged-marinating-dove.md.
Ersteinrichtung
- Auf dem Server:
python cli.py kiosk add --company "Acme GmbH" --name "Eingang" --auth-mode bearer [--ip-whitelist 10.8.0.0/24] - CLI gibt Token einmalig aus – in der App unter „Ersteinrichtung" zusammen mit der Server-URL eintragen.
- Gerät erscheint in
KioskDevicesPageals „pending" – Admin genehmigt.
Login-Modi
- PIN: Personalnummer + PIN (
POST /kiosk/auth/pin) - NFC: Kartenscan (Android-eigenes NFC, 13,56 MHz/ISO14443) + Pflicht-PIN
als Zweitfaktor (
POST /kiosk/auth/nfc) - Liste: Mitarbeiter aus Liste tippen (
POST /kiosk/auth/list)
Wichtig – Hardware-Inkompatibilität: Die PC-Terminals nutzen einen
125-kHz-EM4100-Leser (HID-Keyboard-Wedge, siehe project_kiosk_hardening-
Memory). Android-NFC liest nur 13,56-MHz-Karten (ISO14443/Mifare/NTAG).
Bestehende Mitarbeiterkarten für die PC-Terminals funktionieren NICHT am
Tablet und umgekehrt – für Tablet-NFC-Login werden separate 13,56-MHz-
Karten/Tags benötigt, die zusätzlich über POST /users/{id}/kiosk-nfc
hinterlegt werden müssen (gleiches Feld, zwei unterschiedliche physische
Kartentypen).
Build
Kein lokales Flutter-SDK nötig – Build läuft auf root@192.168.1.236
(gleiche Umgebung wie timemaster-mobile, siehe dortige Memory-Notiz
project_android_app.md für Setup-Details: flutteruser, /opt/flutter,
/opt/android-sdk).
# Auf 236, als flutteruser:
cd /opt/timemaster-kiosk
flutter build apk --release --target-platform android-arm64
Umfang v1
Nur Login + Stempeln + Heartbeat. Kein Offline-Modus, keine NTAG424- Kryptografie, kein Android-Lock-Task/MDM (App läuft im normalen Vollbild, kein Geräte-Pinning).