Skip to content
github-actions[bot] edited this page Aug 31, 2026 · 2 revisions

Hinweis: Inhalt mit aktuellem Modulcode und -stand abgleichen.

ThemisDB Admin Tools - Entwicklungsstand

Datum: 2024 Status: MVP Audit-Log-Viewer abgeschlossen βœ…


βœ… Abgeschlossen

1. Projektstruktur

  • βœ… .NET 8 Solution Themis.sln erstellt
  • βœ… Themis.AdminTools.Shared - Shared Library
  • βœ… Themis.AuditLogViewer - WPF-Anwendung
  • βœ… Alle Projekte kompilieren erfolgreich

2. Shared Library (Themis.AdminTools.Shared)

Dateien:

  • ApiClient/ThemisApiClient.cs - HTTP-Client fΓΌr themis_server
  • ApiClient/MockThemisApiClient.cs - Mock fΓΌr Tests ohne Server
  • Models/AuditLogModels.cs - DTOs (AuditLogEntry, AuditLogFilter, AuditLogResponse)
  • Models/Common.cs - Gemeinsame Modelle (ThemisServerConfig, ApiResponse)

Features:

  • βœ… RESTful API-Client mit HttpClient
  • βœ… JSON-Serialisierung (System.Text.Json)
  • βœ… Query-String-Builder fΓΌr Filter
  • βœ… CSV-Export-FunktionalitΓ€t
  • βœ… Mock-Implementation mit 1234 simulierten EintrΓ€gen

3. Audit-Log-Viewer (Themis.AuditLogViewer)

Dateien:

  • App.xaml.cs - DI-Container, Configuration
  • ViewModels/MainWindowViewModel.cs - MVVM ViewModel
  • Views/MainWindow.xaml - WPF UI
  • Views/MainWindow.xaml.cs - Code-Behind
  • appsettings.json - Konfiguration

UI-Features:

  • βœ… Zeitbereichsfilter (Von/Bis-Datum mit DatePicker)
  • βœ… Benutzerfilter (TextBox)
  • βœ… Aktionsfilter (TextBox)
  • βœ… EntitΓ€tstypfilter (TextBox)
  • βœ… "Nur erfolgreiche Aktionen" Checkbox
  • βœ… DataGrid mit 11 Spalten (ID, Zeitstempel, Benutzer, Aktion, etc.)
  • βœ… Paginierung (Vorherige/NΓ€chste Buttons)
  • βœ… CSV-Export (SaveFileDialog)
  • βœ… Statusleiste mit Loading-Indikator
  • βœ… Moderne blaue Header-Leiste
  • βœ… Alternating Row Colors im Grid

Architektur:

  • βœ… MVVM-Pattern
  • βœ… CommunityToolkit.Mvvm (RelayCommand, AsyncRelayCommand)
  • βœ… Microsoft.Extensions.DependencyInjection
  • βœ… INotifyPropertyChanged
  • βœ… Async/Await fΓΌr API-Calls

NuGet-Pakete:

  • System.Net.Http 4.3.4
  • System.Text.Json 8.0.5
  • CommunityToolkit.Mvvm 8.3.2
  • Microsoft.Extensions.DependencyInjection 8.0.1
  • Microsoft.Extensions.Configuration.Json 8.0.1

4. themis_server REST API (C++)

Implementiert:

  • βœ… include/server/audit_api_handler.h - Header mit Strukturen und Klasse
  • βœ… src/server/audit_api_handler.cpp - 188 Zeilen Implementation
  • βœ… GET /api/audit - Query mit Filterung und Paginierung
  • βœ… GET /api/audit/export/csv - CSV-Export
  • βœ… Integration in http_server.cpp - Handler-Methoden und Routing
  • βœ… CMakeLists.txt aktualisiert
  • βœ… BUILD ERFOLGREICH - themis_server.exe kompiliert βœ…

Features:

  • βœ… Liest verschlΓΌsselte Audit-Logs aus data/logs/audit.jsonl
  • βœ… EntschlΓΌsselt encrypt-then-sign Payloads
  • βœ… Filtert nach: start/end Zeit, user, action, entity_type, entity_id, success
  • βœ… Paginierung (1-1000 EintrΓ€ge pro Seite)
  • βœ… ISO 8601 Datum-Parsing
  • βœ… URL-Decoding fΓΌr Query-Parameter
  • βœ… Case-insensitive Filterung
  • βœ… CSV-Export mit Escaping
  • βœ… JSON-Antwort mit totalCount, hasMore-Flag

API-Endpunkte:

GET /api/audit?start=2025-10-25T00:00:00&end=2025-11-01T23:59:59&user=admin&page=1&page_size=100
β†’ { "entries": [...], "totalCount": 1234, "page": 1, "pageSize": 100, "hasMore": true }

GET /api/audit/export/csv?action=CREATE
β†’ CSV-Datei mit allen CREATE-Aktionen

5. Dokumentation

  • βœ… tools/README.md - Überblick, Installation, Konfiguration
  • βœ… tools/MOCK_MODE.md - Anleitung fΓΌr Mock-Modus
  • βœ… tools/STATUS.md - Entwicklungsstand (dieses Dokument)
  • βœ… AUDIT_API_IMPLEMENTATION.md - Detaillierte API-Dokumentation
  • βœ… Inline-Code-Kommentare

❌ Ausstehend

