Files
pdf-umbenenner/docs/specs/V2_6_-_Spezifikation.md
T

121 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# V2.6 Titellänge parametrisierbar machen
**Status:** Entwurf
**Erstellt:** 2026-04-22
**Autor:** Marcus (mit Claude als Mentor)
---
## Ziel
Der maximale Basistitel für KI-generierte PDF-Namen wird nicht mehr hardcodiert,
sondern ist über die Konfigurationsdatei steuerbar. Alle bisherigen Magic Numbers
(20 und 60 Zeichen) werden durch den konfigurierten Wert ersetzt.
---
## Hintergrund
### Bisheriger Zustand
- Titellänge war mit 20 Zeichen im Prompt und 60 Zeichen in der Validierung hardcodiert
- Kein zentraler Konfigurationsparameter, Werte über ~20 Dateien verstreut
- 60-Zeichen-Limit wurde im Rahmen des Produkttests als pragmatischer Zwischenwert eingeführt
### Motivation
- Verschiedene Einsatzszenarien erfordern unterschiedliche Titellängen
- Dateinamenlimits je nach Zielsystem unterschiedlich (siehe Recherche unten)
### Recherchierte Dateinamenlimits (nur Dateiname, ohne Pfad)
| System | Limit |
|---|---|
| Windows 10 / Windows Server 2022 (NTFS) | 255 Zeichen |
| Synology NAS Btrfs (unverschlüsselt) | 255 Zeichen |
| Synology NAS Btrfs (verschlüsselt) | ~143 Zeichen |
**Hinweis:** Der generierte Dateiname hat das Format `YYYY-MM-DD - <Titel>.pdf`,
was bereits 18 Zeichen Overhead bedeutet (Datum + Trennzeichen + Dateiendung).
Das sicherste Maximum für verschlüsselte Synology-Volumes ist daher **120 Zeichen**
für den Basistitel (143 18 = 125, mit Puffer auf 120 gerundet).
---
## Fachliche Anforderungen
### Neuer Konfigurationsparameter
- **Name:** `ai.title.max.length` (finale Benennung obliegt der Implementierung)
- **Typ:** positive Ganzzahl
- **Defaultwert:** `60` (bisheriger Wert bleibt erhalten, kein Breaking Change)
- **Speicherort:** `.properties`-Konfigurationsdatei
---
### Validierungsregeln
| Wert | Typ | Verhalten |
|---|---|---|
| Kein Wert / leer | Fehler | Pflichtfeld, Start wird abgebrochen |
| Keine Ganzzahl (z. B. „abc", „1.5") | Fehler | Ungültiger Typ, Start wird abgebrochen |
| < 1 | Fehler | Wert muss positiv sein, Start wird abgebrochen |
| 19 | Fehler | Minimum ist 10 Zeichen, Start wird abgebrochen |
| 1019 | Warnung | „Titellänge unter 20 Zeichen ist für die meisten Dokumente nicht empfohlen" |
| 2099 | OK | Normaler Betrieb, keine Meldung |
| 100120 | Warnung | „Hohe Titellänge Dateiname wird sehr lang, Kompatibilität mit verschlüsselten Volumes prüfen" |
| > 120 | Fehler | Überschreitet sicheres Limit für verschlüsselte Synology-Volumes, Start wird abgebrochen |
---
### GUI Konfigurationseditor
- Neues Texteingabefeld im Bereich **„Verarbeitungslimits"**
- Beschriftung: **„Max. Titellänge (Zeichen)"**
- Validierung erfolgt beim Speichern ungültige Werte werden **nicht** gespeichert
- Warnungen und Fehlermeldungen erscheinen im **Meldungsbereich** (unten in der GUI)
- Warnungen blockieren das Speichern **nicht**, Fehler hingegen schon
---
### Verarbeitung / Backend
- Alle hardcodierten `20`- und `60`-Zeichen-Limits werden durch den konfigurierten Wert ersetzt
- **Keine Magic Numbers** mehr im Produktionscode
- Der Wert wird beim Start geladen, validiert und an alle betroffenen Komponenten weitergereicht
- Betroffen sind mindestens:
- `AiResponseValidator`
- `TargetFilenameBuildingService`
- Prompt-Template (Hinweistext an die KI)
- JavaDoc aller betroffenen Klassen
---
### Prompt-Template
- Der Hinweis auf die Zeichenbegrenzung im Prompt-Template (`config/prompts/template.txt`)
wird ebenfalls dynamisch mit dem konfigurierten Wert befüllt
- **Hinweis:** Das Prompt-Template liegt außerhalb des JARs und wird zur Laufzeit gelesen.
Die Implementierung muss sicherstellen, dass der konfigurierte Wert zur Laufzeit
in den Prompt eingesetzt wird (z. B. per Platzhalter-Ersetzung).
---
## Nicht in V2.6 enthalten
- Automatisches Kürzen von zu langen KI-Titeln
- Pfadlängen-Validierung (Gesamtpfad inkl. Ordner)
- Unterschiedliche Limits je nach Zielsystem (nur ein globaler Wert)
---
## Abnahmekriterien
- [ ] Neuer Parameter ist in der `.properties`-Datei konfigurierbar
- [ ] Defaultwert 60 ist abwärtskompatibel (bestehende Configs ohne den Parameter funktionieren)
- [ ] Alle Validierungsregeln greifen korrekt (Fehler blockieren Start/Speichern, Warnungen nicht)
- [ ] GUI zeigt das neue Feld im richtigen Bereich
- [ ] Meldungsbereich zeigt passende Warn- und Fehlertexte
- [ ] Keine hardcodierten 20- oder 60-Zeichen-Limits mehr im Produktionscode
- [ ] Prompt-Template enthält den konfigurierten Wert zur Laufzeit
- [ ] Alle bestehenden Tests werden angepasst
- [ ] `mvn clean verify` ist grün