# DocuMentor

**Professionelle XSL-Transformations-Verwaltung und PDF-Generierung**

DocuMentor (ehemals xsl-validator) ist eine leistungsstarke PySide6-basierte Desktop-Anwendung zur Verwaltung und Validierung von XSL-Transformationen mit automatischer PDF-Generierung. Die Anwendung bietet eine intuitive GUI zur Konfiguration von Transformations-Toolchains (Saxon, Apache FOP, diff-pdf) und zur Verwaltung komplexer PDF-Generierungsprojekte mit PostgreSQL-Datenbankintegration.

## Features

### 🌳 Hierarchische Projektverwaltung
- Organisieren Sie Ihre XSL-Transformationen in einer übersichtlichen Baumstruktur
- Flexible Workflow-Definitionen mit verschachtelten Knoten
- Projektspezifische Konfiguration mit `project.yaml`

### ⚡ Asynchrone Batch-Verarbeitung
- Verarbeiten Sie große Mengen von XML-Dateien im Hintergrund
- Fortschrittsanzeige für lange Transformationen
- 4x schnellere XSLT-Transformationen durch Worker-Pool-Architektur

### 🔍 Intelligente Duplikatserkennung
- Automatische Hash-basierte Erkennung von identischen XML-Dateien (Blake2b)
- Verhindert Redundanzen und spart Speicherplatz
- Asynchrone Hash-Berechnung im Hintergrund

### 📄 PDF-Vergleichsansicht
- Drei-Panel-Ansicht (Referenz, Diff, Neu)
- Alpha-Blending für visuellen Vergleich
- Zoom- und Pan-Funktionalität

### 🗄️ PostgreSQL-Integration
- Nahtlose Datenbankanbindung mit Polars und ConnectorX
- Performante SQL-Abfragen und Datenverarbeitung
- SSL-Modus-Unterstützung

### 🛠️ Konfigurierbare Toolchains
- Flexible Verwaltung von Saxon, Apache FOP und diff-pdf
- Versionierung von Tools
- Plattformübergreifende Unterstützung (Linux, Windows, macOS)

### 🎨 Modernes UI
- Dark-Theme-Unterstützung via `qdarktheme`
- Drag-and-Drop für XML-Dateien
- Responsive und intuitive Benutzeroberfläche

## Installation

### Voraussetzungen

- Python 3.13 oder höher
- [uv](https://github.com/astral-sh/uv) Paketmanager

### Abhängigkeiten installieren

```bash
# Mit uv (empfohlen)
uv sync

# Oder mit pip
pip install -e .
```

### Externe Tools (optional)

Für die volle Funktionalität benötigen Sie:

- **Saxon-HE**: XSLT 3.0 Prozessor ([Download](https://www.saxonica.com/download/))
- **Apache FOP**: PDF-Generierung aus XSL-FO ([Download](https://xmlgraphics.apache.org/fop/download.html))
- **diff-pdf**: PDF-Vergleich ([GitHub](https://github.com/vslavik/diff-pdf))

## Verwendung

### Anwendung starten

```bash
uv run python src/main.py
```

### Projekt erstellen

1. Legen Sie ein neues Projekt an
2. Konfigurieren Sie Ihre Tools (Saxon, Apache FOP) in den Einstellungen
3. Organisieren Sie XSL-Stylesheets und XML-Dateien in der Baumstruktur
4. Führen Sie Transformationen aus

### Konfiguration

Die Anwendung speichert Konfigurationsdateien an folgenden Orten:

- **Linux**: `~/.config/DocuMentor/config.json`
- **Windows**: `%APPDATA%\DocuMentor\config.json`
- **macOS**: `~/Library/Application Support/DocuMentor/config.json`

Projektdaten werden in `project.yaml` im jeweiligen Projektverzeichnis gespeichert.

## Entwicklung

### Code-Qualität

```bash
# Code-Style prüfen
uv run ruff check

# Code formatieren
uv run ruff format
```

### Tests

```bash
# Hash-Implementierung testen
uv run python test_hash_implementation.py

# Duplikatserkennung testen
uv run python test_xml_hash_duplicate_detection.py
```

### Architektur

- **PySide6**: Native Qt-basierte GUI
- **Pydantic**: Typsichere Konfigurationsverwaltung
- **Polars**: Lightning-fast DataFrame-Verarbeitung
- **Blake2b**: Kryptographische Hash-Funktion für Integritätsprüfung

Siehe [CLAUDE.md](CLAUDE.md) für detaillierte Entwicklerdokumentation.

## Lizenz

DocuMentor ist unter der [MIT License](LICENSE) lizenziert.

### Third-Party-Lizenzen

Diese Software verwendet folgende Open-Source-Bibliotheken:

- **PySide6** - LGPL-3.0 OR GPL-2.0 OR GPL-3.0
- **Pydantic** - MIT License
- **Polars** - MIT License
- **pyqtdarktheme** - MIT License
- Weitere siehe [THIRD_PARTY_LICENSES.txt](THIRD_PARTY_LICENSES.txt)

Externe Tools (separat zu installieren):
- **Saxon-HE** - Mozilla Public License 2.0
- **Apache FOP** - Apache License 2.0

Vollständige Lizenzanalyse: [LICENSES.md](LICENSES.md)

## Beiträge

Beiträge sind willkommen! Bitte beachten Sie:

1. Fork des Repositories
2. Feature-Branch erstellen (`git checkout -b feature/amazing-feature`)
3. Änderungen committen (`git commit -m 'Add amazing feature'`)
4. Branch pushen (`git push origin feature/amazing-feature`)
5. Pull Request öffnen

### Code-Konventionen

- Deutsche Sprache für UI-Texte und Kommentare
- `pathlib.Path` für Dateipfade
- Zeilenlänge: 120 Zeichen (Ruff-Konfiguration)
- UI-Dateien (`*_ui.py`) werden automatisch generiert - nicht manuell bearbeiten!

## Support

Bei Fragen, Problemen oder Feature-Requests:

- GitHub Issues: [Issue Tracker](https://github.com/[your-repo]/issues)
- Dokumentation: [docs/](docs/)

## Changelog

### Version 0.1.0 (2025-01)

- ✅ Hierarchische Projektverwaltung
- ✅ Asynchrone Batch-Verarbeitung
- ✅ Blake2b-Hash-basierte Duplikatserkennung
- ✅ PDF-Vergleichsansicht
- ✅ PostgreSQL-Integration
- ✅ Worker-Pool für 4x schnellere Transformationen
- ✅ Dark-Theme-Unterstützung

## Autoren

- [Ihr Name] - Initial work

## Danksagungen

Vielen Dank an alle Entwickler der verwendeten Open-Source-Bibliotheken!

---

**DocuMentor** - Professionelle XSL-Transformations-Verwaltung für anspruchsvolle Projekte
