Files
BauIN/docs/datenmodell.md
T
ChristophandClaude Opus 5.5 6aac8b0a16 Datenmodell Kern: Projekt, PFA, Vertrag, LV, Nachtrag, Dokument
- Mandant, Auftragnehmer, Projekt mit Suchreihenfolge, Abschnitt (PFA), Vertrag,
  Leistungsverzeichnis, Nachtrag (MKA nur als Bezug), Nachtragsposition, Dokument
- Projektmitglieder mit Projektrolle, Freigaben für vertrauliche Dokumente
- Mandant, Land und Projekt werden vom übergeordneten Datensatz übernommen;
  Fehlzuordnungen über Mandanten oder Projekte hinweg werden abgewiesen
- Feste Morph-Map, Factories, Demodaten (Musterbahn, PFA 1–4, N14/N16/N21), Tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 08:34:24 +02:00

3.7 KiB
Raw Blame History

KI-BauIN – Datenmodell (Kern)

Stand: 5. Oktober 2026. Grundlage für Phase 1. Später ergänzt werden LV-Positionen und Vorbemerkungen (GAEB-Import, AP5), Prüfung, Feedback und Regeln (AP6–AP8) sowie die Einstellungen der KI-Schnittstelle (AP3).

Übersicht

erDiagram
    MANDANT ||--o{ PROJEKT : hat
    MANDANT ||--o{ AUFTRAGNEHMER : hat
    MANDANT ||--o{ USER : hat
    PROJEKT ||--o{ ABSCHNITT : "gliedert sich in (PFA)"
    ABSCHNITT ||--o{ VERTRAG : enthält
    AUFTRAGNEHMER ||--o{ VERTRAG : "ist Partner von"
    VERTRAG ||--o{ LEISTUNGSVERZEICHNIS : "hat (oft 20–35)"
    VERTRAG ||--o{ NACHTRAG : "erhält"
    NACHTRAG ||--o{ NACHTRAGSPOSITION : hat
    PROJEKT ||--o{ DOKUMENT : "enthält"
    LEISTUNGSVERZEICHNIS ||--o{ DOKUMENT : "X86, D86, PDF"
    NACHTRAG ||--o{ DOKUMENT : "Nachtrags-LV, Anschreiben, Anlagen"
    PROJEKT }o--o{ USER : "Mitglieder mit Projektrolle"
    DOKUMENT }o--o{ USER : "Freigaben (vertraulich)"
Modell Tabelle Inhalt
Mandant mandanten Kunde der Anwendung (im Pilot nur BauIn)
Projekt projekte z. B. „Elektrifizierung Musterbahn“; Auftraggeber, Vertragsgrundlage, Status, Suchreihenfolge
Abschnitt abschnitte PFA bzw. Abschnitt; die Bezeichnung „PFA“ steht am Projekt (abschnitt_bezeichnung)
Auftragnehmer auftragnehmer Firma oder ARGE; kann in mehreren PFAs Verträge haben
Vertrag vertraege Auftrag an einen Auftragnehmer in einem Abschnitt, z. B. „Gleisbau“
Leistungsverzeichnis leistungsverzeichnisse ein LV des Vertrags; Dateien als Dokumente, Importstatus
Nachtrag nachtraege Nr., Eingang, Betreff, MKA-Bezug (Liste), Status, zugewiesen an
Nachtragsposition nachtragspositionen OZ, Kurztext, Langtext, Menge, Einheit, EP (nur Information)
Dokument dokumente hochgeladene Datei; gehört zu Projekt und optional zu LV, Nachtrag usw.; vertraulich ja/nein

Pivot-Tabellen: projekt_mitglieder (Benutzer, Projekt, Projektrolle) und dokument_freigaben (vertrauliche Dokumente für benannte Personen).

Festlegungen

  • Mandant, Land und Projekt an jedem Fachdatensatz. mandant_id und land stehen an allen Fachtabellen; projekt_id an allem unterhalb des Projekts. Die Werte werden beim Speichern vom übergeordneten Datensatz übernommen (App\Models\Concerns\ErbtZuordnung). Ein Datensatz, der auf einen Datensatz eines anderen Mandanten, Landes oder Projekts zeigt, wird abgewiesen. Das gilt auch für Vertrag und Auftragnehmer.
  • Rollen: Globale Rollen (Administrator, Regelverantwortlicher) über Spatie laravel-permission. Projektrollen (Projektleiter, Bearbeiter, Leser) in projekt_mitglieder, weil sie je Projekt verschieden sind. Der Teams-Modus von Spatie bleibt aus.
  • MKA nur als Bezug: nachtraege.mka_bezug ist eine Liste von Nummern (Fragenkatalog A8).
  • Dokumente polymorph: dokumentable zeigt auf LV, Nachtrag oder Vertrag; projekt_id bleibt für die Rechteprüfung immer gesetzt. Ohne Projekt ist es ein allgemeines Dokument (Einstellungen). Die Morph-Namen sind fest (projekt, vertrag, leistungsverzeichnis, nachtrag, user), damit Klassennamen nicht in der Datenbank stehen.
  • Löschen: Fachdaten werden nicht kaskadierend gelöscht; ein Projekt mit Abschnitten lässt sich nicht löschen, sondern wird archiviert. Ausnahmen: Nachtragspositionen hängen am Nachtrag, Pivot-Einträge an ihren beiden Seiten.
  • Suchreihenfolge je Projekt (vorläufig, Fragenkatalog A10): andere Verträge im selben Abschnitt einbeziehen = nein, andere Abschnitte = ja, nur gleicher Auftragnehmer = nein.
  • Beträge als Dezimalzahlen (Menge 15,3, EP 15,2); Preise sind in Phase 1 nur Information.