Skip to content

ADR-0040: Project standard fields

Kontext

Jedes Projekt braucht dieselben Basisangaben, unabhängig vom benutzerdefinierten Schema. Der bisherige Seed mixte Name, Akteursliste, Zeitraum und Notizen mit einem Phase-Enum (Planung/Genehmigung) und ließ Status und flache Zeitraum-Spalten auf projects weg. Die Web-Maske zeigte Code, Organisation, einzelnen Projektleiter und englisches „Description“. Dateien (Cloud-Anbindung) sind gewünscht, aber nicht in diesem Slice.

Entscheidung

  1. Die Entität project erhält Systemfelder, die jeder Nutzer standardmäßig hat und nicht löschen kann: name, actor_assignments, notes, status (Default active), period_from, period_to.
  2. Dateien (files) sind reserviert und werden später angebunden (einfaches Drive / Nextcloud / Google). Kein Feld, keine API in diesem Slice.
  3. phase bleibt, falls vorhanden, ein optionales Katalogfeld (is_seeded=false) — kein Systemfeld.
  4. Die Daten-Maske zeigt Name, Akteurszuweisung (Akteur + Rolle, + / ×), Notizen, Status, Zeitraum. Organisation und schreibgeschützter Code bleiben Betriebsfelder (FK / Identifier), nicht CMS-Systemfelder.
  5. project_manager bleibt die QGIS-Value-Relation: Person mit Rolle Leiter/Manager/PL, sonst erste Person, sonst Platzhalter. Zuweisungen liegen in metadata_json.actor_assignments.
  6. Zeitraum liegt zusätzlich als DATE auf projects (QGIS-flach), Status weiter in project_status.
Gate Recommendation Why it fits here Rejected alternative and why
Systemfelder feste Codes, Löschen 403 Jedes Projekt hat dieselbe Basis; Anpassen nur für Extra-Felder Nur UI-Default — Katalog könnte Name entfernen
Status Lookup ref_project_status, Default active QGIS und Web lesen dieselbe Spalte Freitext oder CMS-only Enum ohne Flat-Spalte
Zeitraum zwei DATE-Spalten Value Relations und Export ohne JSON-Pfad Nur attrs — bricht flache QGIS-Tabelle
Dateien später Cloud-Anbieter und Speicher noch offen Jetzt entity_files oder Nextcloud-Stub ohne Produktentscheidung
Phase nicht schützen Nutzer wollte Status aktiv, nicht Planungsphase Phase als Systemfeld — zweites Statuskonzept

Begründung (für dieses Setup)

Hybrid-CMS (ADR-0025) braucht flache Spalten für QGIS. Eine kurze, geschützte Feldliste hält die Stammdaten-Maske und den Katalog deckungsgleich, ohne Datei-Storage vorzuziehen.

Verworfene Alternativen

Alternative Warum verworfen
Einzelner Pflicht-Projektleiter statt Zuweisungsliste Nutzer will Akteurszuweisung (mehrere Akteure + Rolle)
Status nur im CMS-attrs projects.project_status und Lookup existieren bereits
Dateien als leeres Systemfeld Würde × blockieren, ohne Speicher — später als eigenes ADR
product als Fallback-Kind Migration stellt project sicher; Fallback verdeckt fehlenden Seed

Folgen

  • Alembic 0017_project_standard_fields (Tenant 0005).
  • API: period_from / period_to; Manager aus Zuweisungen ableitbar.
  • Anpassen auf der Projektseite pflegt optionale Felder am Standard-Schema (Organisationskonto). Systemfelder haben kein ×; Backend lehnt Löschen mit 403 ab. Werte der Extra-Felder liegen in projects.metadata_json.attrs.
  • Das übrig gebliebene Katalogfeld project.phase (Planung/Genehmigung) wurde später entfernt (0030 / Tenant 0017). Die Projektmaske nimmt Organisation und Akteur als Text und legt fehlende Stammdaten beim Speichern an.