# Changelog Alle nennenswerten Änderungen an FLORIAN. Format nach [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), Versionierung nach [Semantic Versioning](https://semver.org/lang/de/). Die Regeln dazu stehen in [docs/VERSIONIERUNG.md](docs/VERSIONIERUNG.md). ## [Unveröffentlicht] Noch nichts. Nächster Schritt ist Phase 1 (Stammdatenverwaltung). ## [0.1.0] — 2026-09-03 Phase 0: das Fundament. Ab hier steht ein lauffähiger Stack mit Mandantentrennung, Anmeldung, Dateiablage und lückenloser Protokollierung. ### Hinzugefügt **Betrieb** - `docker-compose.yml` mit Traefik, App, Worker, PostgreSQL 17 + PostGIS, Redis, MinIO und Gotenberg. - `docker-compose.override.yml` für die Entwicklung: ohne Traefik, mit Mailpit als SMTP-Auffangkorb und Adminer für den Blick in die Datenbank. Host-Ports bewusst abseits der Standardwerte (3100, 5442, 6389, 9010/9011), damit FLORIAN neben anderen lokalen Stacks laufen kann. - Mehrstufiges `docker/Dockerfile`: eigener Benutzer `florian` (UID 1001, kein root), `tini` als PID 1, Healthcheck gegen `/api/health`, Standalone-Build von Next.js. - `docker/entrypoint.sh` wendet ausstehende Migrationen an — nur im App-Container, nicht im Worker. - `docker/postgres/10-init-app-role.sh` legt beim ersten Start die Rolle `florian_app` (`NOBYPASSRLS`) samt Vorgabeprivilegien an. - `.env.example` mit einem Kommentar zu jeder einzelnen Variable. **Datenmodell** - Prisma-Schema mit `Organisation`, `Person`, `Rolle`, `Berechtigung`, `RolleBerechtigung`, `PersonRolle`, `AusweisToken`, `AuditLog`, `Datei`. - `Fahrzeug` und `Geraet` bereits schmal angelegt, damit der Seed eine realistische Wehr aufbauen kann. Phase 1 erweitert beide. - Migration `20260902000100_rls_policies`: Row Level Security auf allen mandantenpflichtigen Tabellen, Funktion `aktuelle_organisation()`, Append-only-Trigger auf `audit_log`. - Migration `20260902000200_audit_bereinigung`: `UPDATE` auf `audit_log` bleibt dauerhaft gesperrt, `DELETE` ist nur im gekennzeichneten Aufbewahrungslauf möglich. **Anwendungskern** - `lib/env.ts` — Zod-Validierung der gesamten Umgebung beim Start. - `lib/db.ts` — getrennte Verbindungen für Anwendung (RLS aktiv) und System (RLS-frei), `fuerOrganisation()` als einziger Weg zu Fachdaten. - `lib/authz.ts` — 9 Rollen, 38 Einzelrechte, zentrale Prüffunktionen. - `lib/storage.ts` — MinIO, presignte Up- und Downloads, SHA-256-Prüfsumme. - `lib/audit.ts` — Protokolleinträge mit Vorher/Nachher-Vergleich, entfernt Geheimnisse vor dem Schreiben. - `lib/auth.ts` — Auth.js mit OIDC gegen authentik, lokalem Passwort-Login und Terminal-Anmeldung über PIN oder RFID. - `lib/warteschlange.ts` und `src/worker/` — BullMQ-Gerüst mit den Auftragsarten für Fristen, Erinnerungen, PDF und Aufbewahrung. - `lib/integrations/` — Mail, Telegram und LLM hinter abschaltbaren Schnittstellen. - tRPC v11 mit den Prozedurarten `oeffentlich`, `angemeldet` und `mitRecht(...)`. **Oberfläche** - Basis-Layout mit Seitenleiste, heller und dunkler Darstellung (Systemvorgabe als Standard) und durchgängig deutschen Texten. - Anmeldeseite, die genau die eingerichteten Anmeldewege zeigt. - Übersicht mit Kennzahlen und dem Sicherheitshinweis zur analogen Atemschutzüberwachung. - Farbwelt in OKLCH mit festen Statusfarben für Gerätezustände. **Daten und Tests** - Seed mit einer vollständigen Beispielwehr: 15 Personen mit Rollen und Terminal-Ausweisen, 3 Fahrzeuge, 40 Geräte mit gemischten Prüffristen. - Vitest: 32 Tests, darunter acht, die die Mandantentrennung gegen eine echte Datenbank prüfen. - Playwright: 10 Tests über Desktop und Tablet. - `npm run screenshots` erzeugt die Bilder für die Anleitung. **Dokumentation** - README mit Schnellstart in sechs Zeilen. - Anleitung, Roadmap, Aufwandsschätzung, Devlog und Versionierungsregeln.