ADR-0020: Genehmigungsverfahren und Audit-Sidecar
- Status: accepted
- Datum: 2026-08-26
- Phase: P8
- Lastenheft: DASH-05–DASH-08; Plattformvision Verfahren
Kontext
geo_objects.status ist Freitext (draft). section_orders.status ist der interne Auftrag. Behörden brauchen eine Statuskette, Auflagen, Fristen und ein rechtssicheres Protokoll. Geom-Historie (geo_object_revisions) ist die falsche Tabelle dafür.
Abschnitte hingen nur an fiber_route plus Stationierung (route_sections). Schilder und Flächen brauchen einen generischen Abschnitt.
Entscheidung
work_sections: Abschnitt mit eigenergeom(EPSG:25832). Optionale Linearreferenz (ref_object_id,from_m,to_m).route_sectionsbleibt Kompat-VIEW.approval_procedures: ein Antrag pro Abschnitt. Status lebt hier, nicht auf jeder Geometriezeile. Produkt-Objekte (stage=produkt) hängen übersection_id/ Auftrag am Abschnitt.procedure_events: append-only Audit (Wer, Wann, von→nach, Auflage, Kommentar). Tiles und Listen lesen diese Tabelle nicht.jurisdictions: Behörden-Gebiet als Polygon 25832 an der Authority-Organisation. Behörden sehen Anträge nur perST_Intersects(section.geom, jurisdiction.geom).- Isolationseinheit für Verfahren in v1 war
organizationsin einer Shared-DB. Superseded für Cluster-Isolation: Mandant = Control-Zeiletenants+ eigene DB (ADR-0031).organizationsbleiben Stammdaten in der Mandanten-DB.
Begründung
Hot-Pfad (MVT, Verfahrenliste) bleibt schmal. Audit ist Sidecar wie Revisions. Räumlicher Filter skaliert mit GIST, nicht mit „alles laden dann filtern“.
Verworfene Alternativen
| Alternative | Warum verworfen |
|---|---|
Statuskette auf geo_objects.status |
Mehrere Produkte pro Antrag; Behörden-Status ≠ GIS-Entwurf |
route_sections als einziges Modell |
Stationierung gilt nicht für Punkt/Fläche |
| Freitext-Gemeinde als SSOT | Kein räumlicher Filter; Tippfehler |
Extra-tenants-Tabelle (Shared-DB v1) |
Stammdaten-Organisationen existierten; Cluster-Isolation braucht tenants (ADR-0031) |
Folgen
API unter /api/v1/procedures. GIS-Write bleibt Editor. Dashboard und Feld-App schreiben nur Verfahren bzw. Ausführung.