1. Integration-Tests

Erforderlich:

  • End-to-End-Test: WPF-App β†’ themis_server β†’ RocksDB
  • Audit-Logs mit echten Daten generieren
  • Performance-Test mit 10k+ EintrΓ€gen
  • Fehlerbehandlung testen (Server offline, ungΓΌltige Daten)

Anleitung:

  1. themis_server starten: .\build\Release\themis_server.exe
  2. Logs generieren: CRUD-Operationen ausfΓΌhren
  3. WPF-App mit Mock-Modus deaktivieren
  4. Filter und Export testen

2. Authentifizierung

  • API-Key-Header (X-API-Key) validieren
  • Alternativ: JWT-Token von Keycloak
  • Konfiguration in config/config.json

3. Weitere Tools

Siehe tool-todo.md :

  • SAGA-Verifier
  • PII-Manager
  • Key-Rotation-Dashboard
  • Retention-Manager
  • Classification-Dashboard
  • Compliance-Reports

πŸš€ Schnellstart

Mock-Modus (ohne Server)

cd c:\VCC\themis\tools\Themis.AuditLogViewer
# Folge Anleitung in MOCK_MODE.md
dotnet run

Mit themis_server (nach API-Implementation)

# 1. Server starten
cd c:\VCC\themis\build
.\Release\themis_server.exe

# 2. App konfigurieren
# Bearbeite tools\Themis.AuditLogViewer\appsettings.json
{
  "ThemisServer": {
    "BaseUrl": "http://localhost:8080",
    "ApiKey": "your-api-key"
  }
}

# 3. App starten
cd c:\VCC\themis\tools\Themis.AuditLogViewer
dotnet run

πŸ“Š Architektur-Diagramm

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Themis.AuditLogViewer (WPF)               β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚  MainWindow.xaml (View)         β”‚       β”‚
β”‚   β”‚  - DataGrid                     β”‚       β”‚
β”‚   β”‚  - Filter Controls              β”‚       β”‚
β”‚   β”‚  - Export Button                β”‚       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚             β”‚ Data Binding                   β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚  MainWindowViewModel            β”‚       β”‚
β”‚   β”‚  - ObservableCollection         β”‚       β”‚
β”‚   β”‚  - RelayCommands                β”‚       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚             β”‚ DI                             β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚  ThemisApiClient                β”‚       β”‚
β”‚   β”‚  - GetAuditLogsAsync()          β”‚       β”‚
β”‚   β”‚  - ExportToCsvAsync()           β”‚       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚ HTTP (JSON)
              β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   themis_server (C++)                       β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚  AuditHandler (TODO)            β”‚       β”‚
β”‚   β”‚  - GET /api/audit               β”‚       β”‚
β”‚   β”‚  - GET /api/audit/export/csv    β”‚       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚             β”‚                                β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚   β”‚  RocksDB / SAGA-Logger          β”‚       β”‚
β”‚   β”‚  - Audit-Log-Daten              β”‚       β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“ NΓ€chste Schritte (PrioritΓ€t)

  1. themis_server API implementieren (C++)

    • AuditHandler erstellen
    • RocksDB-Abfrage fΓΌr Audit-Logs
    • JSON-Serialisierung
    • Paginierung
  2. Integration testen

    • Mock-Modus deaktivieren
    • Echte Daten von Server laden
    • Performance prΓΌfen
  3. SAGA-Verifier entwickeln

    • NΓ€chstes Tool nach PrioritΓ€t
    • Wichtig fΓΌr Manipulationsschutz
  4. Deployment

    • ClickOnce-Deployment
    • Installer erstellen
    • Auto-Update

πŸ› Bekannte Limitierungen

  • themis_server API noch nicht implementiert β†’ Mock-Modus erforderlich
  • Keine Authentifizierung (API-Key/JWT) implementiert
  • Export auf 10k EintrΓ€ge limitiert (PageSize)
  • Keine Unit-Tests fΓΌr WPF-Komponenten
  • Keine Internationalisierung (nur Deutsch)

πŸ’‘ Verbesserungsideen

  • Echtzeit-Updates (SignalR/WebSockets)
  • Erweiterte Filter (Regex, Zeitbereich-Shortcuts)
  • Grafische Auswertungen (Charts, Statistiken)
  • Excel-Export zusΓ€tzlich zu CSV
  • Mehrere Themes (Hell/Dunkel)
  • Speichern von Filter-Presets
  • Audit-Log-Diff-View (Alte vs. Neue Werte)

Erstellt: VS Code Copilot
Build-Status: βœ… Erfolgreich (Release)
NΓ€chster Milestone: themis_server REST API


ThemisDB 1.9.0-beta Β· Home Β· Module-Index Β· GitHub Β· Issues

ThemisDB Wiki

🏠 Overview

πŸš€ Getting Started

πŸ“– Tutorials

πŸ“— User Guide

βš™οΈ Operations & Security

πŸ“Ÿ Ops Runbooks

πŸ—οΈ Architecture

πŸ“ ADRs

πŸ”§ Contributing

πŸ“‹ Governance

πŸ” Audit

🧩 Plugins

πŸ”Œ Adapters

πŸ’‘ Examples

πŸ“¦ Client SDKs

πŸŽ“ Training

πŸ› οΈ Tools

πŸ€– Developer LLM Wiki

Clone this wiki locally