Projektplan und Tech-Stack nach erster Besprechung mit BauIn angepasst

- Geprüft werden Nachträge je Position: "im Vertrag enthalten?" mit Fundstellen
- Gliederung Projekt → PFA → Vertrag → LVs, Suchreihenfolge über PFAs
- GAEB X86 als Grundlage, PDF zur Anzeige; LV-Suche als Meilenstein M2
- KI-API ITM über API-Werk: Sprachmodell vorhanden, Polling statt Webhook
- Bewertungsmatrix und Stellungnahme als Optionen; Höhe Phase 2, Regelwerk Phase 3
- Termine: 16.10. BauIn, M1 30.10., M2 20.11., M3 18.12., M4 29.01.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Christoph
2026-10-02 15:00:29 +02:00
co-authored by Claude Opus 5.5
parent 558e698e3b
commit 56eb2ea455
2 changed files with 165 additions and 89 deletions
+18 -10
View File
@@ -1,16 +1,16 @@
# KI-BauIN – Tech-Stack
Stand: 1. Oktober 2026. Grundlage ist die allgemeine Tech-Stack-Referenz einer bestehenden
Stand: 2. Oktober 2026. Grundlage ist die allgemeine Tech-Stack-Referenz einer bestehenden
Laravel-Verwaltungsanwendung (Kollegenprojekt). Dieses Dokument übernimmt deren Grundsätze
und benennt, wo KI-BauIN bewusst abweicht und warum.
## Beteiligte
- **ITM:** Anbieter der KI-API (OCR, Embeddings, Reranker, ggf. Sprachmodell), Projektleitung und
abrechnende Firma. Stellt auch die Server (Staging, Produktion) und den Gitea, auf den das
- **ITM:** Anbieter der KI-API (über API-Werk: Dokumentdienst mit OCR, Embeddings, Reranker,
Sprachmodell), Projektleitung und abrechnende Firma. Stellt auch die Server (Staging, Produktion) und den Gitea, auf den das
Repository gespiegelt wird.
- **BauIn:** Endkunde. Liefert Fachdaten (LVs, MKAs, Bewertungsmatrizen), stellt den Fachexperten
und nutzt das System.
- **BauIn:** Endkunde. Prüft als Bauüberwachung im Auftrag der DB Nachträge dem Grunde nach.
Liefert Fachdaten (LVs, Nachträge, Bewertungsmatrizen), stellt den Fachexperten und nutzt das System.
- „Kunde“ meint in diesem Dokument BauIn; wo ITM gemeint ist, steht ITM.
## 1. Backend und Oberfläche
@@ -27,7 +27,10 @@ und benennt, wo KI-BauIN bewusst abweicht und warum.
| Mehrsprachigkeit | Deutsch (Standard) und Englisch, Sprache je Benutzer; Übersetzungen über Laravel Lang (nur Entwicklung), eigene Texte in `lang/project/` | ergänzt |
| Vite 8, Node.js/npm | Asset-Build | gleich |
| Composer | Abhängigkeiten mit Lockfile | gleich |
| PhpSpreadsheet | Excel-Export der Bewertungsmatrix | geplant, sobald die Vorlage vorliegt |
| GAEB-Import | LVs und Nachtrags-LVs aus GAEB DA XML (X86); D86 nur als Rückfall | ergänzt |
| pdf.js (lokal ausgeliefert, kein CDN) | Anzeige der LV- und Nachtrags-PDFs mit Sprung zur Fundstelle | ergänzt |
| PhpSpreadsheet | Ergebnisliste als Excel; Option: Bewertungsmatrix in der Vorlage der DB | geplant |
| PHPWord | Option: Stellungnahme aus Word-Vorlage (nur .docx) | Option |
| Dompdf | PDF-Erzeugung | vorerst nicht nötig |
Aufbau als modularer Laravel-Monolith: Livewire-Komponenten für die Interaktion, Services für
@@ -44,8 +47,8 @@ Länderspezifisches (DE/AT) hinter Schnittstellen im Kern, Umsetzungen in `app/L
| Datenbank-Warteschlange | Dokumentverarbeitung, Embeddings, KI-Aufrufe | gleich |
| Laravel Scheduler | Wiederanlauf hängender Aufträge, Aufräumarbeiten | gleich |
| Meilisearch | Hybride Suche (Volltext + Vektoren) mit Rechte-Filtern; Index jederzeit aus MySQL neu aufbaubar | ergänzt |
| KI-API ITM | OCR, Embeddings (Qwen3-Embedding-8B), Reranker, ggf. Sprachmodell | ergänzt; Anbindung folgt |
| Persistenter Ereigniseingang mit HMAC-Prüfung | Falls die KI-API Ergebnisse per Webhook meldet | geplant, abhängig von der API |
| KI-API ITM (API-Werk, `https://api-werk.de`) | Dokumentdienst (OCR-Gateway/OpenDataLoader: PDF → Markdown/JSON, asynchron mit Abfrage des Ergebnisses), Modelle `embed`, `rerank`, `chat`, `chat-noreasoning` (OpenAI-kompatibel). Drei Schlüssel, nur im Backend; 120 Anfragen/min je Schlüssel; 50 MB je Datei; keine Idempotenz | ergänzt; Anbindung folgt |
| Persistenter Ereigniseingang mit HMAC-Prüfung | – | nicht nötig: API-Werk meldet nicht per Webhook, Ergebnisse werden abgefragt |
| Nachrichten-Outbox | – | vorerst nicht nötig; Benachrichtigungen über die Warteschlange |
Redis wird nicht eingesetzt: Warteschlange, Cache und Sessions laufen über die Datenbank.
@@ -67,7 +70,9 @@ Redis wird nicht eingesetzt: Warteschlange, Cache und Sessions laufen über die
| Keine externen Ressourcen | Test prüft alle Seiten auf fremde Hosts | ergänzt (Vorgabe „alles lokal“) |
Rechte werden an den Zugriffswegen und an den auslösenden Aktionen geprüft, zusätzlich bei
Suchtreffern und bevor Inhalte an ein Sprachmodell gehen.
Suchtreffern (vor dem Reranking) und bevor Inhalte an ein Sprachmodell gehen. Dokumentinhalte
sind für das Sprachmodell Daten, keine Anweisungen. Keine Authorization-Köpfe, ganzen Dokumente
oder Prompts in technischen Logs.
## 4. Entwicklung und Qualität
@@ -113,6 +118,9 @@ Ergänzt bzw. anders als in der Referenz:
- Verlangen BauIn oder ITM eine Festplattenverschlüsselung auf den Servern bei ITM?
- Backups: Speicherort, Aufbewahrungsdauer und wer dafür zuständig ist.
- Weitere Sprachen über Deutsch und Englisch hinaus (technisch vorbereitet, fachlich nicht angefragt).
- Datenschutz der KI-API: Standort von API-Werk und KI-Server, Auftragsverarbeitung, Aufbewahrung
hochgeladener Dokumente und Ergebnisse.
- Anmeldung mit eigenem Passwort und 2FA oder mit dem Microsoft-Konto von BauIn.
## Architekturübersicht
@@ -126,7 +134,7 @@ flowchart LR
App --> Search[(Meilisearch)]
App --> Queue[Datenbank-Warteschlange]
Queue --> Worker[Worker unter systemd]
Worker --> KI[KI-API ITM: OCR, Embeddings, Reranker]
Worker --> KI[KI-API ITM über API-Werk: OCR, Embeddings, Reranker, Sprachmodell]
Worker --> DB
Worker --> Search
Cron[Cron] --> Scheduler[Laravel Scheduler]