Architektur¶
ConfluenceSynkMD folgt einem ETL (Extract-Transform-Load) Pipeline-Muster. Jede Sync-Operation durchläuft die gleiche dreistufige Pipeline.
Datenfluss¶
graph LR
subgraph Extract
A[Markdown-Dateien] -->|Lesen & Parsen| B(DocumentNodes)
C[Confluence API] -->|Seiten abrufen| B
end
subgraph Transform
B -->|Markdig + Custom Renderer| D(Confluence XHTML)
B -->|AngleSharp + Reverse Mapping| E(Markdown)
end
subgraph Load
D -->|Upload via REST API| F[Confluence Cloud]
E -->|Auf Disk schreiben| G[Lokales Dateisystem]
D -->|Lokaler Export| G
end
Layer¶
| Layer | Verantwortlichkeit | Schlüsselklassen |
|---|---|---|
| Configuration | CLI-Parsing, Einstellungs-Records | ConfluenceSettings, ConverterOptions, LayoutOptions, SyncOptions |
| ETL / Extract | Datei-Ingestion, API-Abruf, Frontmatter-Parsing | MarkdownIngestionStep, ConfluenceIngestionStep |
| ETL / Transform | Markdown ↔ XHTML-Konvertierung | ConfluenceXhtmlTransformStep, MarkdownTransformStep |
| ETL / Load | API-Upload, Dateisystem-Schreiben, lokaler Export | ConfluenceLoadStep, FileSystemLoadStep, LocalOnlyLoadStep, WriteBackStep |
| Services | Querschnittsfunktionen | ConfluenceApiClient, HierarchyResolver, MermaidRenderer, ImageOptimizer |
| Markdig | Benutzerdefinierte Markdig-Renderer | ConfluenceRenderer, 18+ individuelle Renderer |
| Models | Domänenobjekte | DocumentNode, ConvertedDocument, PageInfo |
Pipeline-Komposition¶
Design-Entscheidungen¶
- ETL statt prozedural — Jeder Schritt hat eine klar definierte Verantwortlichkeit
- Markdig für Parsing — Bewährter .NET Markdown-Parser mit Erweiterungssupport
- AngleSharp für Reverse — Vollständiger HTML-DOM-Parser für XHTML → Markdown
- Serilog für Logging — Strukturiertes Logging mit konfigurierbarer Verbosität
- System.CommandLine — Typsicheres CLI-Parsing mit automatischer Hilfe