# Wegwichtel Editor v5 Dieses Paket bereinigt den einfachen Streckeneditor nach dem grünen SonarQube-Lauf weiter. ## Status Der zuletzt geprüfte SonarQube-Export meldet ein bestandenes Quality Gate, keine Bugs, keine Vulnerabilities, keine Code Smells und keine Security Hotspots. Die New-Coverage lag bei 85,1 %. ## Fachliche Optimierungen gegenüber v4 - Der Editor sendet `activated_at` nicht mehr beim Speichern von Strecken. - Neue Strecken bleiben durch den DB-Default unveröffentlicht. - Bereits manuell aktivierte Strecken werden durch spätere Editor-Änderungen nicht versehentlich deaktiviert. - Der Plus-Button besitzt `aria-haspopup="dialog"`, `aria-expanded` und `aria-controls`; beim Öffnen und Schließen wird `aria-expanded` synchronisiert. - POI-Sortierpfeile sind am Listenanfang beziehungsweise Listenende deaktiviert. - Das Initialschema enthält zusätzlich `idx_routes_activation` für spätere veröffentlichte Listenabfragen nach `status` und `activated_at`. - POIs erhalten analog zu Strecken einen `pois_updated_at`-Trigger, damit `updated_at` bei Bearbeitungen automatisch aktualisiert wird. - Die Dokumentation verwendet durchgehend `TEXT DEFAULT NULL` statt des für SQLite-STRICT falschen `DATETIME`. ## Datenbankschema Für neu erzeugte Datenbanken steht die Spalte direkt in `database/schema.sql`: ```sql activated_at TEXT DEFAULT NULL ``` Für bestehende SQLite-Datenbanken liegt weiterhin eine Migration vor: ```bash sqlite3 < database/migrations/20260901_add_route_activated_at.sql ``` Die Migration darf nur auf Bestandsdatenbanken ohne `activated_at` ausgeführt werden. Auf einer frischen Datenbank, die schon mit dem aktuellen `database/schema.sql` erstellt wurde, ist sie nicht nötig. ## Tests ```bash node --check public/js/editor-ui.js npm test -- test/editor-ui.test.js npm test -- test/editor-database-schema.test.js npm run test:coverage ``` ## Optionaler Cleanup `scripts/apply-editor-schema.mjs` war nur als Übergangshilfe gedacht. Nach diesem Paket ist das Initialschema direkt enthalten. Die Datei wird nicht mehr benötigt und kann entfernt werden, falls sie aus v3/v4 noch im Repository vorhanden ist.