# 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)*