Dokumentation & Systemhandbuch
Inhaltsverzeichnis (docs/)
Systemarchitektur & Handbuch
Datei:docs/SYSTEM_ARCHITECTURE_MANUAL.md
Systemarchitektur & Technisches Handbuch (Förder-Cockpit)
Dieses Handbuch dokumentiert die vollständige Softwarearchitektur, Modulstruktur, Technologieauswahl und Entwicklungsstandards des Förder-Cockpits.
1. Technologie-Stack & Design-Prinzipien
| Komponente | Gewählte Technologie | Begründung & Standards |
|---|---|---|
| Programmiersprache | Python 3.14+ | Moderne Sprachfeatures, strikte Typisierung, hohe Performance |
| Paket- & Tooling | uv, ruff, pyrefly |
Blitzschnelle Installation, PEP 723 Skripting, Typensicherheit mit 0 Typfehlern |
| Web-Framework | FastAPI + Jinja2 + HTMX | Server-Side Rendering mit flüssigen, reaktiven UI-Partials ohne NodeJS/SPA-Overhead |
| HTTP-Client | niquests (HTTP/2 & HTTP/3) |
Asynchrone, RFC-konforme Netzwerk-Kommunikation im gesamten Codebase |
| Datenbank & ORM | PostgreSQL 16 + SQLAlchemy 2.0 (Async) | Robuste Relationaldatenbank mit asyncpg für vollständige Asynchronität |
| Vektordatenbank | pgvector |
Lokale Speicherung von Förderrichtlinien & Dokumenten-Embeddings |
| KI / LLM Gateway | DualLLMGateway (Ollama & Claude) | Local-First auf Mac Pro (128 GB RAM) mit DSGVO-geschütztem Cloud-Fallback |
| Entscheidungs-Engine | TypeSafe JEV (jev-latest) |
Millisekunden-schnelle boolesche Klassifizierung von Dokumenten & E-Mails |
| Wissensablage | Obsidian Vault + Automatisches Git Sync | Strukturierte Markdown-Notizen mit bi-direktionalem Git-Abgleich |
2. Modul-Übersicht (src/foerder_cockpit/modules/)
Das System ist nach Domain-Driven-Design (DDD) in klar abgegrenzte Module unterteilt:
graph TD
UI["WebUI (FastAPI + HTMX + Jinja2)"] --> Modules
API["REST API (/api/v1/...)"] --> Modules
subgraph Modules["Fachmodule im Förder-Cockpit"]
Subsidies["subsidies\n(Förderfälle, Fristen, BAFA/KfW-Status)"]
Customers["customers\n(Kunden & Liegenschaften)"]
Documents["documents\n(Intake, Triage, Parallele Worker, OCR)"]
Calculations["calculations\n(Heizlast DIN EN 12831, Förderquoten)"]
Knowledge["knowledge\n(pgvector Vektorsuche, Jev Relevanzfilter)"]
Vault["vault\n(Obsidian Sync, Private Git Automation)"]
Privacy["privacy\n(DualLLMGateway, PII Sanitizer & Redaction)"]
Assistant["assistant\n(KI-Fallassistent, Dokumenten-Q&A)"]
Onboarding["onboarding\n(Ersteinrichtung, Systemchecks, Secrets)"]
Integrations["integrations\n(IMAP E-Mail-Postfach, Lexware API)"]
end
Subsidies --> DB[(PostgreSQL)]
Customers --> DB
Documents --> DB
Knowledge --> DB
Die Module im Detail:
subsidies(Förderfall-Management):- Verwaltung von Förderprogrammen (
BEG EM,KfW 458,EBW / iSFP,BEG WG). - Automatische Normalisierung und Validierung von Vorgangsnummern (
93124661), BND-, TPB-, TPN- und iSFP-Nummern. -
Fristenmanagement (z. B. 36 Monate Bewilligungszeitraum) mit visueller Ampel-Warnung.
-
customers(Kunden- und Liegenschaftsverwaltung): - Kundenstammdaten (Name, Telefon, E-Mail).
-
Verknüpfte Liegenschaften mit genauer Postanschrift, Baujahr und Wohneinheiten.
-
documents(Paralleler Dokumenten-Posteingang & Triage): - Überwacht das Verzeichnis
data/Eingang/. - Parallele Verarbeitung von PDF-Batches (8 Worker gleichzeitig via
asyncio.Semaphore). - Zweistufige Textextraktion: Nativer PDF-Text (
pypdf) mit automatischem Tesseract-OCR Fallback für Scans. -
Intelligente Zuordnung nach Vorgangsnummer oder Name/Adresse; unklare Fälle wandern in Quarantäne (
_unklar/). -
calculations(Technische & Wirtschaftliche Berechnungen): - DIN-konforme Heizlastabschätzung nach Baualtersklasse und beheizter Wohnfläche.
-
Förderrechner 2026: Grundförderung (30 %), Geschwindigkeitsbonus (+20 %), Einkommensbonus (+30 %), Effizienzbonus (+5 %), Kältemittelbonus (+5 %) mit automatischer Deckelung auf maximal 70 % Zuschuss.
-
privacy(Datenschutz & Modell-Routing): PrivacySanitizer: Maskiert sensible Kundendaten (Namen, Anschriften, IBANs) in pseudonymisierte Tokens ([KUNDE_1],[ADRESSE_1]).-
DualLLMGateway: Routet bevorzugt an ein lokales LLM (Ollama) ohne Datenabfluss; bei Cloud-Anfragen (Anthropic) werden ausschließlich zensierte Daten übertragen. -
assistant(KI-Fallassistent & Dokumenten-Q&A): - Erlaubt Fragen zur gesamten Akte direkt im WebUI (
/faelle). -
Injiziert Antragsdaten, Fristen und Auszüge der hinterlegten Dokumente in den System-Prompt.
-
vault(Obsidian & Git-Synchronisation): - Exportiert Förderfälle und Förderrichtlinien als saubere Markdown-Notizen in den Obsidian Vault.
-
Prüft vor dem Zugriff per automatischem
git fetchauf Remote-Änderungen und pusht lokale Notizänderungen via hinterlegtem SSH-Schlüssel in ein privates GitHub-Repository. -
onboarding(Assistent für Ersteinrichtung): - Führt neue Anwender Schritt für Schritt durch die Konfiguration:
- PostgreSQL & pgvector Datenbankverbindung
- TypeSafe AI API-Schlüssel für JEV-Entscheidungen
- Lokales LLM (Ollama) & Cloud-Fallback (Anthropic)
- IMAP E-Mail-Postfach für automatischen Fristen-Empfang
- Lexware Office API für Rechnungsstellung
- Obsidian Vault & privates GitHub-Backup
3. Qualitätskriterien & Prüfregeln (AGENTS.md)
Für sämtliche Code-Änderungen gelten strikte Richtlinien:
1. Typensicherheit: uv run pyrefly check muss zu jedem Zeitpunkt 0 Fehler melden.
2. Linting: uv run ruff check . mit maximal 120 Zeichen Zeilenlänge muss 0 Warnungen/Fehler melden.
3. Tests: Sämtliche Unit-, Integrations- und Playwright-E2E-Tests müssen zu 100 % erfolgreich durchlaufen (pytest).
4. PyCharm Code-Inspektionen: Vor und nach Merges auf den Hauptarbeitszweig (complete-rework) muss eine Überprüfung via PyCharm Inspections (lint_files) erfolgen (0 ungelöste Referenzen, 0 fatale Fehler).
5. Git Hygiene: Feature-Branches (feature/...), schmale Staging-Bereiche (git add <files>), kein git commit -a, saubere Fast-Forward Merges.