Skip to content

ADR-0047: Every project has a named schema

Kontext

Ein Projekt ohne Schema ist fachlich leer: QGIS braucht Bindings, Datenmanagement eine benannte Pack-Seite. POST /projects instanziierte bisher nur project_schema_* (Basis) oder klonte Bindings optional. Die Maske bot „Nur Basisschema“ als leere Option. schema_definitions entstanden erst später über + auf der Schemata-Liste — bestehende Projekte (z. B. nach dem ersten Anlegen) hatten nur Standard.

Entscheidung

  1. Jedes Projekt hat mindestens ein benanntes Schema (schema_definitions.project_id). Anlegen erzeugt es aus dem Projektnamen (serialisierte ID).
  2. Beim Anlegen ist die Quelle Pflicht: Standard-Schema (Basis-Kinds/-Felder) oder Kopie von einem bestehenden Projekt (clone_schema_from). Keine dritte „ohne Schema“-Option.
  3. Klon kopiert weiter nur Bindings (keine GIS, keine Records). Projektbezogene Kinds bleiben auf dem Quell-Pack (schema_code); die neue Projektseite listet sie, weil sie gebunden sind.
  4. Extra-Packs per + bleiben erlaubt. Bestehende Projekte ohne Pack werden per Alembic nachgezogen.
Gate Recommendation Why it fits here Rejected alternative and why
Quelle Radio Standard / Kopie, Kopie braucht Quellprojekt Explizite Pflicht; erster Projektstand nur Standard Optionales Dropdown — leicht übersprungen
Named document Auto aus Projektname Schemata-Liste zeigt das Projekt sofort Nur Bindings — UI wirkt schema-los
Klon-Kinds Bindings + Sichtbarkeit über project_id Kind-code bleibt org-weit eindeutig Kind-Duplikate mit neuem Code — bricht GIS
Extra-Packs weiter + Mehrere Packs pro Projekt bleiben möglich Hart 1:1 — nimmt ADR-0036 ohne Bedarf zurück

Begründung (für dieses Setup)

Standard bleibt der globale Katalog. Das Projektschema ist die Spezialisierung, die QGIS anwendet. Pflichtwahl beim Anlegen macht die Invariante „Projekt ⇒ Schema“ in der Maske sichtbar; die serialisierte ID vermeidet freie Wire-Codes.

Verworfene Alternativen

Alternative Warum verworfen
Optionales clone_schema_from (Status quo) Projekt ohne sichtbares Schema
Schema erst später über Schemata-+ Widerspricht „Projekt hat ein Schema“
Geteiltes föderiertes Extra-Pack ADR-0037
Physische Schema-DB pro Projekt ADR-0033
Kind-Zeilen beim Klon duplizieren Bricht org-weit eindeutige geo_objects.kind

Folgen

  • Alembic 0024_project_named_schema (Tenant 0012).
  • POST /projects erzeugt immer schema_definitions; UI-Radios Standard / Kopie.