- 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>
63 lines
3.7 KiB
Markdown
63 lines
3.7 KiB
Markdown
# 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
|
||
|
||
```mermaid
|
||
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.
|