5d0e2c90bd
Neue Warnschwellen: 10–39 Warnung (Absender benötigt 15–20 Zeichen), 40–99 unkritisch, 100–120 Warnung (verschlüsselte Volumes). Tests, Validator-Implementierungen, Smoke-Tests und Docs konsistent angepasst. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
4.5 KiB
4.5 KiB
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 |
| 1–9 | Fehler | Minimum ist 10 Zeichen, Start wird abgebrochen |
| 10–39 | Warnung | „Titellänge unter 40 Zeichen – KI-Ergebnisse können unvollständig sein, da Absender allein bereits 15–20 Zeichen benötigt" |
| 40–99 | OK | Normaler Betrieb, keine Meldung |
| 100–120 | Warnung | „Hohe Titellänge – 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- und60-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:
AiResponseValidatorTargetFilenameBuildingService- 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 verifyist grün