diff --git a/docs-src/architecture/system-architecture.md b/docs-src/architecture/system-architecture.md index 9147faa..b3fdbea 100644 --- a/docs-src/architecture/system-architecture.md +++ b/docs-src/architecture/system-architecture.md @@ -1,254 +1,163 @@ -# BreakPilot PWA - System-Architektur +# BreakPilot - System-Architektur -## Übersicht +## Uebersicht -BreakPilot ist eine modulare Bildungsplattform für Lehrkräfte mit folgenden Hauptkomponenten: +BreakPilot ist eine modulare Bildungs- und Compliance-Plattform, aufgeteilt in drei unabhaengige Docker Compose Projekte: ``` -┌─────────────────────────────────────────────────────────────────────┐ -│ Browser │ -│ ┌───────────────────────────────────────────────────────────────┐ │ -│ │ Frontend (Studio UI) │ │ -│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ -│ │ │Dashboard │ │Worksheets│ │Correction│ │Letters/Companion │ │ │ -│ │ └──────────┘ └──────────┘ └──────────┘ └──────────────────┘ │ │ -│ └───────────────────────────────────────────────────────────────┘ │ -└───────────────────────────┬─────────────────────────────────────────┘ - │ HTTP/REST - ▼ -┌─────────────────────────────────────────────────────────────────────┐ -│ Python Backend (FastAPI) │ -│ Port 8000 │ -│ ┌────────────────────────────────────────────────────────────────┐ │ -│ │ API Layer │ │ -│ │ /api/worksheets /api/corrections /api/letters /api/state │ │ -│ │ /api/school /api/certificates /api/messenger /api/jitsi │ │ -│ └────────────────────────────────────────────────────────────────┘ │ -│ ┌────────────────────────────────────────────────────────────────┐ │ -│ │ Service Layer │ │ -│ │ FileProcessor │ PDFService │ ContentGenerators │ StateEngine │ │ -│ └────────────────────────────────────────────────────────────────┘ │ -└───────────────────────────┬─────────────────────────────────────────┘ - │ - ┌─────────────┼─────────────┐ - ▼ ▼ ▼ -┌─────────────────┐ ┌───────────────┐ ┌──────────────┐ ┌──────────────┐ -│ Go Consent │ │ PostgreSQL │ │ LLM Gateway │ │ HashiCorp │ -│ Service │ │ Database │ │ (optional) │ │ Vault │ -│ Port 8081 │ │ Port 5432 │ │ │ │ Port 8200 │ -└─────────────────┘ └───────────────┘ └──────────────┘ └──────────────┘ +┌────────────────────────────────────────────────────────────────────────────┐ +│ Browser │ +│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ +│ │ Studio v2 │ │ Admin Lehrer │ │ Admin Compl. │ │ Dev Portal │ │ +│ │ (443) │ │ (3002) │ │ (3007) │ │ (3006) │ │ +│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │ +└─────────┼──────────────────┼──────────────────┼──────────────────┼─────────┘ + │ │ │ │ + ▼ ▼ ▼ ▼ +┌─────────────────────────────────────────────────────────────────────────────┐ +│ bp-core-nginx (Reverse Proxy + TLS) │ +│ Ports: 80, 443, 3000-3008, 8000-8097 │ +└────────┬──────────────────┬──────────────────┬──────────────────────────────┘ + │ │ │ + ▼ ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ +│ breakpilot-core │ │breakpilot-lehrer│ │breakpilot-compl.│ +│ (Shared) │ │ (Team A) │ │ (Team B) │ +│ │ │ │ │ │ +│ PostgreSQL │ │ Studio v2 │ │ Admin Compliance│ +│ Valkey │ │ Admin Lehrer │ │ Developer Portal│ +│ Vault │ │ Website │ │ Backend Compl. │ +│ Qdrant │ │ Backend Lehrer │ │ AI Compliance │ +│ MinIO │ │ Klausur Service │ │ SDK (Go) │ +│ Embedding │ │ Voice Service │ │ DSMS (IPFS) │ +│ RAG Service │ │ School Service │ │ Document Crawler│ +│ Consent (Go) │ │ Geo Service │ │ │ +│ Billing (Go) │ │ PaddleOCR │ │ │ +│ Backend Core │ │ Agent Core │ │ │ +│ Admin Core │ │ Transcription │ │ │ +│ Jitsi (5x) │ │ BreakPilot Drive│ │ │ +│ Night Scheduler │ │ │ │ │ +│ Health Agg. │ │ │ │ │ +│ Gitea/Woodpecker│ │ │ │ │ +│ ERP (optional) │ │ │ │ │ +└─────────────────┘ └─────────────────┘ └─────────────────┘ + │ │ │ + └──────────────────┴──────────────────┘ + breakpilot-network + (gemeinsames Docker-Netzwerk) ``` -## Komponenten +--- -### 1. Admin Frontend (Next.js Website) +## Drei-Projekt-Architektur -Das **Admin Frontend** ist eine vollständige Next.js 15 Anwendung für Developer und Administratoren: +### breakpilot-core (Shared Infrastructure) -**Technologie:** Next.js 15, React 18, TypeScript, Tailwind CSS +Stellt gemeinsam genutzte Infrastruktur bereit. Beide Teams (Lehrer + Compliance) haengen von Core ab. -**Container:** `breakpilot-pwa-website` auf **Port 3000** +**Container-Prefix:** `bp-core-*` -**Verzeichnis:** `/website` +| Kategorie | Services | +|-----------|----------| +| Datenbank & Cache | PostgreSQL (PostGIS 16), Valkey | +| Security | Vault, Vault-Init, Vault-Agent | +| AI/ML | Embedding Service, RAG Service, Qdrant | +| Storage | MinIO (S3) | +| Business Logic | Consent Service (Go), Billing Service (Go), Backend Core (Python) | +| Frontend | Admin Core (Next.js, Port 3008) | +| Networking | Nginx (Reverse Proxy + TLS) | +| Monitoring | Health Aggregator | +| DevOps | Gitea, Woodpecker CI/CD, Night Scheduler, Mailpit | +| Kommunikation | Jitsi Meet (5 Container), Synapse (Matrix Chat) | +| ERP | ERPNext (optional, 9 Container) | -| Modul | Route | Beschreibung | -|-------|-------|--------------| -| Dashboard | `/admin` | Übersicht & Statistiken | -| GPU Infrastruktur | `/admin/gpu` | vast.ai GPU Management | -| Consent Verwaltung | `/admin/consent` | Rechtliche Dokumente & Versionen | -| Datenschutzanfragen | `/admin/dsr` | DSGVO Art. 15-21 Anfragen | -| DSMS | `/admin/dsms` | Datenschutz-Management-System | -| Education Search | `/admin/edu-search` | Bildungsquellen & Crawler | -| Personensuche | `/admin/staff-search` | Uni-Mitarbeiter & Publikationen | -| Uni-Crawler | `/admin/uni-crawler` | Universitäts-Crawling Orchestrator | -| LLM Vergleich | `/admin/llm-compare` | KI-Provider Vergleich | -| PCA Platform | `/admin/pca-platform` | Bot-Erkennung & Monetarisierung | -| Production Backlog | `/admin/backlog` | Go-Live Checkliste | -| Developer Docs | `/admin/docs` | API & Architektur Dokumentation | -| Kommunikation | `/admin/communication` | Matrix & Jitsi Monitoring | -| **Security** | `/admin/security` | DevSecOps Dashboard, Scans, Findings | -| **SBOM** | `/admin/sbom` | Software Bill of Materials | +### breakpilot-lehrer (Team A: Bildung) -### 2. Lehrer Frontend (Studio UI) +Alle Services fuer Lehrkraefte und den Bildungsbereich. -Das **Lehrer Frontend** ist ein Single-Page-Application-ähnliches System für Lehrkräfte, das in Python-Modulen organisiert ist: +**Container-Prefix:** `bp-lehrer-*` -| Modul | Datei | Beschreibung | -|-------|-------|--------------| -| Base | `frontend/modules/base.py` | TopBar, Sidebar, Theme, Login | -| Dashboard | `frontend/modules/dashboard.py` | Übersichtsseite | -| Worksheets | `frontend/modules/worksheets.py` | Lerneinheiten-Generator | -| Correction | `frontend/modules/correction.py` | OCR-Klausurkorrektur | -| Letters | `frontend/modules/letters.py` | Elternkommunikation | -| Companion | `frontend/modules/companion.py` | Begleiter-Modus mit State Engine | -| School | `frontend/modules/school.py` | Schulverwaltung | -| Gradebook | `frontend/modules/gradebook.py` | Notenbuch | -| ContentCreator | `frontend/modules/content_creator.py` | H5P Content Creator | -| ContentFeed | `frontend/modules/content_feed.py` | Content Discovery | -| Messenger | `frontend/modules/messenger.py` | Matrix Messenger | -| Jitsi | `frontend/modules/jitsi.py` | Videokonferenzen | -| **KlausurKorrektur** | `frontend/modules/klausur_korrektur.py` | **Abitur-Klausurkorrektur (15-Punkte-System)** | -| **AbiturDocsAdmin** | `frontend/modules/abitur_docs_admin.py` | **Admin für Abitur-Dokumente (NiBiS)** | +| Service | Container | Port | Beschreibung | +|---------|-----------|------|--------------| +| Admin Lehrer | bp-lehrer-admin | 3002 | Lehrer-Dashboard (Next.js) | +| Studio v2 | bp-lehrer-studio-v2 | 443 | Lehrer-/Schueler-Studio (Next.js) | +| Website | bp-lehrer-website | 3000 | Oeffentliche Website (Next.js) | +| Backend Lehrer | bp-lehrer-backend | 8001 | API Backend (Python/FastAPI) | +| Klausur Service | bp-lehrer-klausur-service | 8086 | Pruefungen, OCR, RAG (Python) | +| School Service | bp-lehrer-school-service | 8084 | Schulverwaltung (Go) | +| Voice Service | bp-lehrer-voice-service | 8091 | Spracheingabe (Python) | +| Geo Service | bp-lehrer-geo-service | 8088 | Geo-Daten/PostGIS (Python) | +| PaddleOCR | bp-lehrer-paddleocr | - | OCR Engine (Profil: ocr) | +| BreakPilot Drive | bp-lehrer-breakpilot-drive | - | Lernspiel (Profil: game) | +| Agent Core | bp-lehrer-agent-core | - | Multi-Agent System (Profil: dev) | +| Transcription Worker | bp-lehrer-transcription | - | Audio-Transkription (Profil: recording) | -Jedes Modul exportiert: -- `get_css()` - CSS-Styles -- `get_html()` - HTML-Template -- `get_js()` - JavaScript-Logik +### breakpilot-compliance (Team B: DSGVO/Compliance) -### 3. Python Backend (FastAPI) +Alle Services fuer das Compliance-Produkt (DSGVO, AI Act, BSI). -#### API-Router +**Container-Prefix:** `bp-compliance-*` -| Router | Präfix | Beschreibung | -|--------|--------|--------------| -| `worksheets_api` | `/api/worksheets` | Content-Generatoren (MC, Cloze, Mindmap, Quiz) | -| `correction_api` | `/api/corrections` | OCR-Pipeline für Klausurkorrektur | -| `letters_api` | `/api/letters` | Elternbriefe mit GFK-Integration | -| `state_engine_api` | `/api/state` | Begleiter-Modus Phasen & Vorschläge | -| `school_api` | `/api/school` | Schulverwaltung (Proxy zu school-service) | -| `certificates_api` | `/api/certificates` | Zeugniserstellung | -| `messenger_api` | `/api/messenger` | Matrix Messenger Integration | -| `jitsi_api` | `/api/jitsi` | Jitsi Meeting-Einladungen | -| `consent_api` | `/api/consent` | DSGVO Consent-Verwaltung | -| `gdpr_api` | `/api/gdpr` | GDPR-Export | -| **`klausur_korrektur_api`** | `/api/klausur-korrektur` | **Abitur-Klausuren (15-Punkte, Gutachten, Fairness)** | -| **`abitur_docs_api`** | `/api/abitur-docs` | **NiBiS-Dokumentenverwaltung für RAG** | +| Service | Container | Port | Beschreibung | +|---------|-----------|------|--------------| +| Admin Compliance | bp-compliance-admin | 3007 | Compliance-Dashboard (Next.js) | +| Developer Portal | bp-compliance-developer-portal | 3006 | API-Dokumentation (Next.js) | +| Backend Compliance | bp-compliance-backend | 8002 | Compliance API (Python/FastAPI) | +| AI Compliance SDK | bp-compliance-ai-sdk | 8090/8093 | DSGVO-konforme KI (Go) | +| DSMS Node | bp-compliance-dsms-node | 4001/5001 | IPFS Node | +| DSMS Gateway | bp-compliance-dsms-gateway | 8082 | IPFS Gateway (Node.js) | +| Document Crawler | bp-compliance-document-crawler | 8098 | Web-Crawler (Python) | -#### Services +--- -| Service | Datei | Beschreibung | -|---------|-------|--------------| -| FileProcessor | `services/file_processor.py` | OCR mit PaddleOCR | -| PDFService | `services/pdf_service.py` | PDF-Generierung | -| ContentGenerators | `services/content_generators/` | MC, Cloze, Mindmap, Quiz | -| StateEngine | `state_engine/` | Phasen-Management & Antizipation | +## Netzwerk-Architektur -### 4. Klausur-Korrektur System (Abitur) +### Gemeinsames Docker-Netzwerk -Das Klausur-Korrektur-System implementiert die vollständige Abitur-Bewertungspipeline: +Alle drei Projekte nutzen dasselbe Docker-Netzwerk `breakpilot-network`: -``` -┌─────────────────────────────────────────────────────────────────────┐ -│ Klausur-Korrektur Modul │ -│ │ -│ ┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ -│ │ Modus-Wahl │───►│ Text-Quellen & │───►│ Erwartungs- │ │ -│ │ LandesAbi/ │ │ Rights-Gate │ │ horizont │ │ -│ │ Vorabitur │ └──────────────────┘ └─────────────────┘ │ -│ └─────────────┘ │ │ -│ ▼ │ -│ ┌─────────────────────────────────────────────────────────────┐ │ -│ │ Schülerarbeiten-Pipeline │ │ -│ │ Upload → OCR → KI-Bewertung → Gutachten → 15-Punkte-Note │ │ -│ └─────────────────────────────────────────────────────────────┘ │ -│ │ │ -│ ▼ │ -│ ┌────────────────────┐ ┌──────────────────────────────────┐ │ -│ │ Erst-/Zweitprüfer │───►│ Fairness-Analyse & PDF-Export │ │ -│ └────────────────────┘ └──────────────────────────────────┘ │ -└─────────────────────────────────────────────────────────────────────┘ +```yaml +# In jedem docker-compose.yml: +networks: + breakpilot-network: + external: true ``` -#### 15-Punkte-Notensystem +Container koennen sich gegenseitig ueber ihre Container-Namen erreichen: +- `bp-lehrer-backend` → `bp-core-postgres:5432` +- `bp-compliance-ai-sdk` → `bp-core-qdrant:6333` +- `bp-core-nginx` → `bp-lehrer-studio-v2:3001` -Das System verwendet den deutschen Abitur-Notenschlüssel: +### Nginx Routing -| Punkte | Prozent | Note | -|--------|---------|------| -| 15-13 | 95-85% | 1+/1/1- | -| 12-10 | 80-70% | 2+/2/2- | -| 9-7 | 65-55% | 3+/3/3- | -| 6-4 | 50-40% | 4+/4/4- | -| 3-1 | 33-20% | 5+/5/5- | -| 0 | <20% | 6 | +Der zentrale Nginx in Core routet alle Anfragen an die richtigen Container: -#### Bewertungskriterien +| Port | Upstream | Projekt | +|------|----------|---------| +| 443 | bp-lehrer-studio-v2:3001 + Jitsi | Lehrer + Core | +| 3000 | bp-lehrer-website:3000 | Lehrer | +| 3002 | bp-lehrer-admin:3000 | Lehrer | +| 3006 | bp-compliance-developer-portal:3000 | Compliance | +| 3007 | bp-compliance-admin:3000 | Compliance | +| 3008 | bp-core-admin:3000 | Core | +| 8000 | bp-core-backend:8000 | Core | +| 8001 | bp-lehrer-backend:8001 | Lehrer | +| 8002 | bp-compliance-backend:8002 | Compliance | +| 8086 | bp-lehrer-klausur-service:8086 | Lehrer | +| 8091 | bp-lehrer-voice-service:8091 | Lehrer | +| 8093 | bp-compliance-ai-sdk:8090 | Compliance | +| 8443 | bp-core-jitsi-web:80 | Core | -| Kriterium | Gewicht | Beschreibung | -|-----------|---------|--------------| -| Rechtschreibung | 15% | Orthografie | -| Grammatik | 15% | Grammatik & Syntax | -| **Inhalt** | **40%** | Inhaltliche Qualität (höchste Gewichtung) | -| Struktur | 15% | Aufbau & Gliederung | -| Stil | 15% | Ausdruck & Stil | - -### 5. Go Consent Service - -Verwaltet DSGVO-Einwilligungen: - -``` -consent-service/ -├── cmd/server/ # Main entry point -├── internal/ -│ ├── handlers/ # HTTP Handler -│ ├── services/ # Business Logic -│ ├── models/ # Data Models -│ └── middleware/ # Auth Middleware -└── migrations/ # SQL Migrations -``` - -### 6. LLM Gateway (Optional) - -Wenn `LLM_GATEWAY_ENABLED=true`: - -``` -llm_gateway/ -├── routes/ -│ ├── chat.py # Chat-Completion API -│ ├── communication.py # GFK-Validierung -│ ├── edu_search_seeds.py # Bildungssuche -│ └── legal_crawler.py # Schulgesetz-Crawler -└── services/ - └── communication_service.py -``` - -## Datenfluss - -### Worksheet-Generierung - -``` -User Input → Frontend (worksheets.py) - ↓ -POST /api/worksheets/generate/multiple-choice - ↓ -worksheets_api.py → MCGenerator (services/content_generators/) - ↓ -Optional: LLM für erweiterte Generierung - ↓ -Response: WorksheetContent → Frontend rendert Ergebnis -``` - -### Klausurkorrektur - -``` -File Upload → Frontend (correction.py) - ↓ -POST /api/corrections/ (erstellen) -POST /api/corrections/{id}/upload (Datei) - ↓ -Background Task: OCR via FileProcessor - ↓ -Poll GET /api/corrections/{id} bis status="ocr_complete" - ↓ -POST /api/corrections/{id}/analyze - ↓ -Review Interface → PUT /api/corrections/{id} (Anpassungen) - ↓ -GET /api/corrections/{id}/export-pdf -``` +--- ## Sicherheit ### Authentifizierung & Autorisierung -BreakPilot verwendet einen **Hybrid-Ansatz**: - | Schicht | Komponente | Beschreibung | |---------|------------|--------------| | **Authentifizierung** | Keycloak (Prod) / Lokales JWT (Dev) | Token-Validierung via JWKS oder HS256 | -| **Autorisierung** | rbac.py (Eigenentwicklung) | Domaenenspezifische Berechtigungen | - -Siehe: [Auth-System](auth-system.md) +| **Autorisierung** | RBAC (Eigenentwicklung) | Domaenenspezifische Berechtigungen | ### Basis-Rollen @@ -259,53 +168,60 @@ Siehe: [Auth-System](auth-system.md) | `admin` | Administrator | | `data_protection_officer` | Datenschutzbeauftragter | -### Erweiterte Rollen (rbac.py) - -15+ domaenenspezifische Rollen fuer Klausurkorrektur und Zeugnisse: -- `erstkorrektor`, `zweitkorrektor`, `drittkorrektor` -- `klassenlehrer`, `fachlehrer`, `fachvorsitz` -- `schulleitung`, `zeugnisbeauftragter`, `sekretariat` - ### Sicherheitsfeatures - JWT-basierte Authentifizierung (RS256/HS256) -- CORS konfiguriert für Frontend-Zugriff -- DSGVO-konformes Consent-Management -- **HashiCorp Vault** fuer Secrets-Management (keine hardcodierten Secrets) -- Bundesland-spezifische Policy-Sets -- **DevSecOps Pipeline** mit automatisierten Security-Scans (SAST, SCA, Secrets Detection) +- CORS konfiguriert pro Service +- DSGVO-konformes Consent-Management (Core) +- **HashiCorp Vault** fuer Secrets-Management +- **DevSecOps Pipeline** mit Trivy, Semgrep, Gitleaks Siehe: +- [Auth-System](auth-system.md) - [Secrets Management](secrets-management.md) - [DevSecOps](devsecops.md) +--- + ## Deployment -```yaml -services: - backend: - build: ./backend - ports: ["8000:8000"] - environment: - - DATABASE_URL=postgresql://... - - LLM_GATEWAY_ENABLED=false +### Start-Reihenfolge - consent-service: - build: ./consent-service - ports: ["8081:8081"] +```bash +# 1. Core zuerst (Infrastruktur) +docker compose -f breakpilot-core/docker-compose.yml up -d - postgres: - image: postgres:15 - volumes: - - pgdata:/var/lib/postgresql/data +# 2. Lehrer-Stack +docker compose -f breakpilot-lehrer/docker-compose.yml up -d + +# 3. Compliance-Stack +docker compose -f breakpilot-compliance/docker-compose.yml up -d ``` +### Health-Checks + +```bash +# Core Health (alle Infrastruktur-Services) +curl https://macmini:8099/health + +# Lehrer Backend +curl https://macmini:8001/health + +# Compliance Backend +curl https://macmini:8002/health + +# AI SDK +curl https://macmini:8093/health +``` + +--- + ## Erweiterung -Neues Frontend-Modul hinzufügen: +### Neuen Service zu einem Projekt hinzufuegen -1. Modul erstellen: `frontend/modules/new_module.py` -2. Klasse mit `get_css()`, `get_html()`, `get_js()` implementieren -3. In `frontend/modules/__init__.py` importieren und exportieren -4. Optional: Zugehörige API in `new_module_api.py` erstellen -5. In `main.py` Router registrieren +1. Service-Definition in das jeweilige `docker-compose.yml` hinzufuegen +2. Container-Name mit dem richtigen Prefix versehen (`bp-core-*`, `bp-lehrer-*`, `bp-compliance-*`) +3. Netzwerk `breakpilot-network` zuweisen +4. Falls HTTPS noetig: Nginx-Route in `breakpilot-core/nginx/conf.d/default.conf` hinzufuegen +5. Dokumentation in der jeweiligen MkDocs-Instanz aktualisieren diff --git a/docs-src/index.md b/docs-src/index.md index 85537c5..4a0411e 100644 --- a/docs-src/index.md +++ b/docs-src/index.md @@ -1,124 +1,71 @@ -# Breakpilot Dokumentation +# BreakPilot Core - Dokumentation -Willkommen zur zentralen Dokumentation des Breakpilot-Projekts. +Zentrale Infrastruktur-Dokumentation fuer das BreakPilot-Oekosystem. -## Was ist Breakpilot? +## Drei-Projekt-Architektur -Breakpilot ist eine DSGVO-konforme Bildungsplattform fuer Lehrkraefte mit folgenden Kernfunktionen: +BreakPilot besteht aus drei unabhaengigen Projekten: -- **Consent-Management** - Datenschutzkonforme Einwilligungsverwaltung -- **KI-gestuetzte Klausurkorrektur** - Automatische Bewertungsvorschlaege fuer Abiturklausuren -- **Zeugnisgenerierung** - Workflow-basierte Zeugniserstellung mit Rollenkonzept -- **Lernmaterial-Generator** - MC-Tests, Lueckentexte, Mindmaps, Quiz -- **Elternbriefe** - GFK-basierte Kommunikation mit PDF-Export +| Projekt | Beschreibung | Container-Prefix | Farbe | +|---------|-------------|-------------------|-------| +| **breakpilot-core** (dieses Projekt) | Shared Infrastructure | `bp-core-*` | Teal | +| **breakpilot-lehrer** | Bildungs-Stack (Team A) | `bp-lehrer-*` | Blau | +| **breakpilot-compliance** | DSGVO/Compliance-Stack (Team B) | `bp-compliance-*` | Lila | -## Schnellstart +## Core Services -
+| Service | Container | Port | Beschreibung | +|---------|-----------|------|--------------| +| Nginx | bp-core-nginx | 80/443 | Reverse Proxy + TLS fuer alle drei Projekte | +| PostgreSQL | bp-core-postgres | 5432 | Zentrale Datenbank (PostGIS 16) | +| Valkey | bp-core-valkey | 6379 | Session Cache (Redis-Fork) | +| Vault | bp-core-vault | 8200 | Secrets Management | +| Qdrant | bp-core-qdrant | 6333 | Vector DB fuer RAG | +| MinIO | bp-core-minio | 9000 | S3-kompatibler Object Storage | +| Embedding Service | bp-core-embedding-service | 8087 | Text-Embeddings | +| RAG Service | bp-core-rag-service | 8097 | Retrieval Augmented Generation | +| Consent Service | bp-core-consent-service | 8081 | DSGVO Consent (Go) | +| Billing Service | bp-core-billing-service | 8083 | Abrechnung (Go) | +| Backend Core | bp-core-backend | 8000 | Shared API (Python) | +| Admin Core | bp-core-admin | 3008 | Admin-Dashboard (Next.js) | +| Health Aggregator | bp-core-health | 8099 | Service-Health Monitoring | +| Night Scheduler | bp-core-night-scheduler | 8096 | Nachtabschaltung | +| Pitch Deck | bp-core-pitch-deck | 3012 | Investor-Praesentation | +| Mailpit | bp-core-mailpit | 8025 | E-Mail (Entwicklung) | +| Gitea | bp-core-gitea | 3003 | Git-Server | +| Woodpecker | bp-core-woodpecker-server | 8090 | CI/CD | +| Jitsi (5 Container) | bp-core-jitsi-* | 8443 | Videokonferenzen | -- :material-rocket-launch:{ .lg .middle } **Erste Schritte** +## Nginx Routing-Tabelle - --- - - Entwicklungsumgebung einrichten und das Projekt starten. - - [:octicons-arrow-right-24: Umgebung einrichten](getting-started/environment-setup.md) - -- :material-server:{ .lg .middle } **Mac Mini Setup** - - --- - - Headless Server-Konfiguration fuer den Entwicklungsserver. - - [:octicons-arrow-right-24: Mac Mini Setup](getting-started/mac-mini-setup.md) - -
+| Port | Upstream | Projekt | +|------|----------|---------| +| 443 | bp-lehrer-studio-v2:3001 | Lehrer | +| 3000 | bp-lehrer-website:3000 | Lehrer | +| 3002 | bp-lehrer-admin:3000 | Lehrer | +| 3006 | bp-compliance-developer-portal:3000 | Compliance | +| 3007 | bp-compliance-admin:3000 | Compliance | +| 3008 | bp-core-admin:3000 | Core | +| 8000 | bp-core-backend:8000 | Core | +| 8001 | bp-lehrer-backend:8001 | Lehrer | +| 8002 | bp-compliance-backend:8002 | Compliance | +| 8086 | bp-lehrer-klausur-service:8086 | Lehrer | +| 8087 | bp-core-embedding-service:8087 | Core | +| 8091 | bp-lehrer-voice-service:8091 | Lehrer | +| 8093 | bp-compliance-ai-sdk:8090 | Compliance | +| 8097 | bp-core-rag-service:8097 | Core | +| 8443 | bp-core-jitsi-web:80 | Core | ## Architektur -
- -- :material-sitemap:{ .lg .middle } **System-Architektur** - - --- - - Ueberblick ueber alle Komponenten und deren Zusammenspiel. - - [:octicons-arrow-right-24: Architektur](architecture/system-architecture.md) - -- :material-shield-lock:{ .lg .middle } **Auth-System** - - --- - - Hybrid-Authentifizierung mit Keycloak und lokalem JWT. - - [:octicons-arrow-right-24: Auth-System](architecture/auth-system.md) - -- :material-robot:{ .lg .middle } **Multi-Agent System** - - --- - - Verteilte Agent-Architektur fuer KI-Funktionen. - - [:octicons-arrow-right-24: Multi-Agent](architecture/multi-agent.md) - -- :material-key-chain:{ .lg .middle } **Secrets Management** - - --- - - HashiCorp Vault Integration fuer sichere Credentials. - - [:octicons-arrow-right-24: Secrets](architecture/secrets-management.md) - -
- -## Services - -| Service | Port | Beschreibung | -|---------|------|--------------| -| [Backend (Python)](api/backend-api.md) | 8000 | FastAPI Backend mit Panel UI | -| [Consent Service (Go)](architecture/auth-system.md) | 8081 | DSGVO-konforme Einwilligungsverwaltung | -| [Klausur Service](services/klausur-service/index.md) | 8086 | KI-gestuetzte Klausurkorrektur | -| [Agent Core](services/agent-core/index.md) | - | Multi-Agent Infrastructure | -| PostgreSQL | 5432 | Relationale Datenbank | -| Qdrant | 6333 | Vektor-Datenbank fuer RAG | -| MinIO | 9000 | Object Storage | -| Vault | 8200 | Secrets Management | +- [System-Architektur](architecture/system-architecture.md) +- [Auth-System](architecture/auth-system.md) +- [Secrets Management](architecture/secrets-management.md) +- [DevSecOps](architecture/devsecops.md) +- [Multi-Agent System](architecture/multi-agent.md) ## Entwicklung -- [Testing](development/testing.md) - Test-Standards und Ausfuehrung -- [Dokumentation](development/documentation.md) - Dokumentations-Richtlinien -- [DevSecOps](architecture/devsecops.md) - Security Pipeline -- [Umgebungen](architecture/environments.md) - Dev/Staging/Prod - -## Weitere Ressourcen - -- **GitHub Repository**: Internes GitLab -- **Issue Tracker**: GitLab Issues -- **API Playground**: [http://macmini:8000/docs](http://macmini:8000/docs) - ---- - -## Projektstruktur - -``` -breakpilot-pwa/ -├── backend/ # Python FastAPI Backend -├── consent-service/ # Go Consent Service -├── klausur-service/ # Klausur-Korrektur Service -├── agent-core/ # Multi-Agent Infrastructure -├── voice-service/ # Voice/Audio Processing -├── website/ # Next.js Frontend -├── studio-v2/ # Admin Dashboard (Next.js) -├── docs-src/ # Diese Dokumentation -└── docker-compose.yml # Container-Orchestrierung -``` - -## Support - -Bei Fragen oder Problemen: - -1. Pruefen Sie zuerst die relevante Dokumentation -2. Suchen Sie im Issue Tracker nach aehnlichen Problemen -3. Erstellen Sie ein neues Issue mit detaillierter Beschreibung +- [Testing](development/testing.md) +- [Dokumentation](development/documentation.md) +- [CI/CD Pipeline](development/ci-cd-pipeline.md) diff --git a/docs-src/services/agent-core/index.md b/docs-src/services/agent-core/index.md index 1a7ce6d..10f1c1f 100644 --- a/docs-src/services/agent-core/index.md +++ b/docs-src/services/agent-core/index.md @@ -1,420 +1,10 @@ -# Breakpilot Agent Core - -Multi-Agent Architecture Infrastructure fuer Breakpilot. - -## Uebersicht - -Das `agent-core` Modul stellt die gemeinsame Infrastruktur fuer Breakpilots Multi-Agent-System bereit: - -- **Session Management**: Agent-Sessions mit Checkpoints und Recovery -- **Shared Brain**: Langzeit-Gedaechtnis und Kontext-Verwaltung -- **Orchestration**: Message Bus, Supervisor und Task-Routing - -## Architektur - -``` -┌─────────────────────────────────────────────────────────────────┐ -│ Breakpilot Services │ -│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │ -│ │Voice Service│ │Klausur Svc │ │ Admin-v2 / AlertAgent │ │ -│ └──────┬──────┘ └──────┬──────┘ └───────────┬─────────────┘ │ -│ │ │ │ │ -│ └────────────────┼──────────────────────┘ │ -│ │ │ -│ ┌───────────────────────▼───────────────────────────────────┐ │ -│ │ Agent Core │ │ -│ │ ┌─────────────┐ ┌─────────────┐ ┌───────────────────┐ │ │ -│ │ │ Sessions │ │Shared Brain │ │ Orchestrator │ │ │ -│ │ │ - Manager │ │ - Memory │ │ - Message Bus │ │ │ -│ │ │ - Heartbeat │ │ - Context │ │ - Supervisor │ │ │ -│ │ │ - Checkpoint│ │ - Knowledge │ │ - Task Router │ │ │ -│ │ └─────────────┘ └─────────────┘ └───────────────────┘ │ │ -│ └───────────────────────────────────────────────────────────┘ │ -│ │ │ -│ ┌───────────────────────▼───────────────────────────────────┐ │ -│ │ Infrastructure │ │ -│ │ Valkey (Redis) PostgreSQL Qdrant │ │ -│ └───────────────────────────────────────────────────────────┘ │ -└─────────────────────────────────────────────────────────────────┘ -``` - -## Verzeichnisstruktur - -``` -agent-core/ -├── __init__.py # Modul-Exports -├── README.md # Diese Datei -├── requirements.txt # Python-Abhaengigkeiten -├── pytest.ini # Test-Konfiguration -│ -├── soul/ # Agent SOUL Files (Persoenlichkeiten) -│ ├── tutor-agent.soul.md -│ ├── grader-agent.soul.md -│ ├── quality-judge.soul.md -│ ├── alert-agent.soul.md -│ └── orchestrator.soul.md -│ -├── brain/ # Shared Brain Implementation -│ ├── __init__.py -│ ├── memory_store.py # Langzeit-Gedaechtnis -│ ├── context_manager.py # Konversations-Kontext -│ └── knowledge_graph.py # Entity-Beziehungen -│ -├── sessions/ # Session Management -│ ├── __init__.py -│ ├── session_manager.py # Session-Lifecycle -│ ├── heartbeat.py # Liveness-Monitoring -│ └── checkpoint.py # Recovery-Checkpoints -│ -├── orchestrator/ # Multi-Agent Orchestration -│ ├── __init__.py -│ ├── message_bus.py # Inter-Agent Kommunikation -│ ├── supervisor.py # Agent-Ueberwachung -│ └── task_router.py # Intent-basiertes Routing -│ -└── tests/ # Unit Tests - ├── conftest.py - ├── test_session_manager.py - ├── test_heartbeat.py - ├── test_message_bus.py - ├── test_memory_store.py - └── test_task_router.py -``` - -## Komponenten - -### 1. Session Management - -Verwaltet Agent-Sessions mit State-Machine und Recovery-Faehigkeiten. - -```python -from agent_core.sessions import SessionManager, AgentSession - -# Session Manager erstellen -manager = SessionManager( - redis_client=redis, - db_pool=pg_pool, - namespace="breakpilot" -) - -# Session erstellen -session = await manager.create_session( - agent_type="tutor-agent", - user_id="user-123", - context={"subject": "math"} -) - -# Checkpoint setzen -session.checkpoint("task_started", {"task_id": "abc"}) - -# Session beenden -session.complete({"result": "success"}) -``` - -**Session States:** - -- `ACTIVE` - Session laeuft -- `PAUSED` - Session pausiert -- `COMPLETED` - Session erfolgreich beendet -- `FAILED` - Session fehlgeschlagen - -### 2. Heartbeat Monitoring - -Ueberwacht Agent-Liveness und triggert Recovery bei Timeout. - -```python -from agent_core.sessions import HeartbeatMonitor, HeartbeatClient - -# Monitor starten -monitor = HeartbeatMonitor( - timeout_seconds=30, - check_interval_seconds=5, - max_missed_beats=3 -) -await monitor.start_monitoring() - -# Agent registrieren -monitor.register("agent-1", "tutor-agent") - -# Heartbeat senden -async with HeartbeatClient("agent-1", monitor) as client: - # Agent-Arbeit... - pass -``` - -### 3. Memory Store - -Langzeit-Gedaechtnis fuer Agents mit TTL und Access-Tracking. - -```python -from agent_core.brain import MemoryStore - -store = MemoryStore(redis_client=redis, db_pool=pg_pool) - -# Erinnerung speichern -await store.remember( - key="evaluation:math:student-1", - value={"score": 85, "feedback": "Gut gemacht!"}, - agent_id="grader-agent", - ttl_days=30 -) - -# Erinnerung abrufen -result = await store.recall("evaluation:math:student-1") - -# Nach Pattern suchen -similar = await store.search("evaluation:math:*") -``` - -### 4. Context Manager - -Verwaltet Konversationskontext mit automatischer Komprimierung. - -```python -from agent_core.brain import ContextManager, MessageRole - -ctx_manager = ContextManager(redis_client=redis) - -# Kontext erstellen -context = ctx_manager.create_context( - session_id="session-123", - system_prompt="Du bist ein hilfreicher Tutor...", - max_messages=50 -) - -# Nachrichten hinzufuegen -context.add_message(MessageRole.USER, "Was ist Photosynthese?") -context.add_message(MessageRole.ASSISTANT, "Photosynthese ist...") - -# Fuer LLM API formatieren -messages = context.get_messages_for_llm() -``` - -### 5. Message Bus - -Inter-Agent Kommunikation via Redis Pub/Sub. - -```python -from agent_core.orchestrator import MessageBus, AgentMessage, MessagePriority - -bus = MessageBus(redis_client=redis) -await bus.start() - -# Handler registrieren -async def handle_message(msg): - return {"status": "processed"} - -await bus.subscribe("grader-agent", handle_message) - -# Nachricht senden -await bus.publish(AgentMessage( - sender="orchestrator", - receiver="grader-agent", - message_type="grade_request", - payload={"exam_id": "exam-1"}, - priority=MessagePriority.HIGH -)) - -# Request-Response Pattern -response = await bus.request(message, timeout=30.0) -``` - -### 6. Agent Supervisor - -Ueberwacht und koordiniert alle Agents. - -```python -from agent_core.orchestrator import AgentSupervisor, RestartPolicy - -supervisor = AgentSupervisor(message_bus=bus, heartbeat_monitor=monitor) - -# Agent registrieren -await supervisor.register_agent( - agent_id="tutor-1", - agent_type="tutor-agent", - restart_policy=RestartPolicy.ON_FAILURE, - max_restarts=3, - capacity=10 -) - -# Agent starten -await supervisor.start_agent("tutor-1") - -# Load Balancing -available = supervisor.get_available_agent("tutor-agent") -``` - -### 7. Task Router - -Intent-basiertes Routing mit Fallback-Ketten. - -```python -from agent_core.orchestrator import TaskRouter, RoutingRule, RoutingStrategy - -router = TaskRouter(supervisor=supervisor) - -# Eigene Regel hinzufuegen -router.add_rule(RoutingRule( - intent_pattern="learning_*", - agent_type="tutor-agent", - priority=10, - fallback_agent="orchestrator" -)) - -# Task routen -result = await router.route( - intent="learning_math", - context={"grade": 10}, - strategy=RoutingStrategy.LEAST_LOADED -) - -if result.success: - print(f"Routed to {result.agent_id}") -``` - -## SOUL Files - -SOUL-Dateien definieren die Persoenlichkeit und Verhaltensregeln jedes Agents. - -| Agent | SOUL File | Verantwortlichkeit | -|-------|-----------|-------------------| -| TutorAgent | tutor-agent.soul.md | Lernbegleitung, Fragen beantworten | -| GraderAgent | grader-agent.soul.md | Klausur-Korrektur, Bewertung | -| QualityJudge | quality-judge.soul.md | BQAS Qualitaetspruefung | -| AlertAgent | alert-agent.soul.md | Monitoring, Benachrichtigungen | -| Orchestrator | orchestrator.soul.md | Task-Koordination | - -## Datenbank-Schema - -### agent_sessions - -```sql -CREATE TABLE agent_sessions ( - id UUID PRIMARY KEY, - agent_type VARCHAR(50) NOT NULL, - user_id UUID REFERENCES users(id), - state VARCHAR(20) NOT NULL DEFAULT 'active', - context JSONB DEFAULT '{}', - checkpoints JSONB DEFAULT '[]', - created_at TIMESTAMPTZ DEFAULT NOW(), - updated_at TIMESTAMPTZ DEFAULT NOW(), - last_heartbeat TIMESTAMPTZ DEFAULT NOW() -); -``` - -### agent_memory - -```sql -CREATE TABLE agent_memory ( - id UUID PRIMARY KEY, - namespace VARCHAR(100) NOT NULL, - key VARCHAR(500) NOT NULL, - value JSONB NOT NULL, - agent_id VARCHAR(50) NOT NULL, - access_count INTEGER DEFAULT 0, - created_at TIMESTAMPTZ DEFAULT NOW(), - expires_at TIMESTAMPTZ, - UNIQUE(namespace, key) -); -``` - -### agent_messages - -```sql -CREATE TABLE agent_messages ( - id UUID PRIMARY KEY, - sender VARCHAR(50) NOT NULL, - receiver VARCHAR(50) NOT NULL, - message_type VARCHAR(50) NOT NULL, - payload JSONB NOT NULL, - priority INTEGER DEFAULT 1, - correlation_id UUID, - created_at TIMESTAMPTZ DEFAULT NOW() -); -``` - -## Integration - -### Mit Voice-Service - -```python -from services.enhanced_task_orchestrator import EnhancedTaskOrchestrator - -orchestrator = EnhancedTaskOrchestrator( - redis_client=redis, - db_pool=pg_pool -) - -await orchestrator.start() - -# Session fuer Voice-Interaktion -session = await orchestrator.create_session( - voice_session_id="voice-123", - user_id="teacher-1" -) - -# Task verarbeiten (nutzt Multi-Agent wenn noetig) -await orchestrator.process_task(task) -``` - -### Mit BQAS - -```python -from bqas.quality_judge_agent import QualityJudgeAgent - -judge = QualityJudgeAgent( - message_bus=bus, - memory_store=memory -) - -await judge.start() - -# Direkte Evaluation -result = await judge.evaluate( - response="Der Satz des Pythagoras...", - task_type="learning_math", - context={"user_input": "Was ist Pythagoras?"} -) - -if result["verdict"] == "production_ready": - # Response ist OK - pass -``` - -## Tests - -```bash -# In agent-core Verzeichnis -cd agent-core - -# Alle Tests ausfuehren -pytest -v - -# Mit Coverage -pytest --cov=. --cov-report=html - -# Einzelnes Test-Modul -pytest tests/test_session_manager.py -v - -# Async-Tests -pytest tests/test_message_bus.py -v -``` - -## Metriken - -Das Agent-Core exportiert folgende Metriken: - -| Metrik | Beschreibung | -|--------|--------------| -| `agent_session_duration_seconds` | Dauer von Agent-Sessions | -| `agent_heartbeat_delay_seconds` | Zeit seit letztem Heartbeat | -| `agent_message_latency_ms` | Latenz der Inter-Agent Kommunikation | -| `agent_memory_access_total` | Memory-Zugriffe pro Agent | -| `agent_error_total` | Fehler pro Agent-Typ | - -## Naechste Schritte - -1. **Migration ausfuehren**: `psql -f backend/migrations/add_agent_core_tables.sql` -2. **Voice-Service erweitern**: Enhanced Orchestrator aktivieren -3. **BQAS integrieren**: Quality Judge Agent starten -4. **Monitoring aufsetzen**: Metriken in Grafana integrieren +# Agent Core + +!!! info "Verschoben nach breakpilot-lehrer" + Agent Core gehoert zum **breakpilot-lehrer** Projekt (Team A). + + Die aktuelle Dokumentation befindet sich in der [Lehrer MkDocs-Instanz](http://macmini:8010/services/agent-core/). + + **Container:** `bp-lehrer-agent-core` + **Profil:** `dev` + **Repo:** `breakpilot-lehrer/agent-core/` diff --git a/docs-src/services/ai-compliance-sdk/index.md b/docs-src/services/ai-compliance-sdk/index.md index 420dc69..a11e613 100644 --- a/docs-src/services/ai-compliance-sdk/index.md +++ b/docs-src/services/ai-compliance-sdk/index.md @@ -1,97 +1,10 @@ # AI Compliance SDK -Das AI Compliance SDK ist ein Go-basierter Service zur Compliance-Bewertung von KI-Anwendungsfällen. - -## Übersicht - -| Eigenschaft | Wert | -|-------------|------| -| **Port** | 8090 | -| **Framework** | Go (Gin) | -| **Datenbank** | PostgreSQL | -| **Vector DB** | Qdrant (Legal RAG) | - -## Kernkomponenten - -``` -┌─────────────────────────────────────────────────────────────────────────────┐ -│ UCCA System │ -├─────────────────────────────────────────────────────────────────────────────┤ -│ │ -│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ -│ │ Frontend │───>│ SDK API │───>│ PostgreSQL │ │ -│ │ (Next.js) │ │ (Go) │ │ Database │ │ -│ └──────────────┘ └──────┬───────┘ └──────────────┘ │ -│ │ │ -│ ┌────────────────────┼────────────────────┐ │ -│ │ │ │ │ -│ ▼ ▼ ▼ │ -│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ -│ │ Policy │ │ Escalation │ │ Legal RAG │ │ -│ │ Engine │ │ Workflow │ │ (Qdrant) │ │ -│ │ (45 Regeln) │ │ (E0-E3) │ │ 2,274 Chunks │ │ -│ └──────────────┘ └──────────────┘ └──────────────┘ │ -│ │ -└─────────────────────────────────────────────────────────────────────────────┘ -``` - -## Features - -- **UCCA (Use-Case Compliance Advisor)**: Deterministische Bewertung von KI-Anwendungsfällen -- **Policy Engine**: 45 regelbasierte Compliance-Prüfungen -- **License Policy Engine**: Standards/Normen-Compliance (DIN, ISO, VDI) -- **Legal RAG**: Semantische Suche in EU-Verordnungen (DSGVO, AI Act, NIS2) -- **Eskalations-Workflow**: E0-E3 Stufen mit Human-in-the-Loop -- **Wizard & Legal Assistant**: Geführte Eingabe mit Rechtsassistent -- **Generic Obligations Framework**: NIS2, DSGVO, AI Act Module - -## Kernprinzip - -> **"LLM ist NICHT die Quelle der Wahrheit. Wahrheit = Regeln + Evidenz. LLM = Übersetzer + Subsumptionshelfer"** - -Das System folgt einem strikten **Human-in-the-Loop** Ansatz: - -1. **Deterministische Regeln** treffen alle Compliance-Entscheidungen -2. **LLM** erklärt nur Ergebnisse, überschreibt nie BLOCK-Entscheidungen -3. **Menschen** (DSB, Legal) treffen finale Entscheidungen bei kritischen Fällen - -## API-Endpunkte - -### Assessment - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| POST | `/sdk/v1/ucca/assess` | Assessment erstellen | -| GET | `/sdk/v1/ucca/assessments` | Assessments auflisten | -| GET | `/sdk/v1/ucca/assessments/:id` | Assessment abrufen | -| POST | `/sdk/v1/ucca/assessments/:id/explain` | LLM-Erklärung generieren | - -### Eskalation - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| GET | `/sdk/v1/ucca/escalations` | Eskalationen auflisten | -| POST | `/sdk/v1/ucca/escalations/:id/decide` | Entscheidung treffen | - -### Obligations Framework - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| POST | `/sdk/v1/ucca/obligations/assess` | Pflichten-Assessment | -| POST | `/sdk/v1/ucca/obligations/export/memo` | PDF-Export | - -## Weiterführende Dokumentation - -- [Architektur](./ARCHITECTURE.md) - Detaillierte Systemarchitektur -- [Entwickler-Guide](./DEVELOPER.md) - Entwickler-Dokumentation -- [Auditor-Dokumentation](./AUDITOR_DOCUMENTATION.md) - Dokumentation für externe Auditoren - -## Tests - -```bash -cd ai-compliance-sdk -go test -v ./... - -# Mit Coverage -go test -cover ./... -``` +!!! info "Verschoben nach breakpilot-compliance" + Das AI Compliance SDK gehoert zum **breakpilot-compliance** Projekt (Team B). + + Die aktuelle Dokumentation befindet sich in der [Compliance MkDocs-Instanz](http://macmini:8011/services/ai-compliance-sdk/). + + **Container:** `bp-compliance-ai-sdk` + **Ports:** 8090 (intern), 8093 (via Nginx) + **Repo:** `breakpilot-compliance/ai-compliance-sdk/` diff --git a/docs-src/services/ki-daten-pipeline/index.md b/docs-src/services/ki-daten-pipeline/index.md index d9f824b..e6fc8b2 100644 --- a/docs-src/services/ki-daten-pipeline/index.md +++ b/docs-src/services/ki-daten-pipeline/index.md @@ -1,215 +1,8 @@ # KI-Daten-Pipeline -Die KI-Daten-Pipeline ist ein zusammenhaengendes System aus drei Modulen, das den Datenfluss von der Erfassung bis zur semantischen Suche abbildet. - -## Uebersicht - -```mermaid -flowchart LR - subgraph OCR["OCR-Labeling"] - A[Klausur-Scans] --> B[OCR Erkennung] - B --> C[Ground Truth Labels] - end - - subgraph RAG["RAG Pipeline"] - D[PDF Dokumente] --> E[Text-Extraktion] - E --> F[Chunking] - F --> G[Embedding] - end - - subgraph SEARCH["Daten & RAG"] - H[Qdrant Collections] - I[Semantische Suche] - end - - C -->|Export| D - G -->|Indexierung| H - H --> I - I -->|Ergebnisse| J[Klausur-Korrektur] -``` - -## Module - -| Modul | Pfad | Funktion | Backend | -|-------|------|----------|---------| -| **OCR-Labeling** | `/ai/ocr-labeling` | Ground Truth fuer Handschrift-OCR | klausur-service:8086 | -| **RAG Pipeline** | `/ai/rag-pipeline` | Dokument-Indexierung | klausur-service:8086 | -| **Daten & RAG** | `/ai/rag` | Vektor-Suche & Collection-Mapping | klausur-service:8086 | - -## Datenfluss - -### 1. OCR-Labeling (Eingabe) - -Das OCR-Labeling-Modul erfasst Ground Truth Daten fuer das Training von Handschrift-Erkennungsmodellen: - -- **Upload**: Klausur-Scans (PDF/Bilder) werden hochgeladen -- **OCR-Verarbeitung**: Mehrere OCR-Modelle erkennen den Text - - `llama3.2-vision:11b` - Vision LLM (beste Qualitaet) - - `trocr` - Microsoft Transformer (schnell) - - `paddleocr` - PaddleOCR + LLM (4x schneller) - - `donut` - Document Understanding (strukturiert) -- **Labeling**: Manuelles Pruefen und Korrigieren der OCR-Ergebnisse -- **Export**: Gelabelte Daten koennen exportiert werden fuer: - - TrOCR Fine-Tuning - - Llama Vision Fine-Tuning - - Generic JSON - -### 2. RAG Pipeline (Verarbeitung) - -Die RAG Pipeline verarbeitet Dokumente und macht sie suchbar: - -```mermaid -flowchart TD - A[Datenquellen] --> B[OCR/Text-Extraktion] - B --> C[Chunking] - C --> D[Embedding] - D --> E[Qdrant Indexierung] - - subgraph sources["Datenquellen"] - S1[NiBiS PDFs] - S2[Eigene EH] - S3[Rechtskorpus] - S4[Schulordnungen] - end -``` - -**Verarbeitungsschritte:** - -1. **Dokumentenextraktion**: PDFs und Bilder werden per OCR in Text umgewandelt -2. **Chunking**: Lange Texte werden in Abschnitte aufgeteilt - - Chunk-Groesse: 1000 Zeichen - - Ueberlappung: 200 Zeichen -3. **Embedding**: Jeder Chunk wird in einen Vektor umgewandelt - - Modell: `text-embedding-3-small` - - Dimensionen: 1536 -4. **Indexierung**: Vektoren werden in Qdrant gespeichert - -### 3. Daten & RAG (Ausgabe) - -Das Daten & RAG Modul ermoeglicht die Verwaltung und Suche: - -- **Collection-Uebersicht**: Status aller Qdrant Collections -- **Semantische Suche**: Fragen werden in Vektoren umgewandelt und aehnliche Dokumente gefunden -- **Regulierungs-Mapping**: Zeigt welche Regulierungen indexiert sind - -## Qdrant Collections - -| Collection | Inhalt | Status | -|------------|--------|--------| -| `bp_nibis_eh` | Offizielle NiBiS Erwartungshorizonte | Aktiv | -| `bp_eh` | Benutzerdefinierte Erwartungshorizonte | Aktiv | -| `bp_schulordnungen` | Schulordnungen aller Bundeslaender | In Arbeit | -| `bp_legal_corpus` | Rechtskorpus (DSGVO, AI Act, BSI, etc.) | Aktiv | - -## Technische Architektur - -### Services - -```mermaid -graph TB - subgraph Frontend["Admin-v2 (Next.js)"] - F1["/ai/ocr-labeling"] - F2["/ai/rag-pipeline"] - F3["/ai/rag"] - end - - subgraph Backend["klausur-service (Python)"] - B1[OCR Endpoints] - B2[Indexierungs-Jobs] - B3[Such-API] - end - - subgraph Storage["Datenbanken"] - D1[(PostgreSQL)] - D2[(Qdrant)] - D3[(MinIO)] - end - - F1 --> B1 - F2 --> B2 - F3 --> B3 - - B1 --> D1 - B1 --> D3 - B2 --> D2 - B3 --> D2 -``` - -### Backend-Endpunkte - -#### OCR-Labeling (`/api/v1/ocr-label/`) - -| Endpoint | Methode | Beschreibung | -|----------|---------|--------------| -| `/sessions` | GET/POST | Session-Verwaltung | -| `/sessions/{id}/upload` | POST | Bilder hochladen | -| `/queue` | GET | Labeling-Queue | -| `/confirm` | POST | OCR bestaetigen | -| `/correct` | POST | OCR korrigieren | -| `/skip` | POST | Item ueberspringen | -| `/stats` | GET | Statistiken | -| `/export` | POST | Trainingsdaten exportieren | - -#### RAG Pipeline (`/api/ai/rag-pipeline`) - -| Action | Beschreibung | -|--------|--------------| -| `jobs` | Indexierungs-Jobs auflisten | -| `dataset-stats` | Datensatz-Statistiken | -| `create-job` | Neue Indexierung starten | -| `pause` | Job pausieren | -| `resume` | Job fortsetzen | -| `cancel` | Job abbrechen | - -#### Legal Corpus (`/api/legal-corpus/`) - -| Endpoint | Beschreibung | -|----------|--------------| -| `/status` | Collection-Status | -| `/search` | Semantische Suche | -| `/ingest` | Dokumente indexieren | - -## Integration mit Klausur-Korrektur - -Die KI-Daten-Pipeline liefert Erwartungshorizont-Vorschlaege fuer die Klausur-Korrektur: - -```mermaid -sequenceDiagram - participant L as Lehrer - participant K as Klausur-Korrektur - participant R as RAG-Suche - participant Q as Qdrant - - L->>K: Schueler-Antwort pruefen - K->>R: EH-Vorschlaege laden - R->>Q: Semantische Suche - Q->>R: Top-k Chunks - R->>K: Relevante EH-Passagen - K->>L: Bewertungsvorschlaege -``` - -## Deployment - -Die Module werden als Teil des admin-v2 Containers deployed: - -```bash -# 1. Sync -rsync -avz --delete --exclude 'node_modules' --exclude '.next' --exclude '.git' \ - /Users/benjaminadmin/Projekte/breakpilot-pwa/admin-v2/ \ - macmini:/Users/benjaminadmin/Projekte/breakpilot-pwa/admin-v2/ - -# 2. Build & Deploy -ssh macmini "/usr/local/bin/docker compose \ - -f /Users/benjaminadmin/Projekte/breakpilot-pwa/docker-compose.yml \ - build --no-cache admin-v2 && \ - /usr/local/bin/docker compose \ - -f /Users/benjaminadmin/Projekte/breakpilot-pwa/docker-compose.yml \ - up -d admin-v2" -``` - -## Verwandte Dokumentation - -- [OCR Labeling Spezifikation](../klausur-service/OCR-Labeling-Spec.md) -- [RAG Admin Spezifikation](../klausur-service/RAG-Admin-Spec.md) -- [NiBiS Ingestion Pipeline](../klausur-service/NiBiS-Ingestion-Pipeline.md) -- [Multi-Agent Architektur](../../architecture/multi-agent.md) +!!! info "Verschoben nach breakpilot-lehrer" + Die KI-Daten-Pipeline gehoert zum **breakpilot-lehrer** Projekt (Team A). + + Die aktuelle Dokumentation befindet sich in der [Lehrer MkDocs-Instanz](http://macmini:8010/services/ki-daten-pipeline/). + + **Repo:** `breakpilot-lehrer/` diff --git a/docs-src/services/klausur-service/index.md b/docs-src/services/klausur-service/index.md index 22e50df..3c7dd54 100644 --- a/docs-src/services/klausur-service/index.md +++ b/docs-src/services/klausur-service/index.md @@ -1,173 +1,10 @@ -# Klausur-Service +# Klausur Service -Der Klausur-Service ist ein FastAPI-basierter Microservice fuer KI-gestuetzte Abitur-Klausurkorrektur. - -## Uebersicht - -| Eigenschaft | Wert | -|-------------|------| -| **Port** | 8086 | -| **Framework** | FastAPI (Python) | -| **Datenbank** | PostgreSQL + Qdrant (Vektor-DB) | -| **Speicher** | MinIO (Datei-Storage) | - -## Features - -- **OCR-Erkennung**: Automatische Texterkennung aus gescannten Klausuren -- **KI-Bewertung**: Automatische Bewertungsvorschlaege basierend auf Erwartungshorizont -- **BYOEH**: Bring-Your-Own-Expectation-Horizon mit Client-seitiger Verschluesselung -- **Fairness-Analyse**: Statistische Analyse der Bewertungskonsistenz -- **PDF-Export**: Gutachten und Notenuebersichten als PDF -- **Zweitkorrektur**: Vollstaendiger Workflow fuer Erst-, Zweit- und Drittkorrektur - -## Architektur - -``` -┌─────────────────────────────────────────────────────────────┐ -│ Frontend (Next.js) │ -│ /website/app/admin/klausur-korrektur/ │ -│ - Klausur-Liste │ -│ - Studenten-Liste │ -│ - Korrektur-Workspace (2/3-1/3 Layout) │ -│ - Fairness-Dashboard │ -└─────────────────────────────────────────────────────────────┘ - │ - ▼ -┌─────────────────────────────────────────────────────────────┐ -│ klausur-service (FastAPI) │ -│ Port 8086 - /klausur-service/backend/main.py │ -│ - Klausur CRUD (/api/v1/klausuren) │ -│ - Student Work (/api/v1/students) │ -│ - Annotations (/api/v1/annotations) │ -│ - BYOEH (/api/v1/eh) │ -│ - PDF Export │ -└─────────────────────────────────────────────────────────────┘ - │ - ▼ -┌─────────────────────────────────────────────────────────────┐ -│ Infrastruktur │ -│ - Qdrant (Vektor-DB fuer RAG) │ -│ - MinIO (Datei-Storage) │ -│ - PostgreSQL (Metadaten) │ -│ - Embedding-Service (Port 8087) │ -└─────────────────────────────────────────────────────────────┘ -``` - -## API Endpoints - -### Klausur-Verwaltung - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| GET | `/api/v1/klausuren` | Liste aller Klausuren | -| POST | `/api/v1/klausuren` | Neue Klausur erstellen | -| GET | `/api/v1/klausuren/{id}` | Klausur-Details | -| DELETE | `/api/v1/klausuren/{id}` | Klausur loeschen | - -### Studenten-Arbeiten - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| POST | `/api/v1/klausuren/{id}/students` | Arbeit hochladen | -| GET | `/api/v1/klausuren/{id}/students` | Studenten-Liste | -| GET | `/api/v1/students/{id}` | Einzelne Arbeit | -| PUT | `/api/v1/students/{id}/criteria` | Kriterien bewerten | -| PUT | `/api/v1/students/{id}/gutachten` | Gutachten speichern | - -### KI-Funktionen - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| POST | `/api/v1/students/{id}/gutachten/generate` | Gutachten generieren | -| GET | `/api/v1/klausuren/{id}/fairness` | Fairness-Analyse | -| POST | `/api/v1/students/{id}/eh-suggestions` | EH-Vorschlaege via RAG | - -### PDF-Export - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| GET | `/api/v1/students/{id}/export/gutachten` | Einzelgutachten PDF | -| GET | `/api/v1/students/{id}/export/annotations` | Anmerkungen PDF | -| GET | `/api/v1/klausuren/{id}/export/overview` | Notenuebersicht PDF | -| GET | `/api/v1/klausuren/{id}/export/all-gutachten` | Alle Gutachten PDF | - -## Notensystem - -Das System verwendet das deutsche 15-Punkte-System fuer Abiturklausuren: - -| Punkte | Prozent | Note | -|--------|---------|------| -| 15 | >= 95% | 1+ | -| 14 | >= 90% | 1 | -| 13 | >= 85% | 1- | -| 12 | >= 80% | 2+ | -| 11 | >= 75% | 2 | -| 10 | >= 70% | 2- | -| 9 | >= 65% | 3+ | -| 8 | >= 60% | 3 | -| 7 | >= 55% | 3- | -| 6 | >= 50% | 4+ | -| 5 | >= 45% | 4 | -| 4 | >= 40% | 4- | -| 3 | >= 33% | 5+ | -| 2 | >= 27% | 5 | -| 1 | >= 20% | 5- | -| 0 | < 20% | 6 | - -## Bewertungskriterien - -| Kriterium | Gewicht | Beschreibung | -|-----------|---------|--------------| -| Rechtschreibung | 15% | Orthografie | -| Grammatik | 15% | Grammatik & Syntax | -| Inhalt | 40% | Inhaltliche Qualitaet | -| Struktur | 15% | Aufbau & Gliederung | -| Stil | 15% | Ausdruck & Stil | - -## Verzeichnisstruktur - -``` -klausur-service/ -├── backend/ -│ ├── main.py # API Endpoints + Datenmodelle -│ ├── qdrant_service.py # Vektor-Datenbank Operationen -│ ├── eh_pipeline.py # BYOEH Verarbeitung -│ ├── hybrid_search.py # Hybrid Search (BM25 + Semantic) -│ └── requirements.txt # Python Dependencies -├── frontend/ -│ └── src/ -│ ├── components/ # React Komponenten -│ ├── pages/ # Seiten -│ └── services/ # API Client -└── docs/ - ├── BYOEH-Architecture.md - └── BYOEH-Developer-Guide.md -``` - -## Konfiguration - -### Umgebungsvariablen - -```env -# Klausur-Service -KLAUSUR_SERVICE_PORT=8086 -QDRANT_URL=http://qdrant:6333 -MINIO_ENDPOINT=minio:9000 -MINIO_ACCESS_KEY=... -MINIO_SECRET_KEY=... - -# Embedding-Service -EMBEDDING_SERVICE_URL=http://embedding:8087 -OPENAI_API_KEY=sk-... - -# BYOEH -BYOEH_ENCRYPTION_ENABLED=true -EH_UPLOAD_DIR=/app/eh-uploads -``` - -## Weiterführende Dokumentation - -- [BYOEH Architektur](./BYOEH-Architecture.md) - Client-seitige Verschluesselung -- [OCR Compare](./OCR-Compare.md) - Block Review Feature fuer OCR-Vergleich -- [Zeugnis-System](../../architecture/zeugnis-system.md) - Zeugniserstellung -- [Backend API](../../api/backend-api.md) - Allgemeine API-Dokumentation +!!! info "Verschoben nach breakpilot-lehrer" + Der Klausur Service gehoert zum **breakpilot-lehrer** Projekt (Team A). + + Die aktuelle Dokumentation befindet sich in der [Lehrer MkDocs-Instanz](http://macmini:8010/services/klausur-service/). + + **Container:** `bp-lehrer-klausur-service` + **Port:** 8086 + **Repo:** `breakpilot-lehrer/klausur-service/` diff --git a/docs-src/services/voice-service/index.md b/docs-src/services/voice-service/index.md index 7ffa502..35b843b 100644 --- a/docs-src/services/voice-service/index.md +++ b/docs-src/services/voice-service/index.md @@ -1,160 +1,10 @@ # Voice Service -Der Voice Service ist eine Voice-First Interface für die Breakpilot-Plattform mit DSGVO-konformem Design. - -## Übersicht - -| Eigenschaft | Wert | -|-------------|------| -| **Port** | 8082 | -| **Framework** | FastAPI (Python) | -| **Streaming** | WebSocket | -| **DSGVO** | Privacy-by-Design | - -## Architektur - -``` -┌─────────────────────────────────────────────────────────────────┐ -│ Voice Service (Port 8082) │ -├─────────────────────────────────────────────────────────────────┤ -│ │ -│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ -│ │ Sessions │───>│ Task │───>│ BQAS │ │ -│ │ API │ │ Orchestrator │ │ (Quality) │ │ -│ └──────────────┘ └──────────────┘ └──────────────┘ │ -│ │ │ -│ ┌────────────────────┼────────────────────┐ │ -│ │ │ │ │ -│ ▼ ▼ ▼ │ -│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ -│ │ WebSocket │ │ Encryption │ │ Logging │ │ -│ │ Streaming │ │ Service │ │ (structlog) │ │ -│ └──────────────┘ └──────────────┘ └──────────────┘ │ -│ │ -└─────────────────────────────────────────────────────────────────┘ -``` - -## Kernkomponenten - -### PersonaPlex + TaskOrchestrator - -- Voice-first Interface für Breakpilot -- Real-time Voice Processing -- Multi-Agent Integration - -### DSGVO-Compliance (Privacy-by-Design) - -| Feature | Beschreibung | -|---------|--------------| -| **Keine Audio-Persistenz** | Nur RAM-basiert, keine dauerhafte Speicherung | -| **Namespace-Verschlüsselung** | Schlüssel nur auf Lehrer-Gerät | -| **TTL-basierte Löschung** | Automatische Datenlöschung nach Zeitablauf | -| **Transcript-Verschlüsselung** | Verschlüsselte Transkripte | - -## API-Endpunkte - -### Sessions - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| POST | `/api/v1/sessions` | Session erstellen | -| GET | `/api/v1/sessions/:id` | Session abrufen | -| DELETE | `/api/v1/sessions/:id` | Session beenden | - -### Task Orchestration - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| POST | `/api/v1/tasks` | Task erstellen | -| GET | `/api/v1/tasks/:id` | Task-Status abrufen | - -### BQAS (Quality Assessment) - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| POST | `/api/v1/bqas/evaluate` | Qualitätsbewertung | -| GET | `/api/v1/bqas/metrics` | Metriken abrufen | - -### WebSocket - -| Endpoint | Beschreibung | -|----------|--------------| -| `/ws/voice` | Real-time Voice Streaming | - -### Health - -| Method | Endpoint | Beschreibung | -|--------|----------|--------------| -| GET | `/health` | Health Check | -| GET | `/ready` | Readiness Check | - -## Verzeichnisstruktur - -``` -voice-service/ -├── main.py # FastAPI Application -├── config.py # Konfiguration -├── pyproject.toml # Projekt-Metadaten -├── requirements.txt # Dependencies -├── api/ -│ ├── sessions.py # Session-Management -│ ├── streaming.py # WebSocket Voice Streaming -│ ├── tasks.py # Task Orchestration -│ └── bqas.py # Quality Assessment -├── services/ -│ ├── task_orchestrator.py # Task-Routing -│ └── encryption.py # Verschlüsselung -├── bqas/ -│ ├── judge.py # LLM Judge -│ └── quality_judge_agent.py # Agent-Integration -├── models/ # Datenmodelle -├── scripts/ # Utility-Scripts -└── tests/ # Test-Suite -``` - -## Konfiguration - -```env -# .env -VOICE_SERVICE_PORT=8082 -REDIS_URL=redis://localhost:6379 -DATABASE_URL=postgresql://... -ENCRYPTION_KEY=... -TTL_MINUTES=60 -``` - -## Entwicklung - -```bash -# Dependencies installieren -cd voice-service -pip install -r requirements.txt - -# Server starten -uvicorn main:app --reload --port 8082 - -# Tests ausführen -pytest -v -``` - -## Docker - -Der Service läuft als Teil von docker-compose.yml: - -```yaml -voice-service: - build: - context: ./voice-service - ports: - - "8082:8082" - environment: - - REDIS_URL=redis://valkey:6379 - depends_on: - - valkey - - postgres -``` - -## Weiterführende Dokumentation - -- [Multi-Agent Architektur](../../architecture/multi-agent.md) -- [BQAS Quality System](../../architecture/bqas.md) +!!! info "Verschoben nach breakpilot-lehrer" + Der Voice Service gehoert zum **breakpilot-lehrer** Projekt (Team A). + + Die aktuelle Dokumentation befindet sich in der [Lehrer MkDocs-Instanz](http://macmini:8010/services/voice-service/). + + **Container:** `bp-lehrer-voice-service` + **Port:** 8091 + **Repo:** `breakpilot-lehrer/voice-service/`