- 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>
3.7 KiB
3.7 KiB
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_idundlandstehen an allen Fachtabellen;projekt_idan 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_bezugist eine Liste von Nummern (Fragenkatalog A8). - Dokumente polymorph:
dokumentablezeigt auf LV, Nachtrag oder Vertrag;projekt_idbleibt 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.