From 56eb2ea4555fb772ec1b6da2a3f6c9afba0fd139 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 2 Oct 2026 15:00:29 +0200 Subject: [PATCH] Projektplan und Tech-Stack nach erster Besprechung mit BauIn angepasst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- docs/projektplan.md | 226 ++++++++++++++++++++++++++++---------------- docs/tech-stack.md | 28 ++++-- 2 files changed, 165 insertions(+), 89 deletions(-) diff --git a/docs/projektplan.md b/docs/projektplan.md index 2add181..8518df5 100644 --- a/docs/projektplan.md +++ b/docs/projektplan.md @@ -1,102 +1,156 @@ -# KI-BauIN – Projekt- und Zeitplan (MVP) +# KI-BauIN – Projekt- und Zeitplan (Phase 1) -Stand: 1. Oktober 2026 (KW 40). Wird nach dem Kundentermin (KW 42) zum Detailplan geschärft. +Stand: 2. Oktober 2026 (KW 40), nach der ersten Besprechung mit BauIN und der API-Dokumentation +von ITM. Sobald die Antworten auf den Fragenkatalog vorliegen (Ziel: Termin am 16.10.), wird +daraus der Detailplan mit Teilplänen je Arbeitspaket. ## 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 - Repository gespiegelt wird. -- **BauIn:** Endkunde. Liefert Fachdaten (LVs, MKAs, Bewertungsmatrizen), stellt den Fachexperten - und nutzt das System. +- **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. Prüft als Bauüberwachung im Auftrag der DB die Nachträge der + Auftragnehmer dem Grunde nach. Liefert Fachdaten (LVs, Nachträge, Bewertungsmatrizen), + stellt den fachlichen Ansprechpartner (Nachtragsbearbeitung) und eine Ansprechpartnerin für IT. - „Kunde“ meint in diesem Dokument BauIn; wo ITM gemeint ist, steht ITM. +## Ergebnis der Besprechung vom 02.10.2026 + +Was sich gegenüber dem Stand vom 01.10. ändert: + +- **Geprüft werden Nachträge, nicht MKAs.** Aus einer MKA entsteht (oder auch nicht) nach + einigen Wochen ein Nachtrag; das ist nicht 1:1. Der Nachtrag enthält ein Nachtrags-LV mit + Positionen (GAEB und PDF), ein Anschreiben, die Kalkulation und Anlagen. Die MKA-Nummer ist nur + noch ein Bezug am Nachtrag. +- **Die KI beantwortet je Nachtragsposition eine Frage:** Ist die Leistung schon im Vertrag + enthalten, also in den LVs einschließlich Vorbemerkungen? Wenn ja, ist der Nachtrag dem Grunde + nach nicht berechtigt. Schwerpunkt sind geänderte Leistungen (§ 2 Abs. 5 VOB/B, mit Rückgriff + auf eine Hauptvertragsposition) und zusätzliche Leistungen (§ 2 Abs. 6 VOB/B). Mengenänderungen + (§ 2 Abs. 3) kommen selten vor und bekommen keine eigene Logik. +- **Nicht Aufgabe der KI:** die rechtliche Einordnung (richtiger Paragraf), Fristen und + Vollständigkeit der Anzeige, Leistungen ohne Auftrag (§ 2 Abs. 8), Behinderungen (§ 6 Abs. 6), + Anordnungen des Auftraggebers. Das prüft BauIn selbst. +- **Gliederung:** Projekt → PFA (Planfeststellungsabschnitt, im Pilot PFA 1–4) → Vertrag mit + einem Auftragnehmer (je PFA mehrere, z. B. Gleisbau, Tunnelbau, Oberleitung) → mehrere LVs + (im PFA 4 z. B. 28). Ein „Los“ im bisherigen Plan entspricht einem Vertrag. +- **Suchreihenfolge:** zuerst die LVs des betroffenen Vertrags, dann als Hinweis die anderen PFAs + desselben Projekts (Fall: Leistung im PFA 3 beauftragt, im PFA 4 vergessen und dort per + Nachtrag zum doppelten Preis angeboten). Nie projektübergreifend. Ob auch die übrigen Verträge + im selben PFA durchsucht werden, ist offen. +- **Daten:** Jedes LV liegt als GAEB (X86 und D86) und als PDF vor, erzeugt aus dem + Kalkulationsprogramm. Grundlage ist die X86-Datei (strukturiert, ohne Texterkennung); das PDF + dient der Anzeige mit Sprung zur Fundstelle. OCR über die KI-API braucht es nur noch für + PDFs ohne GAEB-Datei (Anschreiben, Scans). +- **Sprachmodell ist vorhanden** (`chat`, `chat-noreasoning`, Kontext laut ITM 128K). Damit ist + die KI-Beurteilung (Stufe 2) fest eingeplant. +- **Bewertungsmatrix (Excel der DB) und Stellungnahme (Word) sind Optionen**, nicht Kern von + Phase 1. Vorlagen kommen von BauIn. +- **Die Prüfung der Höhe nach ist Phase 2**, das Regelwerk mit Chat Phase 3 (siehe unten). +- **Zusammenarbeit:** Termine freitags über Teams; nächster Termin am **16.10.2026** mit + Statusbericht und Kostenrahmen für Phase 1. + ## Rahmen und Annahmen -- **Ziel des MVP:** Nachtragsprüfung „dem Grunde nach“ am Pilotprojekt, von der hochgeladenen - MKA bis zur exportierten Bewertungsmatrix, mit Rollen und Rechten, Protokoll und lokalem Betrieb. -- **Nicht im MVP:** Prüfung der Höhe nach (inkl. Mengenvergleich aus D11), DMS und E-Mail-Anbindung, - Österreich, Bauzeitenplan-Analyse (siehe „Später“). -- **Aufwand:** rund 25 Personenwochen (PW), mit Risikopuffer 28–29 PW. +- **Ziel von Phase 1:** Positionsanalyse dem Grunde nach am Pilotprojekt. Vom hochgeladenen + Nachtrag bis zur Ergebnisliste je Position mit Fundstellen, Begründung und Entscheidung des + Bearbeiters, mit Rollen und Rechten, Protokoll und Betrieb auf den Servern von ITM. +- **Grundhaltung:** Die KI schlägt vor und belegt mit Fundstellen, der Mensch entscheidet. + Rückmeldungen fließen in ein Confidence-System mit Referenzfällen und Regeln. +- **Aufwand:** Kern rund 24 Personenwochen (PW), mit Risikopuffer 27–28 PW. Optionen + zusätzlich (siehe Arbeitspakete). - **Team (Annahme):** zwei Entwickler mit KI-Unterstützung. - **A** (du): Backend, KI-Anbindung, Suche, Prüflogik - - **B** (Kollege): Oberfläche mit TallStackUI, GAEB-Import, Betrieb - - Mit nur einem Entwickler verdoppelt sich die Dauer ab Phase 2 (siehe Variante unten). + - **B** (noch zu klären): Oberfläche mit TallStackUI, GAEB-Import, Betrieb + - Mit nur einem Entwickler verdoppelt sich die Dauer ab KW 44 (siehe Variante unten). - **Pause:** KW 52–53 (21.12.2026 – 03.01.2027). -- **Abhängigkeit:** Viele Pakete brauchen Zulieferungen von ITM (KI-API) und BauIn (Fachdaten, - Fachexperte). Kommen sie später als unten geplant, verschiebt sich der Plan entsprechend. +- **Echte Daten:** Entwickelt wird mit öffentlichen GAEB-Beispieldateien und einem + anonymisierten Beispielablauf von BauIn. Echte Pilotdaten nur auf den Servern von ITM und + erst nach Klärung des Datenschutzes. +- **Abhängigkeit:** Viele Pakete brauchen Zulieferungen von ITM und BauIn. Kommen sie später als + unten geplant, verschiebt sich der Plan entsprechend. ## Meilensteine | | Termin | Ergebnis | Termin mit dem Kunden | |---|---|---|---| -| **M1** | Ende KW 43 (23.10.) | Grundgerüst: Login/2FA, Benutzer und Rollen, Projekte und Lose, Upload, Protokoll; Detailplan steht | Demo (30 min) | -| **M2** | Ende KW 47 (20.11.) | Pilot-LVs importiert und durchsuchbar, erste ~5 Dokumente gemeinsam mit „passt / passt nicht“ bewertet; Staging bei ITM läuft | Prüftermin (60 min) | -| **M3** | Ende KW 51 (18.12.) | Erste MKA durchgängig: Vorschläge, Feedback, Regeln, Excel-Export | Präsentation (60–90 min) | -| **M4** | Ende KW 4/2027 (29.01.) | Alle Pilot-MKAs durchlaufen, Trefferquote und Zeitersparnis gemessen; Produktion abgesichert | Abschlusspräsentation, Entscheidung über Ausbau | -| Puffer | KW 5–6/2027 | für Verzögerungen bei Zulieferungen oder GAEB-Import | – | +| – | Fr 16.10. | Statusbericht mit Screenshots, Plan, Kostenrahmen, offene Fragen | Termin BauIn | +| **M1** | Fr 30.10. (KW 44) | Grundgerüst: Login/2FA, Benutzer und Rollen, Projekte mit PFA und Verträgen, Upload, Protokoll; Detailplan steht | Demo (30 min) | +| **M2** | Fr 20.11. (KW 47) | LVs des Pilot-PFA importiert; **LV-Suche** über alle LVs eines Vertrags, PFA oder Projekts mit Sprung ins PDF nutzbar; Staging bei ITM läuft | Prüftermin (60 min) | +| **M3** | Fr 18.12. (KW 51) | Erster Nachtrag durchgängig: Vorprüfung aller Positionen, Prüfmaske, Feedback, Regeln, Ergebnisliste | Präsentation (60–90 min) | +| **M4** | Fr 29.01.2027 (KW 4) | Alle Nachträge des Pilot-PFA durchlaufen, Trefferquote und Zeitersparnis gemessen; Produktion abgesichert | Abschluss, Entscheidung über Optionen und Phase 2 | +| Puffer | KW 5–6/2027 | für Verzögerungen bei Zulieferungen oder Import | – | -**Laufend:** wöchentlich 30 min Jour fixe mit dem Fachexperten; alle zwei Wochen eine kurze Demo -(KW 43, 45, 47, 49, 51, 2, 4). +Die LV-Suche (M2) nützt BauIn schon vor der KI-Beurteilung: Heute werden bis zu 28 LVs einzeln +nach Stichworten durchsucht. + +**Laufend:** Termine mit BauIn freitags, etwa alle zwei Wochen, vorher ein kurzer Statusbericht +mit Screenshots. ## Arbeitspakete und Aufwand | AP | Inhalt | PW | Wer | Wann | Hängt ab von | |---|---|---|---|---|---| -| AP0 | Klärung, Kundentermine, Jour fixe, Dokumentation | 1,0 | A+B | laufend | – | -| AP1 | Fundament: Umgebung ✓, Laravel/TallStackUI ✓, Mehrsprachigkeit ✓, CI, Datenmodell (Mandant, Land, Projekt, Los, Dokument), Rollen/Rechte mit Benutzerverwaltung, privater Upload und Download, Protokoll, Länderstruktur | 4,0 (1,0 erledigt) | A+B | KW 40–43 | Rollenmodell (Kunde) | -| AP2 | Meilisearch-Test: Teil 1 mit erzeugten Vektoren, Teil 2 mit echten Vektoren und Referenzfällen | 0,5 | A | KW 41 / KW 46–47 | Teil 2: API-Zugang (ITM), Referenz-MKAs (BauIn) | -| AP3 | Anbindung KI-API ITM: Client für OCR, Embeddings, Reranker (+ LLM), Jobs mit Wiederholung und Status, Überwachung, ggf. Webhook-Eingang | 1,5 | A | KW 44–45 | API-Doku und Testzugang (ITM) | -| AP4 | Dokumentverarbeitung und Suche: OCR → Abschnitte → Embeddings → MySQL + Meilisearch, Neuaufbau des Index, hybride Suche mit Pflichtfilter für Rechte | 2,0 | A | KW 45–47 | AP3 | -| AP5 | GAEB-Import (D86/X86): Parser, LV-Baum, Vorbemerkungen, LV-Ansicht, MKA-Import (PDF + GAEB) | 2,5 | B | KW 44–46 | Beispieldateien | -| AP6 | Prüfassistent Stufe 1 (ohne LLM): Vergleichspositionen mit Reranker, Prüfmaske, Feedback je Aspekt, Confidence | 2,5 | A+B | KW 48–49 | AP4, AP5 | -| AP7 | Prüfassistent Stufe 2 (mit LLM): Prompts, strukturierte Antwort, Prüfung der Antwort, Begründung mit Quellen | 2,0 | A | KW 50–51 | LLM-Zugang (ITM) | +| AP0 | Klärung, Kundentermine, Statusberichte, Dokumentation | 1,0 | A+B | laufend | – | +| AP1 | Fundament: Umgebung ✓, Laravel/TallStackUI ✓, Mehrsprachigkeit ✓, CI, Datenmodell (Mandant, Land, Projekt, PFA, Vertrag, LV, Dokument, Nachtrag, Nachtragsposition), Rollen/Rechte mit Benutzerverwaltung, privater Upload und Download inkl. Massen-Upload, Protokoll, Länderstruktur | 4,0 (1,0 erledigt) | A+B | KW 40–44 | Rollenmodell (Kunde) | +| AP2 | Meilisearch-Test: Teil 1 mit erzeugten Vektoren, Teil 2 mit echten Vektoren und Referenzfällen | 0,5 | A | KW 41 / KW 46–47 | Teil 2: API-Schlüssel (ITM), Referenzfälle (BauIn) | +| AP3 | Anbindung KI-API ITM (API-Werk): Dokumentdienst mit Polling, `embed`, `rerank`, `chat` mit Streaming; Ratenbegrenzung (120/min je Schlüssel), begrenzte Wiederholung ohne Doppel-Einreichung, Verbrauchsprotokoll, Überwachung | 1,5 | A | KW 41 (Test), KW 44 | API-Schlüssel (ITM) | +| AP4 | Indexierung und Suche: LV-Positionen und Vorbemerkungen aus GAEB, Texte aus PDFs ohne GAEB → Embeddings → MySQL + Meilisearch; hybride LV-Suche mit Pflichtfilter für Rechte und Suchreihenfolge (Vertrag → PFA → Projekt); Neuaufbau des Index | 2,0 | A | KW 45–47 | AP3, AP5 | +| AP5 | GAEB-Import (X86): Parser, LV-Baum, Vorbemerkungen, LV-Ansicht; PDF-Anzeige (pdf.js lokal) mit Sprung zur Position; Nachtrags-Import (Nachtrags-LV als X86, sonst PDF über OCR) | 2,5 | B | KW 41 (Test), KW 44–46 | Beispieldateien | +| AP6 | Vorprüfung Stufe 1 (ohne Sprachmodell): je Nachtragsposition Fundstellen mit Reranker, Nachtragsübersicht, Prüfmaske, Feedback je Aspekt, Confidence | 2,5 | A+B | KW 48–49 | AP4, AP5 | +| AP7 | Vorprüfung Stufe 2 (mit Sprachmodell): „im Vertrag enthalten?“, Bezugsposition und Unterschied bei geänderter Leistung, Begründung mit Quellen, Prüfung der Antwort | 2,0 | A | KW 50–51 | AP6 | | AP8 | Regeln, Referenzfälle, einstellbare Freigaben, Versionen | 2,0 | B | KW 50–51 | Freigabe-Variante (Kunde) | -| AP9 | Bewertungsmatrix, MKA-Status, Freigabe durch Projektleiter, Excel-Export | 1,0 | B | KW 51 | Matrix-Vorlage | -| AP10 | Wissensbasis-Oberfläche, Dashboard, Benachrichtigungen, Auswertungen | 1,0 | B | KW 47, KW 2 | – | -| AP11 | Betrieb: Staging und Produktion (Nginx, PHP-FPM, systemd, Cron, Meilisearch), Deployment, verschlüsselte Backups, Alarmierung, Restore-Test | 1,5 | B | KW 46–47, KW 3 | VMs, Backup-Ziel | -| AP12 | Pilot: alle MKAs durchlaufen, messen, nachschärfen (Prompts, Gewichtung, Quantisierung) | 2,0 | A+B | KW 1–3/2027 | Referenzfälle, Fachexperte | +| AP9 | Nachtragsstatus, Ergebnisliste je Nachtrag, einfacher Excel-Export | 0,5 | B | KW 51 | – | +| AP10 | Dashboard, Benachrichtigungen, Auswertungen, allgemeine Dokumente (Einstellungen) | 0,75 | B | KW 47, KW 2 | – | +| AP11 | Betrieb: Staging und Produktion (Nginx, PHP-FPM, systemd, Cron, Meilisearch), Deployment, verschlüsselte Backups, Alarmierung, Restore-Test | 1,5 | B | KW 46–47, KW 3 | Server (ITM), Backup-Ziel | +| AP12 | Pilot: alle Nachträge des Pilot-PFA durchlaufen, messen, nachschärfen (Prompts, Gewichtung, Quantisierung) | 2,0 | A+B | KW 1–3/2027 | Referenzfälle, Fachexperte | | AP13 | Design aus Claude Design als TallStackUI-Designsystem übernehmen | 1,0 | B | KW 42–43 | Designentwurf | -| | **Summe** | **≈ 24,5** | | | | +| | **Summe Kern** | **≈ 23,75** | | | | +| OP1 | Option: Bewertungsmatrix in der Excel-Vorlage der DB füllen | 1,0 | B | KW 2–3 | Vorlage (BauIn) | +| OP2 | Option: Stellungnahme BÜW als Word-Datei aus Vorlage | 1,0 | B | nach M4 oder Puffer | Vorlage (BauIn) | + +Gegenüber dem Stand vom 01.10. entfallen der GAEB-90-Import (D86), der Webhook-Eingang, der +Vorschlag einer Anspruchsgrundlage und die kuratierte Wissensbasis (wird Phase 3). Dazu kommen +PDF-Anzeige mit Sprung zur Position, Massen-Upload, Suchreihenfolge über PFAs und die Bezugsposition. ## Zeitplan nach Kalenderwochen (2 Entwickler) | KW | Datum | A (Backend, KI, Suche) | B (Oberfläche, Import, Betrieb) | Kunde / gemeinsam | |---|---|---|---|---| -| 40 | 28.09.–04.10. | ✓ Umgebung, Grundgerüst, TallStackUI, Mehrsprachigkeit, Doku | – | – | -| 41 | 05.–11.10. | Meilisearch-Test Teil 1; Datenmodell Kern | CI in Gitea Actions; Benutzerverwaltung beginnen | Fragenliste raus, Termin vereinbaren; Claude Design Durchgang 1 | -| 42 | 12.–18.10. | Upload, privater Speicher, Download mit Rechteprüfung, Vertraulichkeit | Rollen und Rechte, Projekt-Mitglieder; Design-Feedback | **Kundentermin** + Lauffenburg-Walkthrough | -| 43 | 19.–25.10. | Detailplan nach Kundenantworten; Protokoll; Länderstruktur | Designsystem übernehmen (AP13) | **M1 Demo** | -| 44 | 26.10.–01.11. | Client KI-API ITM, Jobs, Status | GAEB-Parser | – | -| 45 | 02.–08.11. | Überwachung, Webhook-Eingang (falls nötig); Dokumentverarbeitung | GAEB: LV-Baum, Vorbemerkungen, LV-Ansicht | Demo | -| 46 | 09.–15.11. | Embeddings → MySQL + Meilisearch; Meilisearch-Test Teil 2 | MKA-Import; Staging einrichten | – | -| 47 | 16.–22.11. | Hybride Suche mit Rechte-Filter, Neuaufbau des Index | Wissensbasis-Oberfläche; Staging fertig | **M2 Prüftermin** (erste ~5 Dokumente) | -| 48 | 23.–29.11. | Vergleichspositionen + Reranker, Confidence | Prüfmaske | – | -| 49 | 30.11.–06.12. | Feedback-Speicherung, Referenzfälle | Prüfmaske fertig, Feedback-Oberfläche | Demo | -| 50 | 07.–13.12. | LLM-Beurteilung: Prompts, strukturierte Antwort | Regeln: Dialog, Freigaben, Einstellungen | – | -| 51 | 14.–20.12. | Begründung mit Quellen, Prüfung der Antwort | Bewertungsmatrix, Excel-Export | **M3 Präsentation** | +| 40 | 28.09.–04.10. | ✓ Umgebung, Grundgerüst, TallStackUI, Mehrsprachigkeit, Doku | – | ✓ Besprechung BauIn (02.10.) | +| 41 | 05.–11.10. | Meilisearch-Test Teil 1; Datenmodell Kern; API-Schnelltest, sobald Schlüssel da | CI in Gitea Actions; Benutzerverwaltung beginnen; GAEB-X86-Test mit öffentlichen Beispieldateien | Fragenkatalog raus; Übergabe an Claude Design | +| 42 | 12.–18.10. | Upload, privater Speicher, Download mit Rechteprüfung, Massen-Upload | Rollen und Rechte, Projekt-Mitglieder; Design-Feedback | Aufwand an ITM (bis 14.10.); **Termin BauIn 16.10.** | +| 43 | 19.–25.10. | Detailplan und Teilpläne nach den Antworten; Protokoll; Länderstruktur | Designsystem übernehmen (AP13) | – | +| 44 | 26.10.–01.11. | Client KI-API ITM, Jobs, Ratenbegrenzung | GAEB-Parser: LV-Baum, Vorbemerkungen | **M1 Demo 30.10.** | +| 45 | 02.–08.11. | Indexierung: Positionen und Vorbemerkungen → Embeddings | LV-Ansicht, PDF-Anzeige mit Sprung zur Position | – | +| 46 | 09.–15.11. | Hybride LV-Suche mit Rechtefilter und Suchreihenfolge; Meilisearch-Test Teil 2 | Nachtrags-Import; Staging einrichten | – | +| 47 | 16.–22.11. | Neuaufbau des Index; OCR für PDFs ohne GAEB | Suchoberfläche; Staging fertig, Pilot-PFA importiert | **M2 Prüftermin 20.11.** | +| 48 | 23.–29.11. | Vorprüfung: Fundstellen + Reranker, Confidence | Nachtragsübersicht, Prüfmaske | – | +| 49 | 30.11.–06.12. | Feedback-Speicherung, Referenzfälle | Prüfmaske fertig, Feedback-Oberfläche | Demo 04.12. | +| 50 | 07.–13.12. | Sprachmodell: „enthalten?“, Bezugsposition, strukturierte Antwort | Regeln: Dialog, Freigaben, Einstellungen | – | +| 51 | 14.–20.12. | Begründung mit Quellen, Prüfung der Antwort | Ergebnisliste, Excel-Export | **M3 Präsentation 18.12.** | | 52–53 | 21.12.–03.01. | Pause | Pause | – | -| 1 | 04.–10.01. | Pilot: alle MKAs durchlaufen, messen | Pilot begleiten, Fehler beheben | Fachexperte bewertet | -| 2 | 11.–17.01. | Nachschärfen (Prompts, Gewichtung, Quantisierung) | Dashboard, Auswertungen, Benachrichtigungen | Demo | +| 1 | 04.–10.01. | Pilot: alle Nachträge des Pilot-PFA durchlaufen, messen | Pilot begleiten, Fehler beheben | Fachexperte bewertet | +| 2 | 11.–17.01. | Nachschärfen (Prompts, Gewichtung, Quantisierung) | Dashboard, Auswertungen; Option OP1, falls beauftragt | Demo 15.01. | | 3 | 18.–24.01. | Feinschliff, Fehler | Produktion: Backups, Alarmierung, Restore-Test | – | -| 4 | 25.–31.01. | Auswertung, Übergabe | Doku Betrieb | **M4 Abschluss** | +| 4 | 25.–31.01. | Auswertung, Übergabe | Doku Betrieb | **M4 Abschluss 29.01.** | | 5–6 | 01.–14.02. | Puffer | Puffer | – | -**Variante mit einem Entwickler:** M1 Ende KW 44, M2 Ende KW 51, M3 Ende KW 8/2027, +**Variante mit einem Entwickler:** M1 Ende KW 45, M2 Ende KW 51, M3 Ende KW 8/2027, M4 Ende KW 13/2027 (Anfang April). ## Zulieferungen von ITM und BauIn (Soll-Termine) | Bis | Von | Was | Gebraucht für | |---|---|---|---| -| KW 41 | ITM | API-Dokumentation der KI-API (OCR, Embedding, Reranker, ggf. Sprachmodell) | AP3 | -| KW 41 | BauIn, ITM | Antworten auf die ★-Fragen, Termin | Detailplan | -| KW 42 | BauIn | Beispieldateien (GAEB, MKA als PDF + GAEB, Matrix-Vorlage), Kopie der relevanten Lauffenburg-Dateien | AP5, AP9 | -| KW 43 | ITM | Testzugang zur KI-API (OCR, Embedding, Reranker; Sprachmodell falls vorhanden) | AP3 | -| KW 43 | BauIn | Entscheidung Rollenmodell, Freigabe-Variante, 2FA-Pflicht | AP1, AP8 | +| ✓ 02.10. | ITM | API-Dokumentation (API-Werk: Dokumentdienst, `chat`, `chat-noreasoning`, `embed`, `rerank`) | AP3 | +| KW 41 | ITM | API-Schlüssel für die Entwicklung; Antworten auf die ITM-Fragen; Preise der API für den Kostenrahmen | AP3, Kostenrahmen | +| KW 41 | BauIn | Antworten auf die ★-Fragen | Detailplan | +| 16.10. | BauIn | Matrix-Vorlage (leer + 2–3 ausgefüllt), Word-Vorlage Stellungnahme, anonymisierter Beispielablauf (LVs als X86 + PDF, Nachträge mit Nachtrags-LV und Anschreiben) | AP5, AP9, OP1, OP2 | +| KW 43 | BauIn | Entscheidung Rollenmodell, Freigabe-Variante, Anmeldung (2FA oder Microsoft-Konto) | AP1, AP8 | +| KW 43 | BauIn, ITM | Freigabe Datenschutz für echte Pilotdaten auf den Servern von ITM und über die KI-API | AP11, M2 | | KW 46 | ITM | Staging-Server mit Zugang, Domain und Zertifikat | AP11, M2 | -| KW 47 | BauIn | 10–20 abgeschlossene MKAs mit Bewertung (Referenzfälle) | AP2 Teil 2, AP12 | -| KW 48 | BauIn | Kuratierte Wissensbasis (VOB, DB-Richtlinien, Standardleistungstexte, Vorlagen) | AP4, AP7 | +| KW 46 | BauIn | Pilotdaten: alle LVs eines PFA als X86 + PDF (nur auf Staging) | M2 | +| KW 47 | BauIn | 10–20 abgeschlossene Nachträge mit Ergebnis (Referenzfälle) | AP2 Teil 2, AP12 | | KW 51 | ITM | Produktions-Server mit Zugang, Domain und Zertifikat | AP11 | | KW 51 | offen | Backups: Speicherort, Aufbewahrungsdauer, Zuständigkeit | AP11 | @@ -104,12 +158,14 @@ M4 Ende KW 13/2027 (Anfang April). | Risiko | Auswirkung | Gegenmaßnahme | |---|---|---| -| Zulieferungen kommen spät | Pakete verschieben sich | Soll-Termine früh vereinbaren; vorziehen, was unabhängig ist | -| ITM bietet kein Sprachmodell an | AP7 entfällt vorerst | Stufe 1 (Suche + Reranker) ist allein schon nützlich; Zeit in AP8/AP10 umschichten | -| GAEB 90 (D86) statt XML | GAEB-Import aufwendiger | Beispieldatei früh anfordern; fertige Bibliothek prüfen | +| Zulieferungen kommen spät | Pakete verschieben sich | Soll-Termine am 16.10. vereinbaren; vorziehen, was unabhängig ist | +| Kein anonymisierter Beispielablauf, Datenschutz für echte Daten ungeklärt | Kein realistischer Test vor M2 | Öffentliche GAEB-Beispiele; früh anfragen; echte Daten nur auf Staging | +| X86-Dateien weichen vom Standard ab (Version, Erweiterungen des Kalkulationsprogramms) | GAEB-Import aufwendiger | Beispieldatei früh anfordern; fertige Bibliothek prüfen; D86 als Rückfall | +| Sprachmodell liefert keine verlässliche strukturierte Antwort | Stufe 2 schwächer | Antwort im Code prüfen; Stufe 1 (Suche + Reranker) ist allein schon nützlich | | Meilisearch mit 4.096 Dimensionen zu langsam | Suche muss umgebaut werden | Test in KW 41; Plan B Qdrant | -| KI-API ITM ausgelastet | Lange Wartezeiten | Alles asynchron; Priorität für Suchanfragen bei ITM erfragen; Cache | -| Fachexperte wenig verfügbar | Kein Feedback, keine Messung | Feste Jour-fixe-Termine; Referenzfälle früh anfordern | +| KI-API ausgelastet (120 Anfragen/min je Schlüssel, für alle Nutzer gemeinsam) | Lange Wartezeiten bei Erstindexierung und Suche | Alles asynchron; Stapel-Embeddings; Suchanfragen bevorzugen; ggf. getrennte Schlüssel | +| Excel-Vorlage der DB enthält Makros | Export kann Makros verlieren (OP1) | Vorlage früh testen; notfalls Werte zum Einfügen exportieren | +| Fachexperte wenig verfügbar | Kein Feedback, keine Messung | Feste Freitagstermine; Referenzfälle früh anfordern | ## Aufgabenliste (nächste zwei Wochen) @@ -118,39 +174,51 @@ M4 Ende KW 13/2027 (Anfang April). - [x] Laravel 13, Livewire 4, TallStackUI 4, Fortify (2FA, Passkeys), Spatie - [x] Mehrsprachigkeit (Deutsch Standard, Englisch) - [x] CLAUDE.md, Tech-Stack-Doku, Projektplan +- [x] Besprechung mit BauIn (02.10.), API-Dokumentation von ITM erhalten **KW 41** -- [ ] Fragenliste an den Kunden schicken, Termin für KW 42 vereinbaren (inkl. Lauffenburg-Walkthrough) -- [ ] API-Dokumentation bei ITM, Beispieldateien bei BauIn anfordern -- [ ] Claude Design: Durchgang 1 (Designsystem, Layout, Prüfmaske, Regeldialog) +- [ ] Fragenkatalog an BauIn (fachlich, IT) und ITM schicken +- [ ] Übergabe an Claude Design: Prototyp an den neuen Umfang anpassen +- [ ] API-Schlüssel für die Entwicklung bei ITM anfordern; Schnelltest (Modellverzeichnis, + Dimension von `embed`, `rerank`, `chat` mit Streaming) - [ ] **Meilisearch-Test Teil 1** (erzeugte 4.096-dim. Vektoren, z. B. 50.000 Stück): Indexierungszeit, Antwortzeit mit Filtern, RAM und Platte; jeweils ohne und mit binärer Quantisierung -- [ ] Datenmodell Kern: Mandant, Land, Projekt, Los, Dokument (Kategorie, Vertraulichkeit), Mitgliedschaften +- [ ] Datenmodell Kern: Mandant, Land, Projekt, PFA, Vertrag, LV, Dokument (Kategorie, + Vertraulichkeit), Nachtrag, Nachtragsposition, Mitgliedschaften +- [ ] GAEB-X86-Test mit öffentlichen Beispieldateien, Bibliothek auswählen - [ ] CI in Gitea Actions: Tests, Pint, PHPStan - [ ] Commits nach Gitea pushen **KW 42** -- [ ] Kundentermin durchführen, Antworten in Plan und Doku übernehmen +- [ ] Aufwand für den Kostenrahmen an ITM (bis 14.10.) +- [ ] Statusbericht mit Screenshots für den 16.10. +- [ ] **Termin BauIn 16.10.:** Antworten in Plan und Doku übernehmen, Soll-Termine vereinbaren - [ ] Rollen und Rechte (Spatie, ggf. Teams je Projekt), Benutzerverwaltung im Admin-Bereich -- [ ] Upload, privater Speicher, Download mit Rechteprüfung -- [ ] Design-Feedback an Claude Design, Durchgang 2 +- [ ] Upload, privater Speicher, Download mit Rechteprüfung, Massen-Upload +- [ ] Design-Feedback an Claude Design **Später im Plan (bereits vorgemerkt)** +- [ ] Detailplan mit Teilplänen je Arbeitspaket (KW 43) - [ ] **Meilisearch-Test Teil 2** (KW 46–47): Trefferquote mit echten API-Vektoren und Referenzfällen, ohne/mit binärer Quantisierung, vor und nach dem Reranker - [ ] Push-Mirror zum Gitea von ITM einrichten, sobald die Adresse vorliegt -- [ ] 2FA-Pflicht umsetzen, falls der Kunde das entscheidet +- [ ] 2FA-Pflicht oder Microsoft-Anmeldung umsetzen, je nach Entscheidung des Kunden -## Später (nicht im MVP) +## Ausbaustufen nach Phase 1 -- Prüfung der Höhe nach, inkl. Mengen- und Preisvergleich (D11) -- Dokumentenmanagement, E-Mail-/Exchange-Anbindung -- Österreich (ÖNORM B 2110/B 2118, ÖNORM A 2063) -- Bauzeitenplan-Analyse -- Weitere Sprachen +- **Phase 2 – Prüfung der Höhe nach:** Preis der Nachtragsposition gegen Bezugsposition und + gleiche Leistung in anderen PFAs, Auszüge aus der Urkalkulation, Nachtragskalkulation. Die + vollständige Urkalkulation liegt versiegelt bei der DB; dort prüft der Einkauf die Höhe. +- **Phase 3 – Regelwerk:** Richtlinien der DB (Auszug, mit dem BauIn zu rund 80 % arbeitet: + 263 PDF-Dateien, 743 MB, z. B. Ril 821, 824, 836) in die Suche aufnehmen, dazu ein interner + Chat, der mit PDF, Seite und Stelle zitiert. Phase 1 legt die Grundlagen: Dokumentspeicher, + Abschnitte mit Seitenbezug, Quellenanzeige im PDF. +- **Weitere Ideen:** Dokumentenmanagement, E-Mail-Anbindung, Anbindung an das + Dokumentensystem der DB, Österreich (ÖNORM B 2110/B 2118, ÖNORM A 2063), + Bauzeitenplan-Analyse, weitere Sprachen. ## Nebenprojekt außerhalb des Budgets - **datenschleuse** (lokaler Scanner/Bereiniger, Prompt in `Prompt_Datenschleuse.md`): mindestens Phase 1–2 fertig, bevor echte Kundendateien mit Claude bearbeitet werden. Bis dahin - gehen echte Kundendateien nicht an Claude. + gehen echte Kundendateien nicht an Claude. Hilft auch beim anonymisierten Beispielablauf. diff --git a/docs/tech-stack.md b/docs/tech-stack.md index 81ea23e..0a2cc5b 100644 --- a/docs/tech-stack.md +++ b/docs/tech-stack.md @@ -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]