ADR-0024: Named Planungsversionen (Freeze + Sidecar-Pin)
- Status: superseded by ADR-0045 for the web layer tree (no auto Version 1; versions API returns 410)
- Datum: 2026-08-26
- Phase: P3 / P8
- Lastenheft: ED-09, ED-13; Plattformvision Genehmigung
Kontext
Planung (Rohinput) bleibt editierbar, während Genehmigungsprodukte und erteilte Anträge an einem festen Planungsstand hängen müssen (ED-09). geo_object_revisions speichert Objekt-Historie, benennt aber keine einheitliche Projekt-Version für den Editor-Baum. Der Editor soll Entwurf vs. eingefrorene Versionen vs. Genehmigung/Abschnitt/Produkt als geschachtelten Layerbaum zeigen; das Dashboard behält die flache Stufen-Ansicht.
Entscheidung
project_versions: expliziter Freeze (seq,label,frozen_at,frozen_by) pro Projekt.project_version_members: Pin(version_id, object_id, revision_id)auf die Sidecar-Revision — keine Geometrie in der Member-Tabelle.- Live-Planung:
geo_objectsmitstage=planungundversion_id IS NULL(Entwurf); Tiles lesen weiter die Hot-Tabelle. - Eingefrorene Planung: Anzeige über GeoJSON aus Members + Revisions (kein zweites MVT); Zeichnen deaktiviert.
- Genehmigung: intern
stage=normierung|produktmit gesetztemversion_id; Editor-Chrome sagt Genehmigung statt Normierung. - Kopie in Genehmigung:
POST /map/objects/copy-to-normierungmit{ project_id, version_id, object_ids? }— Quelle ist der Snapshot, nicht der bewegliche Entwurf. map_layers.parent_layer_id: optionale Nested-Gruppen unter Entwurf-Planung (nichtwork_sections).work_sections.version_id: Abschnitt gehört zu einer eingefrorenen Version.
Begründung
Named Freeze ist für Planer nachvollziehbar („Version 1 = Stand bei Einreichung“). Sidecar-Pin vermeidert Geometrie-Duplikate auf der Tile-Hot-Tabelle. Dashboard und Editor teilen /map/layer-tree; stages[] bleibt für die Web-Karte, draft + versions[] erweitern nur den Editor.
Verworfene Alternativen
| Alternative | Warum verworfen |
|---|---|
Nur geo_object_revisions ohne benannte Version |
Kein Baumknoten „Version 1“; Anträge schwer dem Stand zuzuordnen |
| Versionsspalte auf der Tile-Hot-Tabelle | ADR-0010: MVT liest current; Historie in Sidecar |
| ArcGIS Branch Versioning | Betriebs-Overkill; PostGIS-SSOT bleibt API-first |
| Automatischer Freeze bei jedem Antrag | Plan verlangt expliziten „Neue Version“-Button |
| Server-seitiges Last-used | Kollision zwischen Rechnern; Tauri Store pro Projekt reicht |
Folgen
Alembic 0006_project_versions. Editor: Layerbaum links, Layerebene im Werkzeugkasten rechts, Last-used in Desktop-Prefs. Behörden-Workflow unverändert über approval_procedures / Dashboard Verfahren.