4.2 KiB
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.