Files
Lageplan/ROADMAP.md
Pepe Ziberi 703265f47e
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 31m14s
feat(draw): Linien-Typ-Abfrage – Normal / Leitung / Rettungsachse (v1.4.13)
- Beim Zeichnen von Linie/Pfeil fragt der Dialog jetzt den Linientyp ab:
  Normal (gewählte Farbe), Leitung (blau, dicker), Rettungsachse (grün, gestrichelt)
- Typ in properties.lineType gespeichert; Leitung/Rettungsachse setzen konventionelle
  Farbe + Stärke, Normal behält die Zeichenfarbe
- Eigener MapLibre-Layer mit Dash-Muster für Rettungsachse (klar als freizuhaltende Achse erkennbar)
- Typ-Auswahl auch ohne Label übernehmbar; Änderung wird live gesynct
- ROADMAP: 5.1 abgehakt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-19 15:27:42 +02:00

4.7 KiB
Raw Blame History

Lageplan Verbesserungs-Fahrplan

Priorisierter Plan zur Weiterentwicklung. Wir arbeiten ihn Punkt für Punkt ab. Legende Aufwand: 🟢 klein · 🟡 mittel · 🔴 gross


Phase 0 Fundament & Sicherheit

  • 0.1 JWT-Secret härten 🟢
    • Gemeinsames Secret-Modul; in Produktion hart fehlschlagen, wenn NEXTAUTH_SECRET fehlt oder < 32 Zeichen. Kein öffentlich bekannter Fallback mehr.
    • Betrifft: src/lib/auth.ts, src/middleware.ts
    • Hinweis: Cookie-Flags (httpOnly/secure/sameSite) sind bereits korrekt.
  • 0.2 Token-Laufzeit verkürzt 🟢
    • „Angemeldet bleiben" 30 → 14 Tage. Laufzeiten zentralisiert (SESSION_MAX_AGE_* in auth.ts).
    • Offen für später: automatische Verlängerung bei Aktivität + serverseitiger Widerruf (grösserer Umbau, braucht Live-Test).
  • 0.3 Benutzer-/Mandanten-Verwaltung 🟡
    • Super-Admin sieht ALLE Benutzer über alle Mandanten (Mandant-Spalte, letzte Anmeldung, Status), sperren/entsperren (User.isActive), Passwort-Reset, Suche.
    • Anlegen mit Mandanten-Auswahl (verhindert verwaiste User).
    • admin/page.tsx von 1365 → ~230 Zeilen entwirrt: je Bereich eine eigene Komponente (tenants/users/projects/icons/categories-tab), toter Code entfernt.
    • Offen (später): Rollen-Dualität (User.role vs. Membership.role) vereinheitlichen.

Phase 1 Einsatz vs. Übung

  • 1.1 mode-Feld am Projekt 🟢
    • Feld mode (EINSATZ/UEBUNG) im Schema + Auto-Migration + Validierung.
    • Auswahl beim Erstellen (Segmented-Control), Badge in Projektliste, eigene Nummer Ü-….
  • 1.2 UI je nach Modus 🟡
    • Direkte Buttons „Neuer Einsatz" (rot) / „Neue Übung" (blau) in der Topbar.
    • Übung → Übungs-Cockpit statt Journal: Übungsziele + Zielerreichung + Auswertung.
    • Deutliches „ÜBUNG"-Banner, Sidebar-Tab heisst bei Übung „Auswertung".

Phase 2 Symbole aufräumen & ergänzen

  • 2.1 Kategorien vereinheitlichen 🟢 (Motorspritze, Hydrant, Leitern …)
  • 2.2 Fehlende taktische Zeichen 🟡 (Warteraum, Rettungsachse … Input von Fabian)
  • 2.3 Symbol-Schönheitsfehler 🟢 (Eingang/Treppe Umriss, Absperrung Seitenlinien)
  • 2.4 Custom-Felder pro Symbol 🟢 (z. B. Stockwerke; Item.properties existiert)

Phase 3 Lage-/Rapportansicht

  • 3.1 Reduzierte Lage-View 🟡
    • Read-Only (Pendenzen + Stand + Aufgaben) für Grossbildschirm. Rapport + Token existieren.

Phase 4 Echte Kollaboration

  • 4.1 Karte & Journal parallel bearbeitbar 🟡
    • Editor-Lock gilt nur noch für die Karte; Journal/Cockpit unabhängig editierbar.
    • Live-Sync für Journal existierte bereits (Socket → journal-refresh).
    • Offen (Kür): echtes gleichzeitiges Zeichnen (Co-Drawing) — bewusst nicht gebaut.

Zusatz Robustheit / Datensicherheit

  • Features-Speichern atomar (prisma.$transaction) — kein Totalverlust-Fenster mehr
  • localStorage-Features pro Projekt (lageplan-features-<id>) statt globalem Key
  • Sync-Queue verwirft dauerhafte 4xx-Fehler (kein Endlos-Retry/verstopfte Queue)
  • beforeunload persistiert auch leere Listen (gelöschte Elemente gehen nicht verloren)
  • 5: Optimistische NebenläufigkeitProject.featuresVersion + Versions-Check beim Speichern. Ein veralteter (z.B. offline) Stand überschreibt neuere Änderungen nicht mehr still, sondern erzeugt 409 → Client übernimmt Server-Stand + Warnung. Offline-Queue verwirft konfliktierende 4xx. (Merge pro Element / echtes Co-Drawing weiterhin offen.)

Zusatz Leitungsrechner professionalisiert

  • Formel zentralisiert in src/lib/hose-calc.ts (eine Quelle, typisiert, testbar)
  • Ergebnis-Panel als React-Komponente (MeasurePanel) statt innerHTML/Inline-CSS
  • Schlauchtyp wählbar (Standard ★ vorausgewählt) statt alle gestapelt
  • Strahlrohrdruck einstellbar (4/5/6/8 bar)
  • Schlauchanzahl aus lengthPerPieceM + 10% Verlegereserve (Feld war vorher tot)
  • Ehrliche Höhendaten-Anzeige (Quelle bzw. Warnung „keine Höhendaten")
  • Offen (später): Berechnungsparameter pro Mandant, mehrere Leitungen/Pumpenkette, Elevation-Proxy mit Cache, Ergebnis als speicherbares Lageplan-Objekt.

Phase 5 Kür

  • 5.1 Linien-Typ-Abfrage 🟡
    • Beim Zeichnen einer Linie/eines Pfeils fragt der Dialog nun den Typ ab: Normal (gewählte Farbe), Leitung (blau, dicker), Rettungsachse (grün, gestrichelt als freizuhaltende Achse klar erkennbar).
    • Typ in properties.lineType; eigener MapLibre-Layer mit Dash-Muster für Rettungsachse.

Fortschritt wird hier laufend abgehakt.