# Zeugnis-System Dokumentation ## Übersicht Das Zeugnis-System ist ein umfassendes Modul für die Verwaltung und Nutzung von Zeugnisverordnungen aller 16 deutschen Bundesländer. Es besteht aus drei Hauptkomponenten: 1. **Rights-Aware Crawler** - Automatische Sammlung von Verordnungen 2. **Training Dashboard** - Steuerung und Überwachung von KI-Trainingsprozessen 3. **Lehrer-Frontend** - Intuitive Benutzeroberfläche für Lehrkräfte --- ## Inhaltsverzeichnis 1. [Architektur](#architektur) 2. [Rights-Aware Crawler](#rights-aware-crawler) 3. [Training Dashboard](#training-dashboard) 4. [Lehrer-Frontend](#lehrer-frontend) 5. [API-Referenz](#api-referenz) 6. [Deployment](#deployment) --- ## Architektur ``` ┌─────────────────────────────────────────────────────────────────┐ │ Frontend (Next.js) │ ├─────────────────┬─────────────────┬─────────────────────────────┤ │ /admin/training │ /admin/zeugnis │ /zeugnisse (Lehrer) │ │ Dashboard │ Crawler Admin │ Assistent │ └────────┬────────┴────────┬────────┴────────┬────────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ API Proxy (/api/admin/...) │ └────────────────────────────┬────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Klausur-Service (FastAPI, Port 8086) │ ├─────────────────┬─────────────────┬─────────────────────────────┤ │ zeugnis_api.py │ zeugnis_ │ zeugnis_models.py │ │ (Endpoints) │ crawler.py │ (Datenmodelle) │ └────────┬────────┴────────┬────────┴────────┬────────────────────┘ │ │ │ ▼ ▼ ▼ ┌────────────────┐ ┌───────────────┐ ┌───────────────────────────┐ │ PostgreSQL │ │ MinIO │ │ Qdrant │ │ (Metadata) │ │ (Dokumente) │ │ (Vektoren) │ └────────────────┘ └───────────────┘ └───────────────────────────┘ ``` --- ## Rights-Aware Crawler ### Konzept Der Rights-Aware Crawler sammelt automatisch Zeugnisverordnungen und respektiert dabei die Urheberrechte: - **Training erlaubt**: Amtliche Werke nach §5 UrhG - **Training nicht erlaubt**: Dokumente ohne explizite Lizenzierung ### Bundesländer-Berechtigungen | Bundesland | Training | Begründung | |------------|----------|------------| | Baden-Württemberg | ✅ Ja | Amtliches Werk | | Bayern | ✅ Ja | Amtliches Werk | | Berlin | ❌ Nein | Keine Lizenz | | Brandenburg | ❌ Nein | Keine Lizenz | | Bremen | ❌ Nein | Eingeschränkt | | Hamburg | ❌ Nein | Keine Lizenz | | Hessen | ✅ Ja | Amtliches Werk | | Mecklenburg-Vorpommern | ❌ Nein | Eingeschränkt | | Niedersachsen | ✅ Ja | Amtliches Werk | | Nordrhein-Westfalen | ✅ Ja | Amtliches Werk | | Rheinland-Pfalz | ✅ Ja | Amtliches Werk | | Saarland | ❌ Nein | Keine Lizenz | | Sachsen | ✅ Ja | Amtliches Werk | | Sachsen-Anhalt | ❌ Nein | Eingeschränkt | | Schleswig-Holstein | ✅ Ja | Amtliches Werk | | Thüringen | ✅ Ja | Amtliches Werk | ### Admin-Oberfläche **URL**: `/admin/zeugnisse-crawler` #### Features: - Übersicht aller 16 Bundesländer - Training-Status pro Bundesland - Crawler starten/stoppen - Dokument-Browser - Audit-Trail #### Screenshot-Bereiche: 1. **Stats-Karten**: Gesamtdokumente, indexierte Dokumente, Training-erlaubt 2. **Bundesland-Tabelle**: Status, Dokumentanzahl, letzter Crawl 3. **Dokument-Liste**: Filterbar, mit Statusanzeige ### API-Endpunkte ``` GET /api/v1/admin/zeugnis/sources # Alle Bundesländer POST /api/v1/admin/zeugnis/sources # Neue Quelle PUT /api/v1/admin/zeugnis/sources/{id}/verify # Lizenz verifizieren GET /api/v1/admin/zeugnis/crawler/status # Crawler-Status POST /api/v1/admin/zeugnis/crawler/start # Crawler starten POST /api/v1/admin/zeugnis/crawler/stop # Crawler stoppen GET /api/v1/admin/zeugnis/documents # Dokumente abrufen GET /api/v1/admin/zeugnis/stats # Statistiken GET /api/v1/admin/zeugnis/audit/events # Audit-Trail ``` --- ## Training Dashboard ### Konzept Das Training Dashboard ermöglicht die vollständige Kontrolle über KI-Trainingsprozesse: - Echtzeit-Monitoring von Trainingsjobs - Konfiguration von Hyperparametern - Visualisierung von Metriken (Loss, Precision, Recall, F1) - Multi-Bundesland Training **URL**: `/admin/training` ### Features #### 1. Übersichtskarten - Dokumente gesamt / indexiert - Training-erlaubte Dokumente - Heute gecrawlt / Fehler #### 2. Training-Job-Karten Jeder laufende Job zeigt: - **Progress Ring**: Visueller Fortschritt (0-100%) - **Epochen-Fortschritt**: Aktuelle / Gesamt - **Dokument-Fortschritt**: Verarbeitet / Gesamt - **Metriken**: Loss, Val Loss, Precision, F1 - **Loss-Chart**: Verlaufsgrafik #### 3. Datensatz-Übersicht - Verteilung nach Bundesland (Balkendiagramm) - Verteilung nach Dokumenttyp - Training-erlaubte Quote #### 4. Neues Training starten (Wizard) **Schritt 1 - Datenauswahl:** - Checkbox-Grid für Bundesländer - Nur Training-erlaubte wählbar - Deaktivierte Anzeige für nicht-erlaubte **Schritt 2 - Parameter:** - Batch Size (Standard: 16) - Learning Rate (Standard: 0.00005) - Epochen (Standard: 10) - Warmup Steps (Standard: 500) - Mixed Precision (FP16) Toggle **Schritt 3 - Bestätigung:** - Zusammenfassung aller Einstellungen - Geschätzte Trainingszeit - Start-Button ### Training-Kontrolle | Aktion | Beschreibung | |--------|--------------| | Pausieren | Training temporär unterbrechen | | Fortsetzen | Pausiertes Training fortsetzen | | Abbrechen | Training beenden (Daten bleiben) | | Details | Erweiterte Metriken anzeigen | --- ## Lehrer-Frontend ### Konzept Das Lehrer-Frontend bietet eine intuitive Oberfläche für Lehrkräfte zur Recherche in Zeugnisverordnungen. **URL**: `/zeugnisse` ### Onboarding-Wizard Beim ersten Besuch führt ein 4-stufiger Wizard durch die Einrichtung: #### Schritt 1: Willkommen - Vorstellung des Assistenten - Feature-Übersicht (Suche, KI-Antworten, 16 Bundesländer) #### Schritt 2: Bundesland - Grid mit allen 16 Bundesländern - Emoji-Icons für visuelle Zuordnung - Auswahl speichert bevorzugtes Bundesland #### Schritt 3: Schulform - Auswahl der Schulform: - Grundschule - Hauptschule - Realschule - Gymnasium - Gesamtschule - Förderschule - Berufsschule #### Schritt 4: Fertig - Zusammenfassung der Einstellungen - Option zum Ändern ### Hauptfunktionen #### Tab 1: Assistent (Chat) - KI-gestützter Dialog - Fragen in natürlicher Sprache - Quellenangaben zu Antworten - Vorgeschlagene Fragen #### Tab 2: Suche - Volltextsuche in Verordnungen - Letzte Suchen (gespeichert) - Häufige Fragen als Schnellauswahl - Relevanz-Score pro Ergebnis #### Tab 3: Dokumente - Dokumenten-Browser - Filterbar nach Bundesland - Download-Möglichkeit ### Häufige Fragen (vordefiniert) 1. "Wie formuliere ich eine Bemerkung zur Arbeits- und Sozialverhalten?" 2. "Welche Noten dürfen im Zeugnis stehen?" 3. "Wann sind Zeugniskonferenzen durchzuführen?" 4. "Wie gehe ich mit Fehlzeiten um?" 5. "Welche Unterschriften sind erforderlich?" 6. "Wie werden Versetzungsentscheidungen dokumentiert?" ### Benutzereinstellungen Gespeichert im localStorage: - Bundesland - Schulform - Wizard-Status - Favoriten - Letzte Suchen --- ## API-Referenz ### Zeugnis-Crawler API #### GET /api/v1/admin/zeugnis/sources Listet alle Bundesland-Quellen. **Response:** ```json [ { "id": "uuid", "bundesland": "ni", "name": "Niedersachsen", "license_type": "gov_statute", "training_allowed": true, "verified_by": "admin@example.com", "verified_at": "2024-01-15T10:00:00Z" } ] ``` #### POST /api/v1/admin/zeugnis/crawler/start Startet den Crawler. **Request:** ```json { "bundesland": "ni", // Optional: Nur dieses Bundesland "priority": 5 // 1-10, Standard: 5 } ``` **Response:** ```json { "success": true, "message": "Crawler started" } ``` #### GET /api/v1/admin/zeugnis/stats Holt Statistiken. **Response:** ```json { "total_sources": 16, "total_documents": 632, "indexed_documents": 489, "training_allowed_documents": 423, "active_crawls": 1, "per_bundesland": [...] } ``` --- ## Deployment ### Voraussetzungen - Docker & Docker Compose - PostgreSQL 16+ - Qdrant 1.12+ - MinIO ### Umgebungsvariablen ```env # Klausur-Service QDRANT_URL=http://qdrant:6333 MINIO_ENDPOINT=minio:9000 MINIO_ACCESS_KEY=breakpilot MINIO_SECRET_KEY=breakpilot123 MINIO_BUCKET=breakpilot-rag EMBEDDING_BACKEND=local # oder "openai" # Website KLAUSUR_SERVICE_URL=http://klausur-service:8086 ``` ### Docker Compose ```yaml services: qdrant: image: qdrant/qdrant:v1.12.1 minio: image: minio/minio:latest klausur-service: build: ./klausur-service depends_on: - qdrant - minio ``` ### Initialisierung 1. Container starten: ```bash docker-compose up -d ``` 2. Datenbank initialisieren: ```bash curl -X POST http://localhost:8086/api/v1/admin/zeugnis/init ``` 3. Crawler starten: ```bash curl -X POST http://localhost:8086/api/v1/admin/zeugnis/crawler/start ``` 4. Frontend öffnen: - Admin: http://localhost:3000/admin/zeugnisse-crawler - Training: http://localhost:3000/admin/training - Lehrer: http://localhost:3000/zeugnisse --- ## Sicherheit ### Datenschutz - **Audit-Trail**: Alle Zugriffe werden protokolliert - **DSGVO-Export**: `/api/v1/admin/zeugnis/audit/export` - **Verschlüsselung**: Sensible Daten in MinIO verschlüsselt ### Rights Management - Training nur mit expliziter Erlaubnis - Lizenz-Verifizierung durch Admin - Quellen-Nachverfolgung für alle Dokumente --- ## Support Bei Fragen oder Problemen: - GitHub Issues: https://github.com/... - E-Mail: support@breakpilot.app