# Software Bill of Materials (SBOM) ## BreakPilot PWA **Version:** 1.5.0 **Letzte Aktualisierung:** 2026-02-08 **Verantwortlicher:** BreakPilot Development Team --- ## Übersicht Diese SBOM dokumentiert alle Open-Source-Komponenten, die in BreakPilot verwendet werden, einschließlich ihrer Lizenzen und Nutzungsbedingungen für den kommerziellen Einsatz. --- ## 1. LibreChat (Chat-Interface) | Eigenschaft | Wert | |-------------|------| | **Name** | LibreChat | | **Version** | latest (dev) | | **Repository** | https://github.com/danny-avila/LibreChat | | **Lizenz** | MIT License | | **Copyright** | Copyright (c) 2025 LibreChat | | **Kommerzielle Nutzung** | Erlaubt | | **Attribution erforderlich** | Ja (Lizenztext beibehalten) | | **Verwendungszweck** | Chat/Prompt-Oberfläche für Nutzer | ### LibreChat Abhängigkeiten (Container) | Komponente | Version | Lizenz | Kommerzielle Nutzung | |------------|---------|--------|----------------------| | MongoDB | latest | SSPL-1.0 | Ja (mit Einschränkungen*) | | Meilisearch | v1.12.3 | MIT | Ja | | PostgreSQL (pgvector) | 0.8.0-pg15 | PostgreSQL License | Ja | | LibreChat RAG API | latest (dev-lite) | MIT | Ja | > *MongoDB SSPL: Erlaubt kommerzielle Nutzung, solange MongoDB nicht als Service angeboten wird. --- ## 2. BreakPilot Backend (Python/FastAPI) | Eigenschaft | Wert | |-------------|------| | **Framework** | FastAPI | | **Lizenz** | MIT License | | **Repository** | https://github.com/tiangolo/fastapi | | **Kommerzielle Nutzung** | Erlaubt | ### Python Dependencies | Paket | Version | Lizenz | Kommerzielle Nutzung | |-------|---------|--------|----------------------| | FastAPI | 0.123.9 | MIT | Ja | | Uvicorn | 0.38.0 | BSD-3-Clause | Ja | | Starlette | 0.49.3 | BSD-3-Clause | Ja | | Pydantic | 2.12.5 | MIT | Ja | | httpx | 0.28.1 | BSD-3-Clause | Ja | | requests | 2.32.5 | Apache-2.0 | Ja | | PyJWT | 2.10.1 | MIT | Ja | | python-multipart | 0.0.20 | Apache-2.0 | Ja | | Jinja2 | 3.1.6 | BSD-3-Clause | Ja | | WeasyPrint | 66.0 | BSD-3-Clause | Ja | | python-dateutil | 2.9.0 | Apache-2.0/BSD | Ja | | python-docx | 1.2.0 | MIT | Ja | | mammoth | 1.11.0 | BSD-2-Clause | Ja | | Markdown | 3.9 | BSD-3-Clause | Ja | | Pillow | 11.3.0 | HPND | Ja | | opencv-python | 4.12.0 | Apache-2.0 | Ja | | numpy | 2.0.2 | BSD-3-Clause | Ja | | anthropic | 0.75.0 | MIT | Ja | | email-validator | 2.3.0 | CC0-1.0 | Ja | | PyJWKClient (PyJWT) | 2.10.1 | MIT | Ja | Keycloak JWKS Validierung | | pytest | 8.4.2 | MIT | Ja | | pytest-asyncio | 1.2.0 | Apache-2.0 | Ja | | beautifulsoup4 | 4.12.3 | MIT | Ja | --- ## 3. Consent Service (Go) | Eigenschaft | Wert | |-------------|------| | **Sprache** | Go 1.23+ | | **Lizenz** | Proprietär (BreakPilot) | ### Go Dependencies (Direkt) | Paket | Version | Lizenz | Kommerzielle Nutzung | |-------|---------|--------|----------------------| | gin-gonic/gin | 1.11.0 | MIT | Ja | | golang-jwt/jwt/v5 | 5.3.0 | MIT | Ja | | google/uuid | 1.6.0 | BSD-3-Clause | Ja | | jackc/pgx/v5 | 5.7.6 | MIT | Ja | | joho/godotenv | 1.5.1 | MIT | Ja | | skip2/go-qrcode | 0.0.0 | MIT | Ja | | golang.org/x/crypto | 0.40.0 | BSD-3-Clause | Ja | ### Go Dependencies (Indirekt/Transitiv) | Paket | Version | Lizenz | Kommerzielle Nutzung | |-------|---------|--------|----------------------| | bytedance/sonic | 1.14.0 | Apache-2.0 | Ja | | go-playground/validator/v10 | 10.27.0 | MIT | Ja | | goccy/go-json | 0.10.2 | MIT | Ja | | jackc/pgpassfile | 1.0.0 | MIT | Ja | | jackc/pgservicefile | 1.0.0 | MIT | Ja | | jackc/puddle/v2 | 2.2.2 | MIT | Ja | | ugorji/go/codec | 1.3.0 | MIT | Ja | | google.golang.org/protobuf | 1.36.9 | BSD-3-Clause | Ja | --- ## 4. Matrix Synapse (Schulkommunikation) | Eigenschaft | Wert | |-------------|------| | **Name** | Matrix Synapse | | **Version** | latest | | **Repository** | https://github.com/element-hq/synapse | | **Docker Image** | matrixdotorg/synapse:latest | | **Lizenz** | AGPL-3.0 | | **Copyright** | Copyright (c) 2014-2025 Element (formerly New Vector Ltd) | | **Kommerzielle Nutzung** | Erlaubt (mit Bedingungen*) | | **Attribution erforderlich** | Ja | | **Verwendungszweck** | E2EE Messenger für Eltern-Lehrer-Kommunikation | > *AGPL-3.0: Kommerzielle Nutzung erlaubt. Wenn Sie Synapse modifizieren und als Service anbieten, müssen die Änderungen unter AGPL veröffentlicht werden. Bei reiner Nutzung ohne Modifikation keine zusätzlichen Pflichten. ### Matrix Protocol | Komponente | Lizenz | Beschreibung | |------------|--------|--------------| | Matrix Protocol | Apache-2.0 | Offenes Kommunikationsprotokoll | | Megolm (E2EE) | Apache-2.0 | Ende-zu-Ende-Verschlüsselung | ### Matrix Service Dependencies (Go) | Paket | Version | Lizenz | Kommerzielle Nutzung | |-------|---------|--------|----------------------| | google/uuid | 1.6.0 | BSD-3-Clause | Ja | | net/http (stdlib) | Go 1.21+ | BSD-3-Clause | Ja | | encoding/json (stdlib) | Go 1.21+ | BSD-3-Clause | Ja | --- ## 5. Jitsi Meet (Videokonferenzen) | Eigenschaft | Wert | |-------------|------| | **Name** | Jitsi Meet | | **Version** | stable-9823 | | **Repository** | https://github.com/jitsi/jitsi-meet | | **Docker Images** | jitsi/web, jitsi/prosody, jitsi/jicofo, jitsi/jvb | | **Lizenz** | Apache-2.0 | | **Copyright** | Copyright (c) 2013-2025 Atlassian Pty Ltd & Contributors | | **Kommerzielle Nutzung** | Erlaubt | | **Attribution erforderlich** | Ja (NOTICE-Datei beibehalten) | | **Verwendungszweck** | Videokonferenzen für Schulungen, Elterngespräche | ### Jitsi Komponenten | Komponente | Image | Lizenz | Beschreibung | |------------|-------|--------|--------------| | Jitsi Web | jitsi/web:stable-9823 | Apache-2.0 | Web-Frontend | | Prosody | jitsi/prosody:stable-9823 | MIT | XMPP-Server | | Jicofo | jitsi/jicofo:stable-9823 | Apache-2.0 | Conference Focus | | Jitsi Videobridge | jitsi/jvb:stable-9823 | Apache-2.0 | WebRTC SFU | ### Jitsi Abhängigkeiten | Komponente | Lizenz | Beschreibung | |------------|--------|--------------| | WebRTC | BSD-3-Clause | Echtzeit-Kommunikation | | Olibs (Olm) | Apache-2.0 | Verschlüsselung | | Ogg/Opus | BSD-3-Clause | Audio-Codec | | VP8/VP9 | BSD-3-Clause | Video-Codec | ### Jitsi Service Dependencies (Go) | Paket | Version | Lizenz | Kommerzielle Nutzung | |-------|---------|--------|----------------------| | google/uuid | 1.6.0 | BSD-3-Clause | Ja | | crypto/hmac (stdlib) | Go 1.21+ | BSD-3-Clause | Ja | | encoding/base64 (stdlib) | Go 1.21+ | BSD-3-Clause | Ja | --- ## 6. Datenbanken | Datenbank | Version | Lizenz | Kommerzielle Nutzung | Verwendung | |-----------|---------|--------|----------------------|------------| | PostgreSQL | 16-alpine | PostgreSQL License | Ja | Hauptdatenbank | | PostgreSQL (Synapse) | 16-alpine | PostgreSQL License | Ja | Matrix Datenbank | | pgvector Extension | 0.8.0 | PostgreSQL License | Ja | LibreChat RAG | | MongoDB | latest | SSPL-1.0 | Ja* | LibreChat | | Meilisearch | 1.12.3 | MIT | Ja | LibreChat Suche | --- ## 7. Frontend (PWA) | Komponente | Lizenz | Kommerzielle Nutzung | |------------|--------|----------------------| | HTML5/CSS3/JS | N/A | N/A | | Service Worker API | N/A | N/A | --- ## 7a. Typografie & Schriftarten Diese Sektion dokumentiert alle verwendeten Schriftarten für Website, Marketing und E-Mails, um sicherzustellen, dass nur lizenzfreie Schriften verwendet werden. ### Primäre Schriftart: Inter | Eigenschaft | Wert | |-------------|------| | **Name** | Inter | | **Designer** | Rasmus Andersson | | **Version** | Variable Font | | **Repository** | https://github.com/rsms/inter | | **Lizenz** | SIL Open Font License 1.1 (OFL-1.1) | | **Kommerzielle Nutzung** | Ja, uneingeschränkt | | **Attribution erforderlich** | Nein | | **Modifikation erlaubt** | Ja | ### Verwendete Font-Weights | Weight | Name | Verwendung | |--------|------|------------| | 400 | Regular | Fließtext, Beschreibungen | | 500 | Medium | Labels, Buttons | | 600 | Semi-Bold | Überschriften H3-H6, Hervorhebungen | | 700 | Bold | Überschriften H1-H2, CTAs | ### Einbindungsmethode | Plattform | Methode | Datei | |-----------|---------|-------| | Website (Next.js) | Google Fonts CDN | `website/app/globals.css` | | Admin Panel | Google Fonts CDN | `backend/frontend/static/css/studio.css` | | Kundenportal | Google Fonts CDN | `backend/frontend/static/css/customer.css` | | E-Mail Templates | System Font Fallback | Inline CSS | ### Google Fonts Import ```css @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); ``` ### Font Stack (Fallback) ```css font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif; ``` ### System-Fallback-Schriften | Betriebssystem | Fallback Font | Lizenz | |----------------|---------------|--------| | macOS/iOS | SF Pro Text | Apple Proprietary (vorinstalliert) | | Windows | Segoe UI | Microsoft Proprietary (vorinstalliert) | | Android | Roboto | Apache-2.0 (vorinstalliert) | | Linux | Sans-Serif Default | Varies (system font) | ### E-Mail-sichere Schriftarten Für E-Mail-Templates werden nur websichere Schriften verwendet: | Font | Fallback für | Lizenz | |------|--------------|--------| | Arial | Sans-Serif Fließtext | Monotype (lizenzfrei für E-Mail) | | Helvetica | macOS/iOS | Apple (vorinstalliert) | | Georgia | Serif (optional) | Microsoft (lizenzfrei für E-Mail) | ### Icon-Fonts & Symbol-Sets | Name | Quelle | Lizenz | Verwendung | |------|--------|--------|------------| | Heroicons | heroicons.com | MIT | Admin Panel SVG Icons | | System Emojis | OS-nativ | N/A | Feature-Icons, Bundesland-Marker | ### Nicht verwendete / Ausgeschlossene Schriften | Schriftart | Grund für Ausschluss | |------------|----------------------| | Adobe Fonts (Typekit) | Erfordert Adobe-Lizenz | | Google Fonts (proprietäre) | Nur OFL/Apache-lizenzierte | | MyFonts/Linotype | Kommerzielle Lizenz erforderlich | | Custom Brand Fonts | Lizenzkosten, keine Notwendigkeit | ### Compliance-Checkliste (Typografie) - [x] Inter ist OFL-1.1 lizenziert (vollständig frei für kommerzielle Nutzung) - [x] Keine proprietären Schriften eingebunden - [x] System-Fallbacks sind auf allen Plattformen lizenzfrei - [x] E-Mail-Templates verwenden nur websichere Schriften - [x] SVG-Icons (Heroicons) sind MIT-lizenziert - [x] Keine Schrift-Dateien (.woff/.ttf) mit unklarer Lizenz im Repository ### Performance-Hinweis Google Fonts werden mit `display=swap` geladen, um FOUT (Flash of Unstyled Text) zu minimieren. Für Produktion kann eine lokale Einbindung über `/public/fonts/` erwogen werden. --- ## Lizenz-Zusammenfassung ### Erlaubte Lizenzen für kommerzielle Nutzung: | Lizenz | Bedingungen | |--------|-------------| | **MIT** | Copyright-Vermerk beibehalten | | **BSD-2-Clause** | Copyright-Vermerk beibehalten | | **BSD-3-Clause** | Copyright-Vermerk beibehalten, keine Endorsement-Nutzung | | **Apache-2.0** | NOTICE-Datei beibehalten, Patent-Klausel beachten | | **PostgreSQL License** | Copyright-Vermerk beibehalten | | **SSPL-1.0** | Kein MongoDB-as-a-Service anbieten | | **AGPL-3.0** | Bei Modifikation + Service: Quellcode veröffentlichen | --- ## Compliance-Checkliste - [x] Alle Open-Source-Lizenzen erlauben kommerzielle Nutzung - [x] MIT-Lizenztexte werden mit dem Produkt ausgeliefert - [x] Copyright-Hinweise sind dokumentiert - [x] SSPL-Einschränkungen für MongoDB werden eingehalten (kein DBaaS) - [x] AGPL-3.0-Einschränkungen für Matrix Synapse beachtet (keine Modifikationen) - [x] SBOM wird regelmäßig aktualisiert --- ## 8. LLM Platform (geplant) | Eigenschaft | Wert | |-------------|------| | **Name** | BreakPilot LLM Platform | | **Status** | In Planung | | **Dokumentation** | [/docs/llm-platform/README.md](/docs/llm-platform/README.md) | ### LLM Inference Stack | Komponente | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |------------|---------|--------|----------------------|--------------| | vLLM | latest | Apache-2.0 | Ja | OpenAI-kompatible Inference Engine | | Ollama | latest | MIT | Ja | Lokale Entwicklung & Fallback | ### LLM Modelle | Modell | Lizenz | Kommerzielle Nutzung | Einschränkungen | |--------|--------|----------------------|-----------------| | Llama 3.1 (8B/70B) | Llama 3.1 Community License | Ja | >700M MAU erfordert Meta-Lizenzvereinbarung | | Mistral 7B | Apache-2.0 | Ja | Keine | | Mixtral 8x7B | Apache-2.0 | Ja | Keine | | Claude API | Proprietär (Anthropic) | Ja | Pay-per-use, API Terms | > **Llama 3.1 License:** Die Llama 3.1 Community License erlaubt kommerzielle Nutzung. Bei mehr als 700 Millionen monatlich aktiven Nutzern ist eine separate Lizenzvereinbarung mit Meta erforderlich. Für BreakPilot (Schulkontext) ist dies nicht relevant. ### LLM Gateway Dependencies (Python) | Paket | Version | Lizenz | Kommerzielle Nutzung | |-------|---------|--------|----------------------| | sse-starlette | 2.x | BSD-3-Clause | Ja | | feedparser | 6.x | BSD-2-Clause | Ja | | simhash | 2.x | MIT | Ja | | tavily-python | latest | MIT | Ja | ### Hosting (Phase 1) | Anbieter | Dienst | Datenschutz | |----------|--------|-------------| | vast.ai | GPU-Mietung | US-basiert, nur für Inference (keine PII) | | Bestehende Infra | Gateway, DB | DE-hosted | --- ## 9. Education Search Service (edu-search-service) | Eigenschaft | Wert | |-------------|------| | **Name** | BreakPilot Education Search Service | | **Status** | In Entwicklung (Phase 0 PoC) | | **Sprache** | Go 1.21+ | | **Lizenz** | Proprietär (BreakPilot) | | **Verwendungszweck** | EU-gehostete Bildungsquellen-Suche als Tavily-Alternative | ### Go Dependencies (Direkt) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | gin-gonic/gin | 1.9.1 | MIT | Ja | HTTP Web Framework | | opensearch-project/opensearch-go/v2 | 2.3.0 | Apache-2.0 | Ja | OpenSearch Client | | google/uuid | 1.5.0 | BSD-3-Clause | Ja | UUID Generierung | | gopkg.in/yaml.v3 | 3.0.1 | MIT | Ja | YAML Parser | | PuerkitoBio/goquery | 1.8.1 | BSD-3-Clause | Ja | HTML Parsing/Scraping | | ledongthuc/pdf | 0.0.0 | MIT | Ja | PDF Text Extraction | | golang.org/x/net | 0.19.0 | BSD-3-Clause | Ja | Netzwerk-Utilities | | golang.org/x/text | 0.14.0 | BSD-3-Clause | Ja | Text/Encoding | ### Infrastructure Dependencies | Komponente | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |------------|---------|--------|----------------------|--------------| | OpenSearch | 2.x | Apache-2.0 | Ja | Such-Engine & Index | > **Hinweis:** OpenSearch ist ein Fork von Elasticsearch unter Apache-2.0 Lizenz und damit uneingeschränkt kommerziell nutzbar. --- ## 10. Legal Crawler (Backend Module) | Eigenschaft | Wert | |-------------|------| | **Name** | BreakPilot Legal Crawler | | **Status** | Aktiv | | **Sprache** | Python 3.10+ | | **Lizenz** | Proprietär (BreakPilot) | | **Verwendungszweck** | Crawlt Schulgesetze und rechtliche Inhalte aller 16 Bundesländer | ### Python Dependencies (Legal Crawler spezifisch) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | beautifulsoup4 | 4.12.3 | MIT | Ja | HTML Parsing | | httpx | 0.28.1 | BSD-3-Clause | Ja | Async HTTP Client | ### Gecrawlte Quellen (Legal Seeds) | Bundesland | Quelle | Typ | |------------|--------|-----| | Baden-Württemberg | landesrecht-bw.de | Schulgesetz | | Bayern | gesetze-bayern.de | BayEUG | | Berlin | gesetze.berlin.de | Schulgesetz | | Brandenburg | bravors.brandenburg.de | BbgSchulG | | Bremen | transparenz.bremen.de | BremSchulG | | Hamburg | landesrecht-hamburg.de | HmbSG | | Hessen | rv.hessenrecht.hessen.de | HSchG | | Mecklenburg-Vorpommern | landesrecht-mv.de | SchulG M-V | | Niedersachsen | voris.niedersachsen.de | NSchG | | Nordrhein-Westfalen | bass.schule.nrw | SchulG NRW | | Rheinland-Pfalz | landesrecht.rlp.de | SchulG | | Saarland | sl.juris.de | SchoG | | Sachsen | revosax.sachsen.de | SächsSchulG | | Sachsen-Anhalt | landesrecht.sachsen-anhalt.de | SchulG LSA | | Schleswig-Holstein | gesetze-rechtsprechung.sh.juris.de | SchulG SH | | Thüringen | landesrecht.thueringen.de | ThürSchulG | > **Hinweis:** Alle gecrawlten Inhalte sind öffentlich zugängliche Rechtstexte. Der Crawler respektiert robots.txt und Rate-Limiting. --- ## 11. ERPNext (Enterprise Resource Planning) | Eigenschaft | Wert | |-------------|------| | **Name** | ERPNext | | **Version** | latest (v15+) | | **Framework** | Frappe Framework | | **Repository** | https://github.com/frappe/erpnext | | **Docker Image** | frappe/erpnext:latest | | **Lizenz** | GNU General Public License v3.0 (GPLv3) | | **Copyright** | Copyright (c) 2013-2025 Frappe Technologies Pvt. Ltd. | | **Kommerzielle Nutzung** | Erlaubt (mit Bedingungen*) | | **Attribution erforderlich** | Ja | | **Verwendungszweck** | Vollständiges ERP-System für Buchhaltung, HR, Billing & Projekte | > *GPLv3: Kommerzielle Nutzung erlaubt. Wenn Sie ERPNext modifizieren und verteilen, müssen die Änderungen unter GPLv3 veröffentlicht werden. Bei reiner Nutzung ohne Modifikation keine zusätzlichen Pflichten. ### ERPNext Features | Feature | Beschreibung | Verwendung in BreakPilot | |---------|--------------|--------------------------| | **Accounting** | Double-Entry Buchhaltung | Finanzmanagement für Schulen | | **Invoicing** | Rechnungsstellung + Abos | Automatische Billing für Services | | **HR & Payroll** | Personalverwaltung + Lohnabrechnung | Lehrerverträge (zukünftig) | | **Project Management** | Projekte & Dienstleistungen | Bildungsprojekte verwalten | | **Banking** | Payables, Receivables | Zahlungsverkehr | | **Expenses** | Spesen & Reisekosten | Kostenverwaltung | ### Frappe Framework (ERPNext Basis) | Eigenschaft | Wert | |-------------|------| | **Framework** | Frappe Framework | | **Sprache** | Python 3.10+ | | **Repository** | https://github.com/frappe/frappe | | **Lizenz** | MIT License | | **Kommerzielle Nutzung** | Ja | ### ERPNext Service Stack | Service | Image/Version | Lizenz | Beschreibung | |---------|--------------|--------|--------------| | ERPNext Application | frappe/erpnext:latest | GPLv3 | Hauptanwendung | | Frappe Framework | frappe/erpnext:latest | MIT | Python Framework | | Nginx | (embedded) | BSD-2-Clause | Web Server | | Node.js | (embedded) | MIT | WebSocket Server | | MariaDB | 10.6 | GPL-2.0 | Datenbank | | Redis | alpine | BSD-3-Clause | Cache & Queue | ### Python Dependencies (ERPNext/Frappe) | Paket | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|--------|----------------------|--------------| | Werkzeug | BSD-3-Clause | Ja | WSGI Utilities | | Jinja2 | BSD-3-Clause | Ja | Template Engine | | SQLAlchemy | MIT | Ja | ORM | | Babel | BSD-3-Clause | Ja | Internationalisierung | | Pillow | HPND | Ja | Image Processing | | PyMySQL | MIT | Ja | MySQL Client | | gevent | MIT | Ja | Async Networking | | gunicorn | MIT | Ja | WSGI Server | ### JavaScript Dependencies (ERPNext Frontend) | Paket | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|--------|----------------------|--------------| | Vue.js | MIT | Ja | Frontend Framework | | Chart.js | MIT | Ja | Visualisierung | | Socket.IO | MIT | Ja | Real-time Communication | | Frappe UI | MIT | Ja | UI Components | ### ERPNext Deployment | Komponente | Container | Port | Beschreibung | |------------|-----------|------|--------------| | Frontend | breakpilot-pwa-erpnext-frontend | 8090 | Nginx Reverse Proxy | | Backend | breakpilot-pwa-erpnext-backend | 8000 (intern) | Python/Frappe App | | WebSocket | breakpilot-pwa-erpnext-websocket | 9000 (intern) | Real-time Updates | | Scheduler | breakpilot-pwa-erpnext-scheduler | - | Background Jobs | | Worker (Long) | breakpilot-pwa-erpnext-worker-long | - | Long-running Tasks | | Worker (Short) | breakpilot-pwa-erpnext-worker-short | - | Short Tasks | | MariaDB | breakpilot-pwa-erpnext-db | 3306 (intern) | Database | | Redis Queue | breakpilot-pwa-erpnext-redis-queue | 6379 (intern) | Job Queue | | Redis Cache | breakpilot-pwa-erpnext-redis-cache | 6379 (intern) | App Cache | > **Lizenz-Compliance:** ERPNext steht unter GPLv3. BreakPilot nutzt ERPNext als eigenständigen Service ohne Modifikationen. Die GPLv3-Lizenz erlaubt dies ohne zusätzliche Verpflichtungen, solange ERPNext nicht modifiziert und redistribuiert wird. --- ## 12. Keycloak Integration (Authentifizierung) | Eigenschaft | Wert | |-------------|------| | **Name** | Keycloak (Optional) | | **Version** | 24.x+ | | **Repository** | https://github.com/keycloak/keycloak | | **Lizenz** | Apache-2.0 | | **Copyright** | Copyright (c) Red Hat, Inc. | | **Kommerzielle Nutzung** | Erlaubt | | **Verwendungszweck** | Identity & Access Management (IAM) fuer Produktion | | **Status** | Optional (Fallback: Lokales JWT) | ### Architektur: Hybrid-Authentifizierung BreakPilot verwendet einen Hybrid-Ansatz: | Modus | Beschreibung | Empfohlen fuer | |-------|--------------|----------------| | **Lokales JWT** | Eigene JWT-Tokens mit HS256 | Entwicklung, Tests | | **Keycloak** | JWKS-validierte RS256-Tokens | Produktion | ### Keycloak Komponenten (wenn aktiviert) | Komponente | Beschreibung | Lizenz | |------------|--------------|--------| | Keycloak Server | IAM Server | Apache-2.0 | | JWKS Endpoint | Public Key Distribution | Apache-2.0 | | Realm Configuration | Multi-Tenant Support | Apache-2.0 | ### Python Dependencies (Keycloak) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | PyJWT | 2.10.1 | MIT | Ja | JWT Decoding & Validation | | httpx | 0.28.1 | BSD-3-Clause | Ja | Async HTTP Client fuer JWKS | | cryptography | latest | Apache-2.0/BSD | Ja | RSA Key Verification | ### Rollentrennung | Schicht | Verantwortung | Implementierung | |---------|---------------|-----------------| | **Authentifizierung** | "Wer bist du?" | Keycloak (Produktion) oder lokales JWT | | **Autorisierung** | "Was darfst du?" | Eigenes rbac.py (domaenenspezifisch) | > **Compliance Note:** Keycloak steht unter Apache-2.0 Lizenz und ist vollstaendig fuer kommerzielle Nutzung freigegeben. Die Integration ist optional - ohne Keycloak-Konfiguration verwendet BreakPilot automatisch lokale JWT-Authentifizierung. --- ## 13. Tool-Integrationen (geplant) | Tool | Anbieter | Lizenz/API | Kommerzielle Nutzung | Beschreibung | |------|----------|------------|----------------------|--------------| | Tavily Search | Tavily AI | Proprietär (API) | Ja (Pay-per-use) | Web Search für LLM Tool-Calling | > **Datenschutz-Hinweis:** Alle Anfragen an externe Tools (Tavily) durchlaufen einen PII-Redaction-Filter. Keine personenbezogenen Daten werden an externe Dienste übermittelt. --- ## 13. Content Service (Educational Content Platform) | Eigenschaft | Wert | |-------------|------| | **Name** | BreakPilot Content Service | | **Version** | 1.0.0 | | **Status** | Produktionsbereit | | **Sprache** | Python 3.11 + Node.js 20 | | **Lizenz** | Proprietär (BreakPilot) | | **Verwendungszweck** | Educational Content Management mit Creative Commons Licensing | ### Content Service Stack | Service | Port | Framework | Beschreibung | |---------|------|-----------|--------------| | Content Service API | 8002 | FastAPI | Content CRUD, Rating, Analytics | | H5P Service | 8003 | Express | Interactive Content Editor & Player | | AI Content Generator | 8004 | FastAPI | KI-gestützte H5P Content-Generierung | | MinIO Storage | 9000-9001 | MinIO | S3-compatible Object Storage | | Content Database | 5433 | PostgreSQL 16 | Metadata Storage | ### 13.1 Content Service API (FastAPI) | Eigenschaft | Wert | |-------------|------| | **Framework** | FastAPI | | **Base Image** | python:3.11-slim | | **Lizenz** | MIT License | | **Port** | 8002 | #### Python Dependencies (Content Service) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | fastapi | ^0.109.0 | MIT | Ja | Web Framework | | uvicorn[standard] | ^0.27.0 | BSD-3-Clause | Ja | ASGI Server | | sqlalchemy | ^2.0.25 | MIT | Ja | Database ORM | | psycopg2-binary | ^2.9.9 | LGPL-3.0 | Ja | PostgreSQL Driver | | pydantic | ^2.5.3 | MIT | Ja | Data Validation | | minio | ^7.2.3 | Apache-2.0 | Ja | S3 Storage Client | | python-multipart | ^0.0.6 | Apache-2.0 | Ja | Form Data Parsing | | python-jose[cryptography] | ^3.3.0 | MIT | Ja | JWT Handling | | passlib[bcrypt] | ^1.7.4 | BSD | Ja | Password Hashing | | matrix-nio | ^0.24.0 | ISC | Ja | Matrix Client for Feed Publishing | ### 13.2 H5P Service (Node.js) - Simplified Implementation | Eigenschaft | Wert | |-------------|------| | **Framework** | Express (Simplified) | | **Base Image** | node:20-alpine | | **Lizenz** | MIT (Proprietäre Editoren) | | **Port** | 8003 (8080 internal) | | **Status** | Produktionsbereit (8 Content-Typen) | #### Node.js Dependencies (H5P Service) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | express | ^4.18.2 | MIT | Ja | Web Framework | | cors | ^2.8.5 | MIT | Ja | CORS Middleware | > **Implementation Note:** Vereinfachter H5P Service ohne externe GPL-3.0 Libraries. Alle Editoren und Player sind proprietäre HTML/CSS/JS Implementierungen unter MIT-kompatibler Lizenz. #### H5P Content Types (Proprietäre Implementation) | Content Type | Status | Beschreibung | |--------------|--------|--------------| | Quiz (Question Set) | ✅ | Multiple-Choice Tests mit Feedback | | Interactive Video | ✅ | Videos mit zeitbasierten Interaktionen (YouTube, Vimeo, MP4) | | Course Presentation | ✅ | Multi-Slide Präsentationen mit Navigation | | Flashcards | ✅ | Lernkarten zum Wiederholen | | Timeline | ✅ | Chronologische Zeitstrahle | | Drag and Drop | ✅ | Zuordnungsaufgaben mit HTML5 Drag API | | Fill in the Blanks | ✅ | Lückentexte mit automatischer Korrektur | | Memory Game | ✅ | Klassisches Memory-Spiel | #### H5P Service Architecture | Komponente | Technologie | Lizenz | |------------|-------------|--------| | Server | Express.js | MIT | | Editors | HTML5/CSS3/Vanilla JS | Proprietär (BreakPilot) | | Players | HTML5/CSS3/Vanilla JS | Proprietär (BreakPilot) | | Storage | LocalStorage (Browser) | N/A | | Video Integration | YouTube/Vimeo iFrame API | Proprietär (API Terms) | > **Compliance Note:** Keine GPL-3.0 Dependencies. Vollständig kommerziell nutzbar ohne Copyleft-Verpflichtungen. ### 13.3 AI Content Generator (Python/FastAPI) | Eigenschaft | Wert | |-------------|------| | **Framework** | FastAPI | | **Base Image** | python:3.11-slim | | **Lizenz** | MIT License (Dependencies) / Proprietär (Code) | | **Port** | 8004 | | **Status** | Produktionsbereit | #### Hauptfunktion Automatische Generierung aller 8 H5P Content-Typen aus hochgeladenen Lernmaterialien mittels Claude AI und YouTube-Integration. #### Python Dependencies (AI Content Generator) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | fastapi | ^0.115.6 | MIT | Ja | Web Framework | | uvicorn | ^0.34.0 | BSD-3-Clause | Ja | ASGI Server | | anthropic | ^0.42.0 | MIT | Ja | Claude API Client | | youtube-transcript-api | ^0.6.3 | MIT | Ja | YouTube Transkript-Extraktion | | PyPDF2 | ^3.0.1 | BSD-3-Clause | Ja | PDF Text-Extraktion | | Pillow | ^11.0.0 | HPND | Ja | Image Processing | | pytesseract | ^0.3.14 | Apache-2.0 | Ja | OCR Text Recognition | | python-docx | ^1.1.2 | MIT | Ja | Word Document Processing | | mammoth | ^1.8.0 | BSD-2-Clause | Ja | DOCX to Text Conversion | | python-multipart | ^0.0.20 | Apache-2.0 | Ja | File Upload Handling | #### System Dependencies | Komponente | Lizenz | Kommerzielle Nutzung | Beschreibung | |------------|--------|----------------------|--------------| | Tesseract OCR | Apache-2.0 | Ja | Optical Character Recognition Engine | | Poppler Utils | GPL-2.0 | Ja (nicht modifiziert) | PDF Rendering Library | #### Externe APIs (Cloud Services) | Service | Verwendung | Kosten | Lizenz/Terms | |---------|------------|--------|--------------| | Anthropic Claude API | Content-Generierung | Pay-per-use | [Anthropic Terms](https://www.anthropic.com/legal/commercial-terms) | | YouTube Data API (optional) | Video-Suche | Kostenlos (Quota) | [YouTube API Terms](https://developers.google.com/youtube/terms) | | YouTube Transcript API | Transkript-Abruf | Kostenlos | Public API | #### Generierte Content-Typen | Content Type | Input | AI-Technologie | |--------------|-------|----------------| | Quiz | Lernmaterialien | Claude (Sonnet 4.5) | | Interactive Video | YouTube URL + Transkript | Claude + Transcript API | | Course Presentation | Lernmaterialien | Claude (Sonnet 4.5) | | Flashcards | Lernmaterialien | Claude (Sonnet 4.5) | | Timeline | Lernmaterialien | Claude (Sonnet 4.5) | | Drag and Drop | Lernmaterialien | Claude (Sonnet 4.5) | | Fill in the Blanks | Lernmaterialien | Claude (Sonnet 4.5) | | Memory Game | Lernmaterialien | Claude (Sonnet 4.5) | #### Material-Analyse Capabilities | Dateityp | Processing Library | Extraction Method | |----------|-------------------|-------------------| | PDF | PyPDF2 | Text Extraction | | PNG/JPG | Pillow + Tesseract | OCR (Optical Character Recognition) | | DOCX | python-docx / mammoth | Document Parsing | | TXT | Python stdlib | Plain Text Reading | > **Compliance Note:** Alle Dependencies sind MIT, BSD oder Apache-2.0 lizenziert. Tesseract und Poppler werden als unveränderter Binary verwendet (GPL-Compliance gegeben). Anthropic Claude API erfordert kommerzielle Lizenz. > **Cost Note:** Anthropic Claude API ist kostenpflichtig (Pay-per-token). YouTube Data API hat kostenlose Quota-Limits. ### 13.4 MinIO S3 Storage | Eigenschaft | Wert | |-------------|------| | **Image** | minio/minio:latest | | **Ports** | 9000 (API), 9001 (Console) | | **Lizenz** | AGPL-3.0 | | **Verwendung** | Media File Storage (Videos, PDFs, Images) | > **AGPL-3.0**: Kommerzielle Nutzung erlaubt. Wenn MinIO modifiziert und als Service angeboten wird, müssen Änderungen unter AGPL veröffentlicht werden. ### 13.5 Content Database (PostgreSQL) | Eigenschaft | Wert | |-------------|------| | **Image** | postgres:16-alpine | | **Port** | 5433 (external), 5432 (internal) | | **Lizenz** | PostgreSQL License | | **Database** | breakpilot_content | ### Content Platform Features | Feature | Status | Beschreibung | |---------|--------|--------------| | **Content CRUD** | ✅ | Create, Read, Update, Delete für Educational Content | | **Creative Commons Licensing** | ✅ | CC-BY, CC-BY-SA, CC-BY-NC, CC-BY-NC-SA, CC0 | | **H5P Interactive Content** | ✅ | Self-hosted H5P Editor & Player | | **Matrix Feed Integration** | ✅ | Automatisches Publishing zu Matrix Spaces | | **Rating System** | ✅ | 5-Star Ratings mit Kommentaren | | **Download Tracking** | ✅ | Analytics & Impact Scoring | | **DSGVO Compliance** | ✅ | Data Minimization, IP Anonymization | | **S3 File Storage** | ✅ | MinIO für Videos, PDFs, Bilder | ### Supported Content Types | Content Type | Format | Beschreibung | |--------------|--------|--------------| | VIDEO | MP4, WebM | Video Content | | PDF | PDF | PDF Documents | | IMAGE_GALLERY | JPG, PNG, WebP | Image Collections | | MARKDOWN | .md | Markdown Documents | | AUDIO | MP3, OGG, WebM | Audio Files | | H5P | .h5p | Interactive H5P Packages | ### Creative Commons Licenses | License | Beschreibung | Commercial Use | |---------|--------------|----------------| | CC-BY-4.0 | Attribution | ✅ | | CC-BY-SA-4.0 | Attribution + ShareAlike | ✅ (Recommended) | | CC-BY-NC-4.0 | Attribution + NonCommercial | ⚠️ | | CC-BY-NC-SA-4.0 | Attribution + NonCommercial + ShareAlike | ⚠️ | | CC0-1.0 | Public Domain | ✅ | ### Content Categories | Category | Beschreibung | |----------|--------------| | MOVEMENT | Bewegungspausen & Physical Activities | | MATH | Mathematik-Übungen | | STEAM | Science, Technology, Engineering, Arts, Math | | LANGUAGE | Sprachlernen | | ARTS | Kreative Künste | | SOCIAL | Social-Emotional Learning | | MINDFULNESS | Achtsamkeit & Meditation | ### Security & Privacy (Content Service) | Feature | Status | Beschreibung | |---------|--------|--------------| | **Data Minimization** | ✅ | Nur notwendige Metadaten gespeichert | | **IP Anonymization** | ✅ | IP-Adressen nach 7 Tagen anonymisiert | | **User Data Export** | ✅ | DSGVO-konformer Datenexport | | **Account Deletion** | ✅ | Vollständige Datenlöschung möglich | | **No Student Data** | ✅ | Keine Schülerdaten erfasst | | **JWT Authentication** | 🔜 | OAuth2 via consent-service (pending) | | **HTTPS/TLS** | 🔜 | Production requirement | ### Docker Volumes | Volume | Verwendung | |--------|------------| | minio_data | Object Storage für Media Files | | content_db_data | PostgreSQL Database | | h5p_content | H5P Content Files | > **Lizenz-Compliance:** Die Content Service Plattform nutzt hauptsächlich MIT/Apache-2.0 lizenzierte Komponenten. H5P Libraries sind unter GPL-3.0, was kommerzielle Nutzung erlaubt. --- ## Aktualisierungsprotokoll | Datum | Änderung | Verantwortlich | |-------|----------|----------------| | 2025-12-14 | Initiale SBOM erstellt | Claude Code | | 2025-12-14 | LibreChat hinzugefügt | Claude Code | | 2025-12-15 | Matrix Synapse hinzugefügt (AGPL-3.0) | Claude Code | | 2025-12-15 | PostgreSQL für Synapse-DB hinzugefügt | Claude Code | | 2025-12-15 | Jitsi Meet hinzugefügt (Apache-2.0) | Claude Code | | 2025-12-15 | Go Dependencies aktualisiert (gin-gonic/gin, jackc/pgx) | Claude Code | | 2025-12-15 | Python Dependencies aktualisiert (mammoth, python-docx für DSR) | Claude Code | | 2025-12-15 | LLM Platform Komponenten hinzugefügt (vLLM, Ollama, Llama 3.1, Mistral) | Claude Code | | 2025-12-15 | Tool-Integrationen Sektion hinzugefügt (Tavily) | Claude Code | | 2025-12-16 | Education Search Service hinzugefügt (OpenSearch, goquery, pdf) | Claude Code | | 2025-12-17 | Legal Crawler Modul hinzugefügt (beautifulsoup4) | Claude Code | | 2025-12-17 | Alle 16 Bundesländer Schulgesetz-Quellen dokumentiert | Claude Code | | 2025-12-29 | ERPNext hinzugefügt (GPLv3, Frappe Framework) | Claude Code | | 2025-12-29 | MariaDB 10.6 für ERPNext hinzugefügt (GPL-2.0) | Claude Code | | 2025-12-29 | Redis Cache & Queue für ERPNext hinzugefügt | Claude Code | | 2025-12-30 | Content Service hinzugefügt (FastAPI, H5P, MinIO) | Claude Code | | 2025-12-30 | H5P Service vereinfacht: Proprietäre Editoren/Players ohne GPL-3.0 | Claude Code | | 2025-12-30 | Alle 8 H5P Content-Typen implementiert (Quiz, Video, Presentation, etc.) | Claude Code | | 2025-12-30 | Creative Commons Licensing System dokumentiert | Claude Code | | 2025-12-30 | Matrix Feed Integration für Content Publishing | Claude Code | | 2025-12-30 | AI Content Generator Service hinzugefügt (Claude API, YouTube Transcript) | Claude Code | | 2025-12-30 | Material-Analyse implementiert (PDF, DOCX, Images mit OCR) | Claude Code | | 2025-12-30 | Automatische H5P-Generierung für alle 8 Content-Typen | Claude Code | | 2026-01-09 | Keycloak-Integration (Hybrid-Auth) hinzugefügt | Claude Code | | 2026-01-09 | PyJWKClient für JWKS-Validierung dokumentiert | Claude Code | | 2026-01-09 | HashiCorp Vault für Secrets-Management hinzugefügt | Claude Code | | 2026-01-09 | Sicherheitsaudit: Hardcodierte Secrets entfernt | Claude Code | | 2026-01-09 | DevSecOps-Stack integriert (Gitleaks, Semgrep, Trivy, Syft/Grype) | Claude Code | | 2026-01-09 | Pre-Commit Security Hooks aktualisiert (Bandit, Semgrep) | Claude Code | | 2026-01-10 | Sektion 7a: Typografie & Schriftarten hinzugefügt | Claude Code | | 2026-01-10 | Inter Font (OFL-1.1) als primäre Schrift dokumentiert | Claude Code | | 2026-01-10 | E-Mail-sichere Schriften und Icon-Fonts dokumentiert | Claude Code | | 2026-01-10 | Compliance-Checkliste für Typografie erstellt | Claude Code | | 2026-02-08 | Sektion 15: Klausur-Service RAG System hinzugefügt | Claude Code | | 2026-02-08 | Model Cards für BAAI/bge-m3 und bge-reranker-v2-m3 dokumentiert | Claude Code | | 2026-02-08 | MS MARCO Modelle als nicht empfohlen markiert (Lizenzproblem) | Claude Code | | 2026-02-08 | PyMuPDF aus Default-Build entfernt (AGPL-3.0) | Claude Code | | 2026-02-08 | HyDE/Self-RAG Datenschutz-Warnungen dokumentiert | Claude Code | | 2026-02-08 | RAG Feature-Status-Tabelle hinzugefügt (implementiert vs. aktiv vs. extern) | Claude Code | --- ## 13. HashiCorp Vault (Secrets Management) ### Vault Server | Komponente | Version | Lizenz | Verwendung | |------------|---------|--------|------------| | **HashiCorp Vault** | 1.15 | [BSL 1.1](https://github.com/hashicorp/vault/blob/main/LICENSE) | Secrets-Management | | **hvac** (Python Client) | 2.1.0 | [Apache-2.0](https://github.com/hvac/hvac/blob/main/LICENSE.txt) | Python Vault Client | ### Lizenz-Hinweis HashiCorp Vault ist unter der **Business Source License 1.1 (BSL 1.1)** lizenziert: - **Kostenlose Nutzung** für alle Zwecke (einschließlich kommerzielle) erlaubt - **Einzige Einschränkung**: Vault darf nicht als Hosted/Managed Service angeboten werden - Nach 4 Jahren wechselt die Lizenz automatisch zu Open Source (MPL 2.0) Für BreakPilot ist die Nutzung vollständig konform, da Vault nur intern verwendet wird. ### Konfiguration | Feature | Status | Beschreibung | |---------|--------|--------------| | **KV v2 Engine** | ✅ | Key-Value Secrets mit Versionierung | | **AppRole Auth** | ✅ | Service-to-Service Authentication | | **Token Auth** | ✅ | Development Mode | | **Kubernetes Auth** | 🔜 | Für K8s Deployments | | **TLS/mTLS** | 🔜 | Production Requirement | ### Gespeicherte Secrets | Pfad | Typ | Beschreibung | |------|-----|--------------| | `secret/breakpilot/api_keys/anthropic` | API Key | Anthropic Claude API | | `secret/breakpilot/api_keys/vast` | API Key | vast.ai GPU | | `secret/breakpilot/api_keys/stripe` | API Key | Stripe Payments | | `secret/breakpilot/database/postgres` | Credentials | PostgreSQL | | `secret/breakpilot/auth/jwt` | Secret | JWT Signing Keys | | `secret/breakpilot/auth/keycloak` | Secret | Keycloak Client | | `secret/breakpilot/communication/matrix` | Token | Matrix Access Token | | `secret/breakpilot/communication/jitsi` | Secret | Jitsi Auth Secrets | | `secret/breakpilot/storage/minio` | Credentials | MinIO Object Storage | ### Docker Volumes | Volume | Verwendung | |--------|------------| | vault_data | Vault Storage Backend | | vault_logs | Audit Logs | ### Sicherheitsfeatures | Feature | Status | Beschreibung | |---------|--------|--------------| | **Audit Logging** | ✅ | Alle Zugriffe werden geloggt | | **Secret Rotation** | 🔜 | Automatische Key-Rotation | | **Dynamic Secrets** | 🔜 | Kurzlebige Database Credentials | | **Seal/Unseal** | ✅ | Verschlüsselung im Ruhezustand | > **Wichtig**: In Produktion müssen alle Placeholder-Secrets durch echte Werte ersetzt werden! > Secrets niemals in Git committen! --- ## 14. DevSecOps Tools (Security Scanning) BreakPilot verwendet einen umfassenden DevSecOps-Stack fuer kontinuierliche Security-Pruefungen. ### Secrets Detection | Tool | Version | Lizenz | Verwendung | |------|---------|--------|------------| | **Gitleaks** | 8.18.x | [MIT](https://github.com/gitleaks/gitleaks/blob/master/LICENSE) | Pre-commit, CI/CD Secrets Detection | | **detect-secrets** | 1.4.x | [Apache-2.0](https://github.com/Yelp/detect-secrets/blob/master/LICENSE) | Baseline Secrets Detection | ### Static Application Security Testing (SAST) | Tool | Version | Lizenz | Verwendung | |------|---------|--------|------------| | **Semgrep** | 1.52.x | [LGPL-2.1](https://github.com/returntocorp/semgrep/blob/develop/LICENSE) | Multi-Language SAST | | **Bandit** | 1.7.x | [Apache-2.0](https://github.com/PyCQA/bandit/blob/main/LICENSE) | Python Security Linting | ### Software Composition Analysis (SCA) | Tool | Version | Lizenz | Verwendung | |------|---------|--------|------------| | **Trivy** | 0.48.x | [Apache-2.0](https://github.com/aquasecurity/trivy/blob/main/LICENSE) | Vulnerability & Misconfiguration Scanning | | **Grype** | 0.74.x | [Apache-2.0](https://github.com/anchore/grype/blob/main/LICENSE) | Vulnerability Scanner | | **OWASP Dependency-Check** | 9.x | [Apache-2.0](https://github.com/jeremylong/DependencyCheck/blob/main/LICENSE.txt) | CVE/NVD Dependency Check | ### SBOM Generation | Tool | Version | Lizenz | Verwendung | |------|---------|--------|------------| | **Syft** | 0.100.x | [Apache-2.0](https://github.com/anchore/syft/blob/main/LICENSE) | SBOM Generation (CycloneDX, SPDX) | ### Dynamic Application Security Testing (DAST) | Tool | Version | Lizenz | Verwendung | |------|---------|--------|------------| | **OWASP ZAP** | 2.14.x | [Apache-2.0](https://github.com/zaproxy/zaproxy/blob/main/LICENSE) | Web Application Scanner | ### Lizenz-Compliance Alle DevSecOps-Tools sind unter permissiven Open-Source-Lizenzen veroeffentlicht: | Lizenz | Tools | Verpflichtungen | |--------|-------|-----------------| | **MIT** | Gitleaks | Copyright-Hinweis beibehalten | | **Apache-2.0** | Trivy, Grype, Syft, Bandit, ZAP, Dependency-Check, detect-secrets | Lizenz/Copyright beibehalten, Aenderungen dokumentieren | | **LGPL-2.1** | Semgrep | Bei Aenderungen am Semgrep-Code: Source bereitstellen | ### Konfigurationsdateien | Datei | Beschreibung | |-------|--------------| | `.gitleaks.toml` | Gitleaks Regeln & Allowlists | | `.semgrep.yml` | Custom SAST Rules | | `.trivy.yaml` | Trivy Scan-Konfiguration | | `.trivyignore` | Akzeptierte Vulnerabilities | | `.pre-commit-config.yaml` | Pre-Commit Hook Definitionen | | `scripts/security-scan.sh` | Manuelles Security-Scan Script | ### Dokumentation Siehe: [docs/architecture/devsecops.md](docs/architecture/devsecops.md) --- ## 15. Klausur-Service RAG System (Educational Document Retrieval) | Eigenschaft | Wert | |-------------|------| | **Name** | BreakPilot Klausur-Service RAG | | **Version** | 2.1.0 | | **Status** | Produktionsbereit | | **Sprache** | Python 3.11+ | | **Lizenz** | Proprietär (BreakPilot) | | **Verwendungszweck** | RAG für Abitur-Erwartungshorizonte (Niedersachsen) | ### 15.1 ML Models (Model Cards) > **Wichtig:** Alle Standard-ML-Modelle sind für kommerzielle Nutzung freigegeben. #### Embedding Model | Eigenschaft | Wert | |-------------|------| | **Name** | BAAI/bge-m3 | | **Repository** | https://huggingface.co/BAAI/bge-m3 | | **Lizenz** | MIT | | **Dimensionen** | 1024 | | **Max Token** | 8192 | | **Sprachen** | Multilingual (inkl. Deutsch) | | **Kommerzielle Nutzung** | ✅ Ja | | **Status** | Default (aktiv) | #### Re-Ranking Model | Eigenschaft | Wert | |-------------|------| | **Name** | BAAI/bge-reranker-v2-m3 | | **Repository** | https://huggingface.co/BAAI/bge-reranker-v2-m3 | | **Lizenz** | Apache-2.0 | | **Kommerzielle Nutzung** | ✅ Ja | | **Status** | Default (aktiv) | #### Alternatve Embedding Models (Optional) | Modell | Lizenz | Dimensionen | Empfehlung | |--------|--------|-------------|------------| | all-MiniLM-L6-v2 | Apache-2.0 | 384 | ✅ Fallback/Development | | deepset/mxbai-embed-de-large-v1 | Apache-2.0 | 1024 | ✅ German-only deployments | | jinaai/jina-embeddings-v2-base-de | Apache-2.0 | 768 | ✅ German/English | | intfloat/multilingual-e5-large | MIT | 1024 | ✅ Multilingual | #### Nicht empfohlene Modelle (Lizenzprobleme) | Modell | Lizenz | Problem | |--------|--------|---------| | cross-encoder/ms-marco-* | Apache-2.0 | ⚠️ MS MARCO Trainingsdaten sind nur für nicht-kommerzielle Nutzung freigegeben | | PyMuPDF/fitz | AGPL-3.0 | ⚠️ AGPL erfordert Open-Source-Veröffentlichung oder kommerzielle Lizenz | ### 15.2 Python Dependencies (Klausur-Service) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | sentence-transformers | >=2.2.0 | Apache-2.0 | Ja | Embedding & Re-Ranking | | torch | >=2.0.0 | BSD-3-Clause | Ja | ML Framework (CPU-only) | | pypdf | >=4.0.0 | BSD-3-Clause | Ja | PDF-Extraktion (Default) | | unstructured | >=0.12.0 | Apache-2.0 | Ja | PDF-Extraktion (Tabellen) | | qdrant-client | >=1.7.0 | Apache-2.0 | Ja | Vector Database Client | | httpx | >=0.26.0 | BSD-3-Clause | Ja | Async HTTP Client | | FastAPI | >=0.109.0 | MIT | Ja | Web Framework | | cryptography | >=41.0.0 | Apache-2.0/BSD | Ja | AES-256-GCM Verschlüsselung | > **Hinweis:** PyMuPDF ist NICHT im Default-Build enthalten (AGPL-3.0). Falls benötigt, separat installieren und AGPL-Compliance sicherstellen. ### 15.3 RAG Feature Status | Feature | Implementiert | Standardmäßig Aktiv | Sendet Daten extern | |---------|--------------|---------------------|---------------------| | **Local Embeddings** | ✅ | ✅ | ❌ Nein | | **Local Re-Ranking** | ✅ | ✅ | ❌ Nein | | **Semantic Chunking** | ✅ | ✅ | ❌ Nein | | **Hybrid Search (BM25)** | ✅ | ✅ | ❌ Nein | | **HyDE** | ✅ | ❌ | ⚠️ Ja (LLM APIs) | | **Self-RAG** | ✅ | ❌ | ⚠️ Ja (OpenAI API) | | **RAG Evaluation** | ✅ | ⚠️ Teilweise | ⚠️ Optional (LLM) | ### 15.4 Datenschutz-Hinweise (Privacy Notes) | Kategorie | Status | Beschreibung | |-----------|--------|--------------| | **Embeddings** | ✅ Lokal | Keine Daten werden an externe Server gesendet | | **Re-Ranking** | ✅ Lokal | Cross-Encoder läuft komplett lokal | | **PDF-Extraktion** | ✅ Lokal | pypdf/unstructured laufen lokal | | **Hybrid Search** | ✅ Lokal | BM25 läuft komplett lokal | | **HyDE** | ⚠️ Opt-in | Bei Aktivierung: Queries an LLM APIs (OpenAI/Anthropic) | | **Self-RAG** | ⚠️ Opt-in | Bei Aktivierung: Dokumente + Queries an OpenAI | | **Indexierte Daten** | ✅ | Nur Erwartungshorizonte, keine Schülerdaten | ### 15.5 Konfiguration (Environment Variables) | Variable | Default | Beschreibung | |----------|---------|--------------| | `EMBEDDING_BACKEND` | `local` | Embedding-Backend (local/openai) | | `LOCAL_EMBEDDING_MODEL` | `BAAI/bge-m3` | Lokales Embedding-Modell | | `RERANKER_BACKEND` | `local` | Re-Ranking Backend (local/cohere) | | `LOCAL_RERANKER_MODEL` | `BAAI/bge-reranker-v2-m3` | Lokales Re-Ranking Modell | | `PDF_EXTRACTION_BACKEND` | `auto` | PDF-Backend (auto/unstructured/pypdf) | | `HYDE_ENABLED` | `false` | HyDE aktivieren (⚠️ sendet Daten extern) | | `SELF_RAG_ENABLED` | `false` | Self-RAG aktivieren (⚠️ sendet Daten extern) | | `HYBRID_SEARCH_ENABLED` | `true` | Hybrid Search aktivieren | | `CHUNKING_STRATEGY` | `semantic` | Chunking-Strategie (semantic/recursive) | ### 15.6 API Endpoints | Endpoint | Methode | Beschreibung | |----------|---------|--------------| | `/api/v1/admin/rag/system-info` | GET | System-Info mit Lizenzen und Feature-Status | | `/api/v1/admin/nibis/search` | POST | RAG-Suche mit optionalem Re-Ranking | | `/api/v1/admin/rag/collections` | GET | Liste aller RAG Collections | | `/api/v1/admin/nibis/ingest` | POST | Dokument-Indexierung starten | | `/api/v1/admin/rag/metrics` | GET | RAG-Qualitätsmetriken | ### 15.7 Compliance-Checkliste (Klausur-Service RAG) - [x] Alle Standard-ML-Modelle sind MIT/Apache-2.0 lizenziert - [x] MS MARCO-basierte Modelle wurden durch bge-reranker-v2-m3 ersetzt - [x] PyMuPDF (AGPL) ist nicht im Default-Build enthalten - [x] HyDE/Self-RAG sind standardmäßig deaktiviert (Datenschutz) - [x] Alle Embedding-/Re-Ranking-Operationen laufen lokal - [x] System-Info Endpoint dokumentiert Lizenzen und Feature-Status - [x] Keine Schülerdaten werden indexiert --- ## Kontakt Bei Fragen zur Lizenz-Compliance: - E-Mail: legal@breakpilot.app - Repository: https://github.com/breakpilot/breakpilot-pwa --- ## 16. OCR Grid Detection System (klausur-service) | Eigenschaft | Wert | |-------------|------| | **Name** | BreakPilot OCR Grid Detection | | **Version** | 4.0 | | **Status** | Produktiv | | **Sprache** | Python 3.11+ / TypeScript | | **Lizenz** | Proprietär (BreakPilot) | | **Verwendungszweck** | OCR-Analyse von Vokabeltabellen mit mm-Koordinaten | ### Python Dependencies (Grid Detection) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | NumPy | ≥2.0.0 | BSD-3-Clause | Ja | Deskew-Berechnung (polyfit/lineare Regression) | | OpenCV | ≥4.8.0 | Apache-2.0 | Ja | Bildverarbeitung (optional) | ### Frontend Dependencies (Worksheet Editor Integration) | Paket | Version | Lizenz | Kommerzielle Nutzung | Beschreibung | |-------|---------|--------|----------------------|--------------| | Fabric.js | 6.x | MIT | Ja | Canvas-Rendering für Wortpositionierung | ### Features | Feature | Status | Beschreibung | |---------|--------|--------------| | **mm-Koordinatensystem** | ✅ | A4-Format (210x297mm) | | **Deskew-Korrektur** | ✅ | Automatische Ausrichtung schiefer Scans | | **1mm Column Margin** | ✅ | Spalten beginnen 1mm vor erstem Wort | | **Spalten-Erkennung** | ✅ | Englisch/Deutsch/Beispiel automatisch erkannt | | **Editor-Integration** | ✅ | Export/Import via localStorage | ### Lizenz-Compliance - [x] NumPy ist BSD-3-Clause lizenziert (kommerziell nutzbar) - [x] OpenCV ist Apache-2.0 lizenziert (kommerziell nutzbar) - [x] Fabric.js ist MIT lizenziert (kommerziell nutzbar) - [x] Alle Verarbeitung erfolgt lokal (keine Daten an externe Server) | 2026-02-08 | OCR Grid Detection System (v4) hinzugefügt | Claude Code | | 2026-02-08 | Fabric.js für Worksheet Editor Integration dokumentiert | Claude Code | | 2026-02-08 | Deskew-Korrektur und mm-Koordinatensystem dokumentiert | Claude Code |