# Komponentendiagramm: Kunden-Chatbot Althaus ## Übersicht Dieses Diagramm zeigt die High-Level-Architektur der Althaus Chatbot-Anwendung mit allen beteiligten Komponenten, Datenflüssen und Kommunikationswegen. ## Komponentendiagramm ```mermaid graph TB subgraph "PowerOn Chat UI" ChatUI[Chat Interface] end subgraph "PowerOn Platform" Gateway[Gateway Backend
Event Scheduler & Data Query API] GatewayDB[(PostgreSQL)] AIServices[Dynamic AI, Tavily] end subgraph "Tenant althaus-ag.ch" subgraph "PowerOn PreProcessing" PreProcessing[Pre-Processing Service] PreProcessingDB[(PostgreSQL
Memory DB)] end subgraph "MSFT Services" PowerBI[Power BI] TenantServices[Azure DC, DNA Center] end end %% Hauptkommunikation ChatUI -->|"Data Queries
User/Password Auth"| Gateway Gateway -->|"SQL Queries
X-PP-API-Key"| PreProcessing Gateway -->|"Config Update
Daily 01:00 UTC"| PreProcessing %% Datenfluss PowerBI -->|"Rohdaten"| PreProcessing PreProcessing --> PreProcessingDB PreProcessingDB -->|"Query Results"| Gateway Gateway --> ChatUI Gateway --> GatewayDB %% Styling classDef platform fill:#e1f5ff,stroke:#01579b,stroke-width:2px classDef frontend fill:#f3e5f5,stroke:#4a148c,stroke-width:2px classDef preprocessing fill:#fff3e0,stroke:#e65100,stroke-width:2px classDef customer fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px classDef database fill:#fce4ec,stroke:#880e4f,stroke-width:2px class Gateway,AIServices platform class ChatUI frontend class PreProcessing preprocessing class PowerBI,TenantServices customer class GatewayDB,PreProcessingDB database ``` ## Komponentenbeschreibungen ### 1. Gateway Backend (gateway.poweron-center.net) **Hauptkomponenten:** - **FastAPI Application**: Zentrale Backend-Anwendung der PowerOn Platform - **Event Scheduler (chatAlthaus)**: - Täglicher Scheduler um 01:00 UTC - Sendet Konfigurations-Updates an Pre-Processing Service - Verwendet `X-PP-API-Key` Header für Authentifizierung - **Configuration Management**: - Verwaltung von Secrets und Environment-Variablen - Verschlüsselung/Entschlüsselung von Secrets - Unterstützt verschiedene Umgebungen (dev, int, prod) - **Data Query API**: - `POST /api/v1/dataquery/query` - SQL Query ausführen - `GET /api/v1/dataquery/schema` - Datenbankschema abrufen - `GET /api/v1/dataquery/schema/{table_name}` - Tabellenschema abrufen - **PostgreSQL Database**: Zentrale Datenbank für Gateway-Daten **Technologie:** - Python/FastAPI - PostgreSQL - APScheduler für Event-Management **Externe AI-Services:** - **Dynamic AI**: LLM Service für AI-Anfragen - **Tavily**: Web-Such-Service für Web-Recherchen ### 2. PowerOn Chat UI (althaus-chat.poweron-center.net) **Hauptkomponenten:** - **React Application**: Frontend-Interface für den Chatbot - **Authentication**: User/Password-basierte Authentifizierung mit JWT-Token **Kommunikation:** - Nutzt 3 Data Query Endpunkte vom Gateway - Authentifiziert sich mit User/Password beim Gateway - Erhält Antworten über Gateway API **Technologie:** - React - REST API Calls ### 3. Tenant althaus-ag.ch #### 3.1 PowerOn PreProcessing **Hauptkomponenten:** - **FastAPI Application**: Pre-Processing Service im Azure-Tenant des Kunden - **Pre-Processing API**: - `POST /api/v1/dataprocessor/update-db-with-config` - Datenbank mit Konfiguration aktualisieren - Authentifizierung: `X-PP-API-Key` Header - **PostgreSQL Memory Database**: - Speichert verarbeitete Daten - Wird vom Chat für Queries genutzt **Datenfluss:** - Empfängt Rohdaten aus Power BI Semantikmodell - Verarbeitet Daten nach konfigurierten Schritten (keep, fillna, to_numeric, dropna, etc.) - Speichert verarbeitete Daten in Memory Database - Beantwortet SQL-Queries vom Gateway **Technologie:** - Python/FastAPI - PostgreSQL - Azure App Service (im Kunden-Tenant althaus-ag.ch) #### 3.2 MSFT Services **Power BI Semantikmodell:** - Datenquelle für Rohdaten - Wird vom Pre-Processing Service gelesen **Azure Domänen-Controller:** - Authentifizierungs-Service - Wird vom Gateway für Authentifizierung genutzt **DNA Center:** - Netzwerk-Management-Service - Wird vom Gateway genutzt ## Datenfluss ### 1. Datenaktualisierung (Scheduled) ``` Power BI Semantikmodell (Tenant althaus-ag.ch) → PowerOn PreProcessing (verarbeitet Daten) → PostgreSQL Memory DB (speichert verarbeitete Daten) Gateway Event Scheduler (01:00 UTC täglich) → POST /api/v1/dataprocessor/update-db-with-config → PowerOn PreProcessing (aktualisiert Konfiguration) ``` ### 2. Chat-Interaktion (User Request) ``` PowerOn Chat UI → POST /api/v1/dataquery/query (mit User/Password Auth) → Gateway Data Query API → POST /api/v1/dataquery/query (mit X-PP-API-Key) → PowerOn PreProcessing → PostgreSQL Memory DB (führt Query aus) → PowerOn PreProcessing (gibt Ergebnisse zurück) → Gateway Data Query API → PowerOn Chat UI (zeigt Antwort) ``` ### 3. AI-Integration ``` PowerOn Chat UI → Gateway (vermittelt AI-Anfragen) → Dynamic AI & Tavily (in PowerOn Platform) → Gateway (kombiniert Ergebnisse) → PowerOn Chat UI (zeigt Antwort) ``` ## Authentifizierung ### Gateway → PowerOn PreProcessing - **Header**: `X-PP-API-Key` - **Wert**: Aus Gateway Config (`PREPROCESS_ALTHAUS_CHAT_SECRET`) - **Verwendung**: Event Scheduler und Data Query API ### PowerOn Chat UI → Gateway - **Methode**: User/Password - **Token**: JWT Token (nach erfolgreicher Authentifizierung) - **Verwendung**: Alle API-Calls vom Chat Frontend ### Weitere Authentifizierung - Gateway nutzt Azure Domänen-Controller für zusätzliche Authentifizierung - Verschiedene API-Endpunkte können unterschiedliche Authentifizierungsmechanismen haben ## Deployment - **PowerOn Platform**: gateway.poweron-center.net - **PowerOn Chat UI**: althaus-chat.poweron-center.net - **PowerOn PreProcessing**: Azure App Service im Kunden-Tenant (althaus-ag.ch) - URL: `poweron-althaus-preprocess-prod-e3fegaatc7faency.switzerlandnorth-01.azurewebsites.net` - **Tenant althaus-ag.ch**: Enthält PowerOn PreProcessing und MSFT Services (Power BI, Azure DC, DNA Center) im Azure-Tenant von Althaus AG ## Konfiguration ### Gateway Config Keys - `PREPROCESS_ALTHAUS_CHAT_SECRET`: API-Key für Pre-Processing Service - `APP_ENV_TYPE`: Umgebung (dev, int, prod) - Weitere Gateway-spezifische Konfigurationen ### Pre-Processing Config - Konfiguration wird als JSON im Gateway Code definiert - Wird täglich um 01:00 UTC an Pre-Processing Service gesendet - Definiert Tabellen, Spalten, Verarbeitungsschritte