gateway/docs/althaus-bot-v2-aufwandsschaetzung.md
Stephan Schellworth ea566c270f docs: add gateway docs and Cursor plan artifacts
Made-with: Cursor
2026-04-22 07:21:43 +02:00

18 KiB

Aufwandsschätzung Althaus Bot v2 -- Unabhängige Analyse

Projekt: Althaus Bot v2 -- Weiterentwicklung & neue Use Cases
Kunde: W. Althaus AG, Aarwangen
Erstellt: 13. April 2026
Basis: Code-Analyse Gateway-Repository + Offerte v2 vom 14.04.2026
Methodik: Bottom-Up-Schätzung auf Basis der bestehenden Implementierung, Dreipunktschätzung (Min / Mitte / Max)


1. Ist-Zustand der Implementierung

1.1 Architekturübersicht

┌─────────────────────────────────────────────────────────────────┐
│  React Frontend (SSE-Streaming, Chat-UI)                        │
└──────────────────────────┬──────────────────────────────────────┘
                           │ /api/chatbot/*
┌──────────────────────────▼──────────────────────────────────────┐
│  Gateway (Python/FastAPI)                                        │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │  Chatbot Feature (modules/features/chatbot/)            │    │
│  │  ┌─────────┐  ┌──────────┐  ┌──────────┐  ┌────────┐  │    │
│  │  │ Planner │→ │ SQL Plan │→ │ Parse &  │→ │Formul. │  │    │
│  │  │  Node   │  │   Node   │  │ Execute  │  │  Node  │  │    │
│  │  └────┬────┘  └──────────┘  └────┬─────┘  └────────┘  │    │
│  │       │                          │                      │    │
│  │       ├→ Tavily (Web Search)     │                      │    │
│  │       └→ Direct Answer           │                      │    │
│  └──────────────────────────────────┼──────────────────────┘    │
│                                     │                            │
│  ┌──────────────────────────────────▼──────────────────────┐    │
│  │  PreprocessorConnector (HTTP POST → Azure SQL API)      │    │
│  └─────────────────────────────────────────────────────────┘    │
│                                                                  │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │  KnowledgeService (pgvector/RAG) -- NICHT IM CHATBOT    │    │
│  │  Produktiv im AgentService + CommCoach                   │    │
│  └─────────────────────────────────────────────────────────┘    │
└──────────────────────────────────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────┐
│  Azure Preprocessing Server (deployed, ERP-Daten deaktiviert)   │
│  Tabellen: Artikel, Einkaufspreis, Lagerplatz, Lagerplatz_Art.  │
│  Repo: github.com/valueonag/gateway_preprocessing               │
└─────────────────────────────────────────────────────────────────┘

1.2 Vorhandene Komponenten (Wiederverwendung)

Komponente Datei / Modul Status Wiederverwendbar für
LangGraph-Workflow chatbot/chatbot.py Produktiv (deaktiviert) Alle Positionen -- Grundgerüst
PreprocessorConnector connectors/connectorPreprocessor.py Produktiv (deaktiviert) Pos. 1, 2, 3, 4 -- SQL-Abfragen
ChatbotConfig chatbot/config.py Produktiv Alle -- Konfiguration pro Instanz
Streaming-Bridge chatbot/service.py Produktiv Alle -- SSE ans Frontend
ChatbotDocument chatbot/interfaceFeatureChatbot.py Implementiert Pos. 1.4, 2.1, 2.5 -- File-Handling
KnowledgeService/RAG serviceCenter/services/serviceKnowledge/ Produktiv (AgentService) Pos. 5 -- Wiki-Integration
Automation-Template automation/subAutomationTemplates.py Produktiv Pos. 6 -- Preprocessor-Updates
SQL-Sanitize chatbot.py_sanitize_sql_typos Produktiv Pos. 1.1 -- Gesperrte Artikel
Markdown-Tabellen chatbot.py_tool_output_to_markdown_table Produktiv Pos. 1.3, 3.3 -- Darstellung
File-Upload Backend service.py_convert_file_ids_to_document_references Implementiert Pos. 1.4 -- Upload-Pipeline
Excel-Export service.py_create_chat_document_from_action_document Implementiert Pos. 2.5 -- Kalktool-Export

1.3 Fehlende Komponenten (Neuentwicklung)

Komponente Benötigt für Komplexität
Matching-Engine (exakt → fuzzy → KI) Pos. 2.2 Hoch
Neuer Planner-Pfad "WIKI" Pos. 5.2 Mittel
KnowledgeService → Chatbot Integration Pos. 5.2 Mittel
Wiki-Connector (API/Crawling) Pos. 5.1 Unbekannt (Wiki-abhängig)
Delta-Sync-Mechanismus Pos. 5.3 Mittel
Preprocessor: 8-10 neue Tabellen/Views Pos. 1.5, 3.1, 4.1 Mittel (Code-Änderung)
Frontend: File-Picker, Drag&Drop Pos. 1.4 Mittel
Frontend: Thread-Liste, Suchfunktion Pos. 1.2 Mittel
Kalktool-Excel-Format-Export Pos. 2.5 Mittel
Schwellenwert-Insights Pos. 4.5 Mittel

2. Detaillierte Aufwandsschätzung

Position 1: Basics (Plattform-Verbesserungen)

# Anforderung Offerte Min Mitte Max Begründung
1.1 Gesperrte Artikel filtern 4 3 4 4 System-Prompt + SQL-Sanitize-Regel. Kleine Änderung.
1.2 Chat-Verlauf speichern 12 12 14 16 Backend existiert. Frontend-Aufwand (Thread-Liste, Suche).
1.3 Längere Antworten 6 4 5 6 Streaming-Config + Frontend-Rendering.
1.4 Datei-Upload 16 16 18 20 Full-Stack: Drag&Drop + LangGraph-Integration + Extraktion.
1.5 Kundenartikelnummern 8 10 12 14 Preprocessor-Code + Prompt + Cross-Ref-Queries. ERP-abhängig.
1.6 Abklärungen & Testing 8 8 8 8 Standard.
Subtotal 54 53 61 68

Delta zur Offerte: +7h (Mitte) / +14h (Max)
Haupttreiber: Preprocessor-Erweiterung für Kundenartikelnummern (Pos. 1.5) erfordert Code-Änderung, nicht nur Config. Frontend-Aufwand bei Upload (Pos. 1.4) eher am oberen Ende.


Position 2: Use Case Kalktool

# Anforderung Offerte Min Mitte Max Begründung
2.1 Stücklisten-Upload & Extraktion 12 10 12 14 Nutzt Pos. 1.4. serviceExtraction vorhanden.
2.2 Artikelidentifikation & Matching 20 24 28 32 KRITISCH: Neue Matching-Engine, 3 Stufen, ERP-abhängig.
2.3 Automatische Feldergänzung 16 14 16 18 Preprocessor + Enrichment-Logik.
2.4 Alternativartikel-Vorschläge 12 12 14 16 KI-Vorschläge + Bestätigungs-Workflow im Chat.
2.5 Excel-Export (Kalktool-Format) 12 10 12 14 Basis existiert. Kalktool-Vorlage-Anpassung.
2.6 Erweiterbarkeit neue Felder 8 6 8 10 Config-gesteuertes Feld-Mapping.
2.7 Abklärungen & Testing 12 12 12 12 Kalktool-Vorlage, Testdaten, UAT.
Subtotal 92 88 102 116

Delta zur Offerte: +10h (Mitte) / +24h (Max)
Haupttreiber: Die Matching-Engine (Pos. 2.2) ist die komplexeste Neuentwicklung im gesamten Projekt. Mehrstufiges Matching (exakt → fuzzy → KI-gestützt) ohne bestehende Basis. Die Qualität hängt stark von der ERP-Datenqualität und der Vielfalt der Kunden-Stücklisten-Formate ab.


Position 3: Use Case Materialmanagement 1

# Anforderung Offerte Min Mitte Max Begründung
3.1 ERP-Daten erweitern 16 16 19 22 Preprocessor: Bestellungen, Wareneingänge, Aufträge. Code nötig.
3.2 System-Prompt Materialmanagement 8 6 8 10 Prompt-Engineering + SQL-Templates.
3.3 Transparente Statusübersicht 8 6 7 8 Markdown-Rendering existiert, Erweiterung nötig.
3.4 Auswirkungsanalyse & Empfehlungen 12 14 16 18 Cross-Table-Queries + KI-Analyse. Komplex.
3.5 Abklärungen & Testing 8 8 8 8 Standard.
Subtotal 52 50 58 66

Delta zur Offerte: +6h (Mitte) / +14h (Max)
Haupttreiber: Auswirkungsanalyse (Pos. 3.4) erfordert Multi-Table-Joins und KI-gestützte Bewertung, was über einfache SQL-Abfragen hinausgeht.


Position 4: Use Case Materialmanagement 2 (KPIs)

# Anforderung Offerte Min Mitte Max Begründung
4.1 ERP-Daten erweitern 16 16 19 22 Lagerjournal, Preishistorie. Aggregierte Views.
4.2 System-Prompt KPI-Analyse 8 6 8 10 Prompt-Engineering.
4.3 Liefertermintreue-Analyse 10 10 12 14 Zeitreihen, Lieferantenvergleich, komplexe SQL.
4.4 Preisentwicklungs-Analyse 10 10 11 12 Preishistorie, Abweichungsberechnung.
4.5 Automatisierte Insights 8 10 12 14 Schwellenwert-Warnungen, proaktive Erkennung. Neues Konzept.
4.6 Abklärungen & Testing 8 8 8 8 Standard.
Subtotal 60 60 70 80

Delta zur Offerte: +10h (Mitte) / +20h (Max)
Haupttreiber: Automatisierte Insights (Pos. 4.5) erfordern eine neue Logikschicht, die proaktiv Schwellenwerte überwacht und Empfehlungen generiert. Das ist im aktuellen Chat-Flow nicht vorgesehen.


Position 5: Use Case Wiki-Anbindung

# Anforderung Offerte Min Mitte Max Begründung
5.1 Wiki-Anbindung & Indexierung 16 16 20 24 KnowledgeService existiert. Wiki-Zugang UNBEKANNT.
5.2 RAG-Integration im Chatbot 12 12 14 16 Pattern existiert (AgentService), muss portiert werden.
5.3 Inkrementelle Aktualisierung 8 8 11 14 Delta-Sync stark Wiki-abhängig.
5.4 Abklärungen & Testing 8 8 9 10 Relevanz-Tuning ist iterativ.
Subtotal 44 44 54 64

Delta zur Offerte: +10h (Mitte) / +20h (Max)
Haupttreiber: Wiki-System ist unbekannt. Bei Wiki mit guter API (Confluence, SharePoint) sind 44h erreichbar. Bei proprietärem System ohne API steigt der Aufwand erheblich.

Synergie: KnowledgeService mit pgvector, Chunking, Embedding und semanticSearch ist bereits produktiv. Die RAG-Pipeline (Ingestion → Embedding → Retrieval) muss nicht neu gebaut werden. Das spart geschätzt 20-30h gegenüber einer Neuentwicklung.


Position 6: Azure-Migration

# Anforderung Offerte Min Mitte Max Begründung
6.1 Migration Preprocessor 6 4 6 8 Config-Änderungen, Env-Files, Netzwerk.
6.2 Validierung & Smoke-Tests 4 4 4 4 End-to-End-Tests.
Subtotal 10 8 10 12

Delta zur Offerte: 0h (Mitte)
Bewertung: Realistisch. Einfachste Position.


Position 7: Projektmanagement

# Anforderung Offerte Min Mitte Max Begründung
7.1 Kick-off & Workshop 4 4 4 4 Standard.
7.2 Projektmanagement 8 10 12 14 10-14 Wochen, 3 Ansprechpartner, 7 Positionen.
7.3 Deployment & Go-Live 6 6 7 8 Staging + Prod + erste Betriebswoche.
Subtotal 18 20 23 26

Delta zur Offerte: +5h (Mitte) / +8h (Max)
Haupttreiber: PM-Aufwand bei 3-Monats-Projekt mit mehreren Stakeholdern ist erfahrungsgemäss höher.


3. Gesamtübersicht

Pos. Beschreibung Offerte (h) Min (h) Mitte (h) Max (h) Offerte CHF Mitte CHF
1 Basics 54 53 61 68 8'100 9'150
2 Kalktool 92 88 102 116 13'800 15'300
3 Materialmanagement 1 52 50 58 66 7'800 8'700
4 Materialmanagement 2 60 60 70 80 9'000 10'500
5 Wiki-Anbindung 44 44 54 64 6'600 8'100
6 Azure-Migration 10 8 10 12 1'500 1'500
7 Projektmanagement 18 20 23 26 2'700 3'450
Gesamt 330 323 378 432 49'500 56'700

Zusammenfassung

Szenario Stunden CHF (à 150/h) Differenz zur Offerte
Offerte (Kostendach) 330 49'500 --
Eigene Schätzung (Minimum) 323 48'450 -2%
Eigene Schätzung (Mitte) 378 56'700 +15%
Eigene Schätzung (Maximum) 432 64'800 +31%

4. Risikobewertung

Risikomatrix

# Risiko Wahrscheinlichkeit Auswirkung Betroffene Pos. Möglicher Mehraufwand
R1 Matching-Engine komplexer als erwartet Hoch Hoch 2.2 +10-15h
R2 Wiki-System ohne API Mittel Hoch 5.1, 5.3 +10-20h
R3 ERP-Datenqualität mangelhaft Mittel Mittel 1.5, 2.2, 3.1, 4.1 +8-16h
R4 Preprocessor-Erweiterung aufwändiger Mittel Mittel 1.5, 3.1, 4.1 +8-12h
R5 Frontend-Aufwand unterschätzt Mittel Gering 1.2, 1.4 +4-8h
R6 KI-Modell-Qualität für SQL-Generierung Gering Mittel 3, 4 +4-8h

Synergien (Aufwandsreduktion durch bestehende Komponenten)

Synergie Geschätzte Einsparung Betroffene Pos.
KnowledgeService/RAG existiert produktiv 20-30h Pos. 5
ChatbotDocument-Modell existiert 4-6h Pos. 1.4, 2.1
LangGraph modular erweiterbar 6-10h Pos. 3, 4, 5
Prompt-Engineering über DB-Config 2-4h Pos. 1.1, 3.2, 4.2
Excel-Export-Pattern existiert 2-4h Pos. 2.5
Gesamt Einsparung 34-54h

5. Empfehlungen

5.1 Zur Offerte

Die Offerte mit 330h als Kostendach ist ambitioniert, aber bei idealem Verlauf erreichbar. Die grössten Risiken liegen in:

  • Position 2 (Kalktool): Die Matching-Engine ist die komplexeste Neuentwicklung
  • Position 5 (Wiki): Komplett abhängig vom Wiki-System, das noch unklärt ist

Empfehlung: Offerte bei 330h als Kostendach belassen, aber intern mit 370-380h planen. Die Differenz (~40-50h) als interne Reserve einkalkulieren.

5.2 Priorisierung

  1. Must-Have (Prio 1): Pos. 1 (Basics) + Pos. 6 (Azure-Migration) -- Voraussetzung für alles
  2. High-Value (Prio 2): Pos. 2 (Kalktool) -- Höchster Kundennutzen, aber auch höchstes Risiko
  3. Quick-Win (Prio 3): Pos. 3+4 (Materialmanagement) -- Nutzen vorhandene Architektur
  4. Abhängig (Prio 4): Pos. 5 (Wiki) -- Erst nach Wiki-Klärung starten

5.3 Offene Punkte (vor Projektstart zu klären)

# Offener Punkt Verantwortlich Kritisch für
O1 Wiki-System und Zugangsart klären Althaus (Samuel) Pos. 5
O2 ERP-System identifizieren und Datenstrukturen dokumentieren Althaus (Stefan) Pos. 1.5, 3.1, 4.1
O3 Preprocessor-Code-Review für Erweiterbarkeit PowerOn (Entwicklung) Pos. 1.5, 3.1, 4.1
O4 Kalktool-Vorlage erhalten und analysieren Althaus (Reto) Pos. 2.5
O5 Muster-Stücklisten für Matching-Test Althaus (Reto) Pos. 2.2
O6 Azure-Subscription-Details Althaus Pos. 6

6. Zeitplan (2 Entwickler)

Woche  1-2:   Kick-off + Azure-Migration (Pos. 6) + Basics 1.1-1.3
               Entwickler A: Azure-Migration + 1.1 (Gesperrte Artikel)
               Entwickler B: 1.2 (Chat-Verlauf Frontend) + 1.3 (Lange Antworten)

Woche  2-5:   Basics 1.4-1.6 (Grundlage für Use Cases)
               Entwickler A: 1.4 (File-Upload Full-Stack)
               Entwickler B: 1.5 (Kundenartikelnummern + Preprocessor)

Woche  4-9:   Kalktool (Pos. 2) -- längster Block, früh starten
               Entwickler A: 2.1-2.2 (Upload + Matching-Engine)
               Entwickler B: 2.3-2.5 (Feldergänzung + Export)

Woche  6-9:   Materialmanagement 1+2 (Pos. 3+4) -- parallel zum Kalktool
               Entwickler B: 3.1-3.4 + 4.1-4.5 (Preprocessor + Prompts)
               (Entwickler A bleibt auf Kalktool)

Woche  9-12:  Wiki-Anbindung (Pos. 5) -- nach Klärung des Wiki-Systems
               Entwickler A: 5.1-5.2 (Connector + RAG-Integration)
               Entwickler B: 5.3 (Delta-Sync) + Integrationstests

Woche 12-13:  Integrationstests, UAT, Go-Live (Pos. 7.3)
               Beide Entwickler: E2E-Tests + Deployment + Monitoring

Gesamtdauer: 12-14 Wochen
Kritischer Pfad: Pos. 1 → Pos. 2 (Kalktool braucht Upload + Kundenartikelnummern)


Dokument erstellt auf Basis der Code-Analyse des Gateway-Repository (Stand 13.04.2026)