Files
Benjamin Admin 8f3fb84b61
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 31s
CI / test-python-backend-compliance (push) Successful in 27s
CI / test-python-document-crawler (push) Successful in 20s
CI / test-python-dsms-gateway (push) Successful in 17s
docs: Infrastruktur-Migration 2026-03-06 in Docs + CLAUDE.md nachziehen
- CLAUDE.md: Voraussetzungen auf externe Hetzner-Services aktualisiert
  (PostgreSQL 46.225.100.82:54321, Qdrant qdrant-dev.breakpilot.ai, MinIO Hetzner)
- docs-src/index.md: PostgreSQL-Zeile auf externe Instanz aktualisiert
- docs-src/document-crawler/index.md: DB-Verbindung auf externe PG aktualisiert
- Zusatz: training_*, ucca_*, academy_* Tabellen + update_updated_at_column()
  Funktion auf externe DB nachmigriert (waren beim ersten Dump nicht erfasst)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 21:10:24 +01:00

5.5 KiB

Document Crawler & Auto-Onboarding

Der Document Crawler ist ein eigenstaendiger Python/FastAPI-Microservice, der automatisch lokale Dateisysteme nach bestehenden Compliance-Dokumenten durchsucht, diese mittels LLM klassifiziert, in IPFS archiviert und eine Compliance-Lueckenanalyse durchfuehrt.

Architektur

graph LR
    FE[Frontend Admin-v2] -->|API Proxy| DC[Document Crawler :8098]
    DC -->|LLM Klassifizierung| SDK[AI Compliance SDK :8090]
    DC -->|IPFS Archivierung| DSMS[DSMS Gateway :8082]
    DC -->|Daten| PG[(PostgreSQL)]
Eigenschaft Wert
Service document-crawler
Port 8098
Container bp-compliance-document-crawler
Sprache Python 3.11 / FastAPI
Datenbank PostgreSQL (extern: 46.225.100.82:54321, DB postgres, sslmode=require)

Features

  • Filesystem Crawling — Automatisches Scannen lokaler Verzeichnisse und NAS-Shares
  • Delta-Erkennung — SHA-256 Hash-basierte Aenderungserkennung, nur geaenderte Dateien werden erneut verarbeitet
  • Text-Extraktion — PDF (PyMuPDF), DOCX (python-docx), XLSX (openpyxl), PPTX (python-pptx)
  • LLM-Klassifizierung — Automatische Kategorisierung via AI Compliance SDK
  • Keyword-Fallback — Heuristische Klassifizierung wenn LLM nicht verfuegbar (Confidence max 0.3)
  • IPFS-Archivierung — Langzeit-Archivierung ueber DSMS Gateway
  • Gap-Analyse — Vergleich gefundener Dokumente gegen Compliance-Matrix
  • Onboarding-Report — Compliance-Score, fehlende Dokumente, Handlungsempfehlungen

Dokumentklassifizierungen

Kategorie Beschreibung
VVT Verzeichnis von Verarbeitungstaetigkeiten
TOM Technische und organisatorische Massnahmen
DSE Datenschutzerklaerung
AVV Auftragsverarbeitungsvertrag
DSFA Datenschutz-Folgenabschaetzung
Loeschkonzept Loeschfristen und -verfahren
Einwilligung Einwilligungserklaerungen
Vertrag Vertraege mit Datenschutzbezug
Richtlinie Interne Datenschutzrichtlinien
Schulungsnachweis Datenschutz-Schulungszertifikate
Sonstiges Nicht klassifizierbare Dokumente

Datenbank-Schema

4 Tabellen (Migration 014):

crawler_sources

Konfigurierbare Crawl-Verzeichnisse mit Pfad, Dateityp-Filter, Tiefenbegrenzung und Ausschlussmustern.

crawler_jobs

Jede Crawl-Ausfuehrung mit Status (pending/running/completed/failed), Typ (full/delta) und Statistiken.

crawler_documents

Jede entdeckte Datei mit Metadaten, extrahiertem Text, Klassifizierung, Confidence-Score und Archivierungsstatus.

crawler_onboarding_reports

Zusammenfassungsberichte mit Compliance-Score, Klassifizierungs-Aufschluesselung und Gap-Analyse.

API Endpoints

Alle unter /api/v1/crawler/, benoetigen X-Tenant-ID Header.

Quellen (Sources)

Method Endpoint Beschreibung
GET /sources Crawl-Quellen auflisten
POST /sources Neue Quelle erstellen
PUT /sources/{id} Quelle aktualisieren
DELETE /sources/{id} Quelle loeschen
POST /sources/{id}/test Konnektivitaet testen

Jobs

Method Endpoint Beschreibung
POST /jobs Crawl starten (full/delta)
GET /jobs Jobs auflisten
GET /jobs/{id} Job-Details + Fortschritt
POST /jobs/{id}/cancel Laufenden Job abbrechen

Dokumente

Method Endpoint Beschreibung
GET /documents Dokumente auflisten (Filter: classification, status)
GET /documents/{id} Dokument-Details + Text-Vorschau
PUT /documents/{id}/classify Manuelle Klassifizierungs-Korrektur
POST /documents/{id}/archive In IPFS archivieren
POST /documents/archive-batch Bulk-Archivierung

Reports

Method Endpoint Beschreibung
POST /reports/generate Onboarding-Report generieren
GET /reports Reports auflisten
GET /reports/{id} Report mit Gap-Analyse

Gap-Analyse

Die Gap-Analyse vergleicht gefundene Dokumenttypen gegen eine Pflichtdokumenten-Matrix:

Dokument Pflicht fuer Severity
VVT Alle Unternehmen CRITICAL
TOM Alle Unternehmen CRITICAL
DSE Alle Unternehmen CRITICAL
Loeschkonzept Alle Unternehmen HIGH
AVV Auftragsverarbeiter HIGH
DSFA KI-Nutzer, Hochrisiko-Verarbeitung HIGH
Schulungsnachweis Alle Unternehmen MEDIUM
Richtlinie Alle Unternehmen MEDIUM

Frontend

4-Tab-Seite unter /sdk/document-crawler:

  1. Quellen — Crawl-Verzeichnisse konfigurieren, Konnektivitaet testen
  2. Crawl-Jobs — Crawl starten, Fortschrittsbalken mit Auto-Refresh, Job-Historie
  3. Dokumente — Tabelle mit Klassifizierungs-Badges, Confidence-Bars, Reklassifizierung, Archivierung
  4. Onboarding-Report — SVG Compliance-Score Ring, Gap-Analyse mit Severity-Cards

Konfiguration

Umgebungsvariable Standard Beschreibung
PORT 8098 Service-Port
DATABASE_URL - PostgreSQL Connection String
LLM_GATEWAY_URL http://ai-compliance-sdk:8090 LLM Service URL
DSMS_GATEWAY_URL http://dsms-gateway:8082 IPFS Service URL
CRAWL_BASE_PATH /data/crawl Basis-Pfad im Container
MAX_FILE_SIZE_MB 50 Maximale Dateigroesse

Health Check

curl http://localhost:8098/health
# {status: healthy, service: document-crawler}