diff --git a/adr/0020-produktname-flotten-management-und-navigationsstruktur.md b/adr/0020-produktname-flotten-management-und-navigationsstruktur.md new file mode 100644 index 0000000..d0f514c --- /dev/null +++ b/adr/0020-produktname-flotten-management-und-navigationsstruktur.md @@ -0,0 +1,78 @@ +# ADR-0020: Produktname „Flotten-Management" und zweistufige Navigation + +**Status:** Beschlossen +**Datum:** 26.08.2026 + +## Kontext + +ADR-0018 hatte die Umbenennung des Navigationseintrags „Geräte" zu „Flotte" +beschlossen, aber die Frage offengelassen, ob auch der Produktname selbst +(„Kundenplattform", bislang nur spontan gewählt) angepasst werden soll. Der +Nutzer entschied sich für „Flotten-Management" als sprechenderen Namen. + +Parallel dazu war die bestehende Navigation eine einzige flache horizontale +Liste (`base.html`) ohne jede Gruppierung — mit wachsender Seitenzahl (aktuell +Flotte, Struktur, Gruppen, Installationsmedium, Organisation, plus Admin für +Superuser) wurde das unübersichtlich. Insbesondere lagen „Struktur" +(Organisationseinheiten) und „Gruppen" als gleichrangige Nachbarn neben +„Organisation", obwohl beide inhaltlich steuern, welche Merkmale ein Gerät +über seine OE-/Gruppen-Zugehörigkeit bekommt (siehe ADR-0012) — organisatorisch +näher an „Organisation" als eigenständige Themen. + +## Entscheidung + +**Produktname:** Nur das sichtbare Label wird geändert — die +Navigationsmarke im Header (`base.html`) und der (aktuell ohnehin dormante, +da `/docs` deaktivierte, siehe Sicherheits-Review 25.08.2026) FastAPI-Titel +heißen jetzt „Flotten-Management". Interne technische Namen bleiben bewusst +unverändert: Environment-Variablen-Präfix `KUNDENPLATTFORM_*`, systemd-Service/ +-User/-Group `kundenplattform`, Verzeichnis `/opt/kundenplattform`, +Git-Repo-Name, Postgres-Datenbankname, Cookie-Name `kundenplattform_session`. +Begründung: keiner dieser Namen ist je für einen Kunden sichtbar, eine +komplette technische Umbenennung wäre ein eigenes Migrationsprojekt mit +Deploy-Risiko (koordinierter Neustart, Pfad-/Secret-Umzug) für rein +kosmetischen Nutzen. + +**Navigation:** von einer flachen horizontalen Liste auf eine zweistufige +Struktur umgestellt: eine vertikale Primär-Spalte mit den Hauptkategorien +(Flotte, Organisation, Installationsmedium, Admin — letzteres weiterhin nur +für `is_superuser`), und bei Kategorien mit mehreren Unterseiten eine +horizontale Sekundär-Nav im Hauptbereich. „Struktur" und „Gruppen" werden +beide Unterpunkte von „Organisation" (neben der bestehenden +Stammdaten/Konten-Seite selbst). Die aktive Kategorie/Unterseite wird rein +aus dem URL-Pfad-Präfix abgeleitet (`base.html`, Jinja-`{% set %}` auf +`request.url.path`) — keine Router-/Kontext-Änderungen in den einzelnen +Seiten nötig, URLs bleiben unverändert (`/struktur`, `/gruppen` etc.), reine +Darstellungsänderung. + +Der interne Admin-Bereich (`admin/layout.html`) hatte bereits eine eigene +horizontale Sub-Nav (Technik/Datenbank, Flotte, Flows, Kunden) — dieses +Muster diente als Vorbild für die neue Sekundär-Nav und wurde unverändert +übernommen (es erbt weiterhin von `base.html` und sitzt jetzt konsistent +unter derselben Primär-Spalte). + +Layout technisch über ein schlankes eigenes Flexbox-CSS in `base.html` +umgesetzt (Pico CSS bringt kein Sidebar-Pattern mit) — nutzt ausschließlich +Picos bestehende CSS-Variablen (`--pico-primary-background` etc.), damit +automatisches Dark/Light-Mode-Verhalten erhalten bleibt. Auf schmalen +Bildschirmen (`max-width: 768px`) fällt die Sidebar per Media Query auf eine +horizontale Liste über dem Inhalt zurück. + +## Konsequenzen + +Reine Template-/CSS-Änderung (`base.html`, `app.py`-Titel) — keine +Datenbank-, API- oder Routing-Änderung, kein Migrationsbedarf, keine +bestehenden Links/Lesezeichen brechen. + +Lokal verifiziert: alle 29 Templates parsen weiterhin fehlerfrei (Jinja- +Syntaxcheck), `base.html` mit gemocktem Request-Objekt für jeden +Primär-/Sekundär-Pfad gerendert (korrekte Aktiv-Markierung, Sekundär-Nav +erscheint nur unter „Organisation"), und eine Stichprobe realer Seiten +(Geräteliste, Organisation, Struktur, Gruppen, Admin-Kunden-Index) rendert +mit dem neuen Layout ohne Fehler. Live-Verifikation auf anode (echter +Login, visuelle Prüfung Light/Dark) folgt vor dem Deploy-Abschluss. + +Wie schon in ADR-0018 festgehalten: sollte künftig auch der übrige +Sprachgebrauch der Anwendung (Seitentitel, Tabellenüberschriften, +Fehlermeldungen) auf „Flotten-Management" umgestellt werden sollen, ist das +eine eigene, hier nicht vorweggenommene Folgeentscheidung.