Zum Inhalt

Datenfluss

BASO- und ICT-Workflow

sequenceDiagram
    participant User
    participant GUI
    participant DB as SQLite DB
    participant FS as Dateisystem
    participant GPT as ChatGPT (Web)

    User->>GUI: Fragebögen einlesen
    GUI->>FS: Liest XLSX aus data/baso/quelle/
    GUI->>DB: Speichert qa_items (Fragen + Antworten)

    User->>GUI: Sikos einlesen
    GUI->>FS: Liest DOCX aus data/shared/sikos/
    GUI->>DB: Speichert siko_paragraphs

    User->>GUI: Prompts erstellen
    GUI->>DB: Liest neue Fragebögen (data/baso/neu/)
    DB-->>GUI: Ähnliche Antworten (Fuzzy-Match)
    GUI->>FS: Schreibt .md Prompt-Dateien (out/baso/prompts/)
    GUI->>FS: Legt leere .json Antwortdateien an

    User->>GPT: Fügt Prompt ein
    GPT-->>User: JSON-Antwort
    User->>FS: Speichert JSON in out/baso/answers/

    User->>GUI: Fragebögen befüllen
    GUI->>FS: Liest JSON-Antworten
    GUI->>FS: Kopiert XLSX-Template
    GUI->>FS: Schreibt Antworten in XLSX (out/baso/filled/)

Ähnlichkeitssuche (Retrieval)

Beim Erstellen von Prompts sucht das System nach ähnlichen, bereits beantworteten Fragen:

flowchart LR
    NF[Neue Frage] --> NRM[normalize_text]
    DB[(qa_items)] --> |alle Antworten| Cands[Kandidaten-Liste]
    Cands --> |normalize_text| NRM2[normalisiert]
    NRM --> FZ[rapidfuzz<br/>token_set_ratio]
    NRM2 --> FZ
    FZ --> |Top-K Matches| CTX[Kontext für Prompt]
    CTX --> PROMPT[Prompt-Datei .md]

token_set_ratio ist besonders geeignet für Fragebögen, da es unabhängig von Wortreihung und Teilmengen ähnliche Texte findet (z.B. "Verschlüsselung der Daten" vs. "Daten werden verschlüsselt").


Compliance-DB: RAG-Pipeline

flowchart TB
    subgraph Indexierung
        GDB[(gutachten.sqlite)] --> RIB[rebuild_index_from_gutachten]
        RIB --> FTS[(compliance_db.sqlite<br/>FTS5 Index)]
    end

    subgraph Suche
        Q[Benutzeranfrage] --> TOK[_tokenize]
        TOK --> BFQ[_build_fts_queries]
        BFQ --> |Strict AND| FTS
        BFQ --> |Expanded Compounds| FTS
        BFQ --> |OR Fallback| FTS
        FTS --> |BM25 Ranking| HITS[SearchHit Liste]
        HITS --> OLLAMA[Ollama llama3.1]
        OLLAMA --> ANS[Strukturierte Antwort]
    end

Deutsche Kompositazerlegung

Die FTS5-Suche behandelt deutschsprachige Komposita durch _expand_compound():

  • Erkennt Fugen-s: DatenschutzbeauftragterDatenschutz + beauftragter
  • Erkennt Doppel-s: RisikomanagementRisiko + management
  • Liefert mehrere Suchanfragen für bessere Trefferquote

Gutachten-Workflow

sequenceDiagram
    participant User
    participant GUI as Gutachten GUI
    participant DL as file_download.py
    participant DB as gutachten.sqlite
    participant FS as Dateisystem
    participant GPT as ChatGPT

    User->>GUI: Framework wählen (z.B. DORA, NIS2)
    GUI->>DL: Framework-Dokumente herunterladen
    DL->>FS: PDFs speichern (data/dora_downloads/ etc.)
    GUI->>DB: PDFs einlesen + in DB speichern

    User->>GUI: Interviewfragen generieren
    GUI->>DB: Abschnitte laden
    GUI->>FS: Fragen-Prompt schreiben (out/gutachten/prompts/)
    User->>GPT: Prompt einfügen
    GPT-->>User: JSON-Array mit Fragen
    User->>GUI: JSON importieren
    GUI->>FS: Excel-Fragebogen exportieren (out/gutachten/fragebogen/)

    User->>FS: Fragebogen ausfüllen
    User->>GUI: Ausgefüllten Fragebogen importieren
    GUI->>DB: Antworten speichern

    User->>GUI: Gutachten erstellen
    GUI->>FS: Gutachten-Prompt schreiben
    User->>GPT: Prompt einfügen
    GPT-->>User: JSON-Gutachten
    User->>GUI: JSON importieren
    GUI->>FS: DOCX-Gutachten exportieren (out/gutachten/gutachten/)

Risikobewertung-Workflow

flowchart TB
    USER[Benutzer] --> |Risiko beschreiben| GUI
    GUI --> |Prompt generieren| OLLAMA[Ollama llama3.1]
    OLLAMA --> |Strukturierter Risiko-Text| GUI

    GUI --> |Framework wählen| FW{Framework}
    FW --> FI[Financial Impact<br/>Wahrscheinlichkeit × Schaden]
    FW --> STRIDE[STRIDE<br/>6 Bedrohungskategorien]
    FW --> CVSS[CVSS<br/>Exploitability × Impact]
    FW --> OCTAVE[OCTAVE<br/>Akteur + Motiv + Zugang]

    FI --> |Score + Label| SCORE[Risiko-Score]
    STRIDE --> SCORE
    CVSS --> SCORE
    OCTAVE --> SCORE

    SCORE --> EXPORT{Export}
    EXPORT --> XLSX[Excel-Bericht]
    EXPORT --> DOCX[Word-Bericht]
    EXPORT --> JSON[JSON-Bericht]

CRA-Workflow (CI Evidence + Auto-fill)

sequenceDiagram
    participant User
    participant CRA as CRA-Readiness GUI
    participant GH as GitHub Actions/Repo
    participant EV as evidence.sqlite

    User->>CRA: Linked App setzen (provider/repo/branch)
    User->>CRA: CI Evidenzen importieren
    CRA->>GH: gh run list/download (SBOM/OSV/Evidence Pack)
    CRA->>EV: Dokumente speichern + extract + chunk

    User->>CRA: CRA Auto-fill aus CI
    CRA->>EV: Chunks laden (citations)
    CRA-->>User: Prefill-Vorschläge (Review + Übernahme)

Konfigurationsfluss

Jedes Modul lädt seine Konfiguration beim Start:

flowchart LR
    JSON[*.config.json] --> CFG[config.py<br/>load_config / save_config]
    CFG --> GUI[GUI-Modul]
    CFG --> CLI[CLI-Befehle]
    GUI --> |Benutzeränderungen| CFG
    CFG --> JSON

Die JSON-Dateien liegen im Projektstamm (z.B. baso.config.json) und werden beim ersten Start mit Standardwerten angelegt.