Commit Graph
272 Commits
Author SHA1 Message Date
patrickandClaude Sonnet 5 e39d704de8 docs(flutter): Server-Adresse einstellbar (mabea-scan v0.9.0, mabea-doku v0.4.0)
CI / backend-tests (push) Successful in 3m17s
CI / frontend-build (push) Successful in 21s
Zahnrad-Icon auf dem Login-Screen beider Apps öffnet Dialog zum
Ändern der Server-URL (flutter_secure_storage, Zurücksetzen auf
Standard), greift sofort ohne Neubau der App.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 22:46:28 +02:00
patrickandClaude Sonnet 5 3a19c1f273 docs(flutter): mabea-doku v0.3.0 - INTERNET-Permission-Fix
CI / backend-tests (push) Successful in 3m18s
CI / frontend-build (push) Successful in 23s
android.permission.INTERNET fehlte in AndroidManifest.xml (Standard-
flutter-create-Template setzt sie nicht automatisch) - App konnte
dadurch gar keine Netzwerkverbindung aufbauen ("keine Verbindung zum
Server"), unabhängig vom Backend-Status. mabea-scan hatte die
Permission bereits korrekt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 22:30:37 +02:00
patrickandClaude Sonnet 5 97498abe57 fix(tests): CI-Fix - verstümmelte Assertions in test_akte.py behoben
CI / backend-tests (push) Successful in 3m29s
CI / frontend-build (push) Successful in 23s
Vorheriger Edit hatte Zeilen der ursprünglichen
test_akte_buendelt_teilbereiche-Assertions versehentlich in die neue
Testfunktion verschoben (NameError: 'body' nicht definiert). Zeilen
zurück an den richtigen Test gehängt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 21:54:18 +02:00
patrickandClaude Sonnet 5 ce99aa6fbb feat: mabea-doku Zwei-Apps-Support + Ressourcenbuchung Opt-in
CI / backend-tests (push) Failing after 3m31s
CI / frontend-build (push) Successful in 23s
Backend/Frontend-Seite: /app-download/info und /app-download/qr.png
bekommen app-Query-Parameter (scan/doku), Download-Seite /app?app=...
mit Umschalter für die beiden eigenständigen Flutter-Apps.

ASSET-012 Nutzer-Feedback: Ressourcenbuchung war in jeder Akte
sichtbar, unabhängig vom Objekttyp - jetzt Opt-in je Objekttyp
(Objekttyp.ressourcenbuchung_aktiv, Migration 0054, Default false),
Admin-Checkbox in ObjekttypSection.tsx, AktePage.tsx zeigt das Panel
nur noch wenn aktiviert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 21:49:34 +02:00
patrickandClaude Sonnet 5 3d560738de docs(flutter): FLUT-001 v0.7.0 - Akte-Details, Taschenlampe, Geräte-Code
CI / backend-tests (push) Successful in 3m33s
CI / frontend-build (push) Successful in 23s
Objekt-Scan zeigt jetzt Einsatzbereitschafts-Ampel + Gründe, letzte
Kontrolle, offene Mängel (via GET /akte/objekt/{id}, Ladefehler nicht
fatal). Taschenlampe-Toggle im Scan-Screen. Geräte-Exemplar-Code als
Fallback, wenn kein Objekt-Code passt (Geräte-Etiketten waren bisher
gar nicht scanbar).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 21:20:47 +02:00
patrickandClaude Sonnet 5 6f3589f4e0 docs(backlog): FOUND-ID-Kollision behoben, FOUND-008 won't-do
CI / backend-tests (push) Successful in 3m16s
CI / frontend-build (push) Successful in 21s
Zwei Kacheln waren fälschlich unter denselben IDs geführt wie bereits
vergebene aus der ursprünglichen Master-Prompt-Liste: CSV/XLS-Import
FOUND-007 -> FOUND-014, Fristen-Dienst FOUND-008 -> FOUND-015. Alle
Code-Kommentare/Kachel-Querverweise mitgezogen.

FOUND-008 (Docker/Compose-Setup) als won't-do geschlossen -
widerspricht der bare-metal-Policy für MABEA selbst (CLAUDE.md).
GlitchTip (FOUND-013) nutzt Docker als externe Fremdsoftware auf
einem separaten, optionalen Host - kein Widerspruch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 21:09:30 +02:00
patrickandClaude Sonnet 5 f93798e3f3 fix(qr): reportlab renderPM-Backend fehlte auf CI-Runner
CI / backend-tests (push) Successful in 3m17s
CI / frontend-build (push) Successful in 20s
Erster echter Test für services/qr_png.py (bisher nie getestet, auch
nicht in ASSET-010) deckte auf: reportlab.graphics.renderPM braucht
einen nativen Rendering-Backend, der auf Python 3.13 nicht lauffähig
installiert war. Hätte auch die ASSET-010-QR-Anzeige im Ausgabe-
Dialog treffen können, war nur nie bemerkt worden. Auf qrcode[pil]
(reiner Python-Encoder, kein natives Backend nötig) umgestellt.
label.py (PDF-Vektor-Labels) ist unverändert, nicht betroffen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 20:57:56 +02:00
patrickandClaude Sonnet 5 777bf5eaa5 feat(flutter): öffentliche Download-Seite für Scan-App-Feldtest
CI / backend-tests (push) Failing after 3m17s
CI / frontend-build (push) Successful in 21s
/app zeigt QR-Code + Download-Button + Installationsanleitung ohne
Login (Henne-Ei: die App ist der Login-Client). Backend liefert
GET /app-download/info und /app-download/qr.png (bewusst ohne Auth),
liest version.json vom lokalen downloads_dir, QR über bestehenden
services/qr_png.py. Admin-Hinweis verlinkt jetzt auf /app statt
Version/URL zu duplizieren.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 20:51:52 +02:00
patrickandClaude Sonnet 5 973bf35514 fix(admin): Scan-App-Download-Link liest Version aus version.json
CI / backend-tests (push) Successful in 3m16s
CI / frontend-build (push) Successful in 22s
Portal-Link war fest auf v0.5.apk verlinkt, dadurch nach dem
v0.6.0-Build stale. Liest jetzt zur Laufzeit /downloads/version.json
(dieselbe Quelle wie der In-App-Update-Check) statt einer fest
hinterlegten Versionsnummer im Link - bleibt bei jedem künftigen
APK-Build automatisch aktuell.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 20:39:32 +02:00
patrickandClaude Sonnet 5 d53c9a57d1 docs(flutter): FLUT-001 v0.6.0 Zugangsdaten-Persistenz + Server-Umzug
CI / backend-tests (push) Successful in 3m17s
CI / frontend-build (push) Successful in 20s
Korrigiert vorherige fehlerhafte Notiz (flutter_app/ im Repo ist ein
getrenntes, ungenutztes Scaffold - nicht der echte Prototyp). Echter
FLUT-001-Code lebt weiterhin nur auf dem Build-Server
(mabea_scan_prototyp), dokumentiert v0.6.0 (flutter_secure_storage
für Token+optionale Zugangsdaten, Auto-Relogin bei 401, Logout) und
den Umzug von /opt/flutter-projects nach /mnt/projekte/flutter
(Symlink) auf 192.168.1.236.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 20:36:02 +02:00
patrickandClaude Sonnet 5 11e2e5e399 feat(flutter): sicherer Zugangsdaten-Speicher + Auto-Relogin
CI / backend-tests (push) Successful in 3m15s
CI / frontend-build (push) Successful in 21s
Token-Speicherung von SharedPreferences (Klartext) auf
flutter_secure_storage (Android Keystore/iOS Keychain) umgestellt.
Optional werden Benutzername/Passwort mitgespeichert (Checkbox auf
dem Login-Screen, Default an, abwählbar - löscht dabei auch
vorhandene gespeicherte Zugangsdaten), damit die App nach Ablauf des
8h-Tokens automatisch neu einloggt statt den Nutzer zurück auf den
Login-Screen zu werfen (ApiClient.versucheAutoRelogin(), greift bei
401 in request()).

Tests auf FakeSecureStorage (In-Memory-Testdouble) statt
SharedPreferences.setMockInitialValues umgestellt.

Kein lokales Flutter-SDK in dieser Umgebung - Änderungen per
manuellem Code-Review statt flutter analyze/test verifiziert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 20:24:33 +02:00
patrickandClaude Sonnet 5 78b07d671f feat(mobile): MOBILE-003 Draft-first-Muster auf Mangelmeldung ausgeweitet
CI / backend-tests (push) Successful in 3m18s
CI / frontend-build (push) Successful in 21s
Gleiches Offline-Queue-Muster wie bei der Kontroll-Erfassung
(offline/queue.ts) jetzt auch für Mangelmeldung: sofort lokal
speichern statt auf Server-Antwort zu warten, Foto wird mit
gequeued und nach erfolgreicher Mangel-Erstellung separat
hochgeladen. useOnlineStatus/SyncStatus decken jetzt beide Queues ab.

Bewusst begrenzter Scope (Nutzer-Entscheidung): kein genereller
Offline-Layer für alle Schreib-Endpunkte, nur Kontrolle + Mangel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 20:14:39 +02:00
patrickandClaude Sonnet 5 aceef65418 fix(identity): Label-Design vergrößert (QR + Name)
CI / backend-tests (push) Successful in 3m14s
CI / frontend-build (push) Successful in 20s
Nutzer-Feedback: QR-Code (25mm) und Klartext-Name (9pt) auf gedruckten
Etiketten waren zu klein. QR-Zielgröße auf 38mm, Klartext-Zeile auf
13pt fett angehoben - gilt für Code128- und QR-Label gleichermaßen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 20:02:46 +02:00
patrickandClaude Sonnet 5 536b2edc4d feat(inspections): INSP Phase 2 - Admin-UI + Dashboard-Lesepfad-Ergänzung
CI / backend-tests (push) Successful in 3m16s
CI / frontend-build (push) Successful in 20s
Prüfarten-Verwaltung + Objekttyp-Zuordnung im Admin-Frontend
(PruefartenSection.tsx, neue Endpunkte GET/PUT/DELETE
/objekttypen/{id}/pruefarten), Prüfhistorie + FAILED-Ampel-Badge je
Geräte-Exemplar (GeraeteInstanzenListe.tsx).

Dashboard-Lesepfad ergänzt (nicht ersetzt): bevorstehende_prueftermine()
zeigt ein Gerät mit fehlgeschlagener Prüfung jetzt auch dann, wenn
naechste_pruefung datumsbasiert noch als "gueltig" gelten würde.

Bewusst NICHT umgestellt: naechste_pruefung-Berechnung bleibt auf
Objektposition.pruefintervall_monate (nicht objekttyp_pruefart),
Fristen-Dienst/ASSET-010 bleiben unverändert - siehe Kachel-DoD.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 19:53:38 +02:00
patrickandClaude Sonnet 5 e5dc80c3a6 feat(foundation): FOUND-013 optionales Error-Tracking (GlitchTip)
CI / backend-tests (push) Successful in 3m14s
CI / frontend-build (push) Successful in 21s
Zielserver-Entscheidung durch optionales Install-Script aufgelöst statt
festgeschrieben: deploy/glitchtip-install.sh installiert GlitchTip per
Docker Compose auf einem beliebigen, selbst gewählten Host - nichts
automatisch/ungefragt.

DSN wird zur Laufzeit über eine neue Admin-GUI-Seite ein-/ausschaltbar
(Systemeinstellung-Singleton, GET/PATCH /einstellungen/sentry), statt
nur per .env - kein Redeploy zum Umschalten nötig. Frontend lädt
@sentry/react nur dynamisch nach, wenn tatsächlich aktiv.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 19:35:47 +02:00
patrickandClaude Sonnet 5 11e6ed4332 feat(warehouse): WH-006 Inventur & Bestandskorrektur
CI / backend-tests (push) Successful in 3m8s
CI / frontend-build (push) Successful in 19s
Inventurlauf je Lagerort (inkl. Unter-Lagerorte), Sollmenge wird beim
Start aus Bestand gesnapshotted, Abweichung erzeugt beim Abschluss
automatisch Korrekturbuchung + Audit-Log statt stiller Anpassung.
Teil-Inventur erlaubt (ungezählte Positionen blockieren nicht).
Backend-Grundgerüst von fastapi-expert-Subagent, Review/Frontend/
Tests-Ergänzung/Doku durch Hauptagent.

Außerdem: 00_index.md Status-Abgleich (FLEET-006, ASSET-011/012,
PERS-008, INSP-001..004 waren bereits umgesetzt, aber im Index noch
als offen markiert).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 18:39:46 +02:00
patrickandClaude Sonnet 5 bc1542a5e9 feat(loadout): LOAD-007 Gemeinsame Sollmenge über mehrere Standorte
CI / backend-tests (push) Successful in 3m3s
CI / frontend-build (push) Successful in 18s
Objektposition kann optional einer sollmengen_gruppe zugeordnet werden;
Fehlbestand-Prüfung erfolgt dann gegen die Gruppen-Summe statt die
eigene Sollmenge. Fehlbestand bleibt an der Position verankert, die
die Unterdeckung real festgestellt hat (kein Standort-Raten), wird
aber gruppenweit gesucht/aufgelöst, damit Deckung durch eine andere
Position im Verbund den Fehlbestand korrekt schließt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 18:15:22 +02:00
patrickandClaude Sonnet 5 c18e4481b6 feat(maint): MAINT-008 Lieferanten-/Dienstleister-Verzeichnis
CI / backend-tests (push) Successful in 3m2s
CI / frontend-build (push) Successful in 18s
ExterneStelle (ASSET-011) um Kategorie erweitert statt zweites
Adressbuch anzulegen; Wartungsauftrag optional mit dienstleister_id
verknuepfbar, Freitext werkstatt_name bleibt als Fallback bestehen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 17:43:42 +02:00
patrickandClaude Sonnet 5 3d596ab456 feat(assets): ASSET-012 Ressourcen-Buchungskalender (Verfügbarkeitsprüfung)
CI / backend-tests (push) Successful in 2m59s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 16:51:17 +02:00
patrickandClaude Sonnet 5 1ad693073e feat(assets): ASSET-011 externer Verleih mit Rückgabe-Tracking
CI / backend-tests (push) Successful in 2m59s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 16:16:14 +02:00
patrickandClaude Sonnet 5 63ac9ecf2c fix(tests): admin-Token für Geräteinstanz-Anlage in PERS-008-Tests nutzen (CI-Fix)
CI / backend-tests (push) Successful in 2m57s
CI / frontend-build (push) Successful in 19s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:46:06 +02:00
patrickandClaude Sonnet 5 163c881b82 feat(personal): PERS-008 Einweisungspflicht-Warnung bei Geräteausgabe
CI / backend-tests (push) Failing after 2m53s
CI / frontend-build (push) Successful in 21s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:41:58 +02:00
patrickandClaude Sonnet 5 80bd79ad4d docs(arbeitskacheln): 5 neue Kacheln aus vertieftem HiOrg-Server-Vergleich (PERS-008, ASSET-011/012, MAINT-008, LOAD-007)
CI / backend-tests (push) Successful in 2m54s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:35:16 +02:00
patrickandClaude Sonnet 5 52bf7d9ec9 feat(assets): ASSET-007 Material-Sets (Kits), ASSET-008 Consumable-Doku korrigiert
CI / frontend-build (push) Successful in 19s
CI / backend-tests (push) Successful in 2m55s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:22:02 +02:00
patrickandClaude Sonnet 5 0aa5d6d249 feat(fleet): FLEET-006 Fahrzeug-Einsatzhistorie über OPS-002
CI / backend-tests (push) Successful in 2m51s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:11:17 +02:00
patrickandClaude Sonnet 5 7219762a4c docs(arbeitskacheln): FLEET-004 Index-Status korrigiert (war bereits vollständig umgesetzt)
CI / backend-tests (push) Successful in 2m52s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:08:34 +02:00
patrickandClaude Sonnet 5 ad4483e18c fix(inspections): pruefung.geraet_instanz_id FK mit ON DELETE CASCADE (CI-Fix, DELETE /geraete/{id} war blockiert)
CI / backend-tests (push) Successful in 2m50s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:02:10 +02:00
patrickandClaude Sonnet 5 25437ec070 feat(inspections): INSP-001..004 Phase 1 generisches Pruefart-System additiv (Dual-Write, FAILED-Ampel)
CI / backend-tests (push) Failing after 2m53s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 14:57:30 +02:00
patrickandClaude Sonnet 5 8e4c2608e3 feat(foundation): FOUND-006 strukturiertes Logging, FOUND-010 DB-Backup-Timer, IDENT-010 GTIN-Materialabgleich
CI / backend-tests (push) Successful in 2m50s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 14:07:22 +02:00
patrickandClaude Sonnet 5 fdeae8b5e3 docs(arbeitskacheln): FOUND-013 Error-Tracking (GlitchTip) geplant, Index-Statuszeilen auf Ist-Stand nachgezogen
CI / backend-tests (push) Successful in 2m50s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 13:33:01 +02:00
patrickandClaude Sonnet 5 ddd1b446a2 feat(einsatz): Epic 16 Einsatz-Nachdokumentation (OPS-001/002/003 kombiniert)
CI / backend-tests (push) Successful in 2m48s
CI / frontend-build (push) Successful in 19s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 13:07:47 +02:00
patrickandClaude Sonnet 5 46a65ba6ff feat(readiness): READY-001 an/abschaltbare Bereitschafts-Kriterien (abgespeckte Regel-Engine)
CI / backend-tests (push) Successful in 2m48s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 12:51:02 +02:00
patrickandClaude Sonnet 5 d41d04c26c feat(ui): UI2-002/003/004/005 Sheet-Navigation, FormField-Einsatz, Skeleton, Table-Wrapper
CI / backend-tests (push) Successful in 2m45s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 12:37:16 +02:00
patrickandClaude Sonnet 5 91cfb1087f feat(notif): NOTIF-003 proaktive Wartungsfälligkeits-Benachrichtigung
CI / backend-tests (push) Successful in 2m46s
CI / frontend-build (push) Successful in 17s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 12:17:57 +02:00
patrickandClaude Sonnet 5 d095db4172 docs(arbeitskacheln): FLUT-001 auf Ist-Stand nachgezogen (v0.1.0-v0.5.0), FLUT-002 als offene Frage dokumentiert
CI / frontend-build (push) Successful in 17s
CI / backend-tests (push) Successful in 2m44s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 12:06:42 +02:00
patrickandClaude Sonnet 5 1457496763 fix(tests): admin-Token für Geräteinstanz-Anlage nutzen statt mitarbeiter (CI-Fix ASSET-010)
CI / backend-tests (push) Successful in 2m43s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 11:56:43 +02:00
patrickandClaude Sonnet 5 24db5a056f feat(custody): ASSET-010 Gerät-Ausgabe/Rücknahme mit optionalem QR-Signier-Flow
CI / backend-tests (push) Failing after 2m42s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 11:52:07 +02:00
patrickandClaude Sonnet 5 1147ec0872 feat(ui): UI2-001/006/007/009/010 Design-Tokens, Toast, AlertDialog, Formular-a11y
CI / backend-tests (push) Successful in 2m38s
CI / frontend-build (push) Successful in 17s
chore(agents): Flutter/iOS/Swift-Subagenten aus claude-subagents-Repo übernommen

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 11:36:42 +02:00
patrickandClaude Sonnet 5 eeb87d889d feat(permission): ZUST-003 Standort-Scoping für granulare Rollen-Berechtigungen
CI / backend-tests (push) Successful in 2m38s
CI / frontend-build (push) Successful in 17s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 11:22:34 +02:00
patrickandClaude Sonnet 5 e7e6c4c8af fix(tests): hash-Feld bei direkter Historie()-Konstruktion ergänzen, Erwartungswert korrigiert (CI-Fix FILE-008)
CI / backend-tests (push) Successful in 2m33s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 11:12:10 +02:00
patrickandClaude Sonnet 5 429ece3c65 feat(historie): FILE-008 manipulationssicheres Audit-Journal (Hash-Kette je Ressource)
CI / backend-tests (push) Failing after 2m34s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 11:08:07 +02:00
patrickandClaude Sonnet 5 a1ad2d6cef feat(readiness): READY-006 täglicher Bereitschafts-Snapshot mit Trend-Dashboard und Akte-Historie
CI / backend-tests (push) Successful in 2m32s
CI / frontend-build (push) Successful in 19s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 10:54:08 +02:00
patrickandClaude Sonnet 5 bb0c601b2f feat(foundation): FOUND-008 gemeinsame Fristen-Normalisierung (Dringlichkeits-Ampel)
CI / backend-tests (push) Successful in 2m28s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 10:42:06 +02:00
patrickandClaude Sonnet 5 04a255429d feat(wartung): MAINT-007 Tankbuch/Kraftstoffverbrauch je Fahrzeug
CI / backend-tests (push) Successful in 2m30s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 10:32:10 +02:00
patrickandClaude Sonnet 5 96499d655f fix(api): import_export-Router vor objekte/geraet_instanz registriert (Routenkonflikt /objekte/export, CI-Fix)
CI / backend-tests (push) Successful in 2m28s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 10:13:56 +02:00
patrickandClaude Sonnet 5 76a984ad56 fix(tests): login als Helper-Funktion statt Fixture importieren (CI-Fix FOUND-007)
CI / backend-tests (push) Failing after 2m26s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 10:09:15 +02:00
patrickandClaude Sonnet 5 807c818405 feat(foundation): FOUND-007 CSV-Import/Export für Objekte und Geräteinstanzen
CI / backend-tests (push) Failing after 2m28s
CI / frontend-build (push) Successful in 18s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 10:04:56 +02:00
patrickandClaude Sonnet 5 eaafeeb89c fix(admin): Download-Link auf aktuelle APK-Version v0.5 korrigiert
CI / backend-tests (push) Successful in 2m28s
CI / frontend-build (push) Successful in 17s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 08:38:50 +02:00
patrickandClaude Sonnet 5 15bbab258b feat(admin): Download-Link für FLUT-001 Scan-Prototyp im Portal
CI / backend-tests (push) Successful in 2m52s
CI / frontend-build (push) Successful in 48s
Admin-only Hinweis mit Link auf die APK unter /downloads/ - reine Sondierung,
kein Produktivstand.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 01:06:45 +02:00
patrickandClaude Sonnet 5 1e8d66f636 feat(akte): FILE-009 Freitext-Notizen an beliebiger Ressource
CI / backend-tests (push) Successful in 2m39s
CI / frontend-build (push) Successful in 20s
Polymorphes akte_notiz-Modell (gleiches entitaet_typ/entitaet_id-Muster wie
Dokument/Historie/Mangel), CRUD-Endpunkte, NotizenPanel im Akte-Grid. Löschen
nur durch Autor oder Administrator.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 00:49:47 +02:00