From 759a313f31571666db026bedcd2132f16eb9d98f Mon Sep 17 00:00:00 2001 From: Oliver G Date: Sun, 17 Aug 2025 17:54:09 +0200 Subject: [PATCH] Create roadmap-image-dedup.md --- docs/roadmap-image-dedup.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docs/roadmap-image-dedup.md diff --git a/docs/roadmap-image-dedup.md b/docs/roadmap-image-dedup.md new file mode 100644 index 0000000..cc2a32c --- /dev/null +++ b/docs/roadmap-image-dedup.md @@ -0,0 +1,37 @@ +# Roadmap: Bild-Deduplizierung & Medien-Hygiene + +## Ziele +- Speicherverbrauch reduzieren +- Medienbestand konsistent halten +- Pipeline stabilisieren (keine Mehrfach-Uploads und -Speicherungen) + +## Vorgehen (sicher und reversibel) +1. **Index aufbauen (Read-Only):** + - Alle Bilder (`.jpg/.jpeg/.png/.webp/.gif`) in definierten Verzeichnissen scannen + - Für jede Datei: `sha256` (Byte-Hash) + `pHash` (perzeptuell) berechnen + - Ergebnis als SQLite-Index + CSV-Report speichern + +2. **Kanonisierung & Referenzen prüfen:** + - Pro Duplikatgruppe genau **eine** kanonische Datei wählen (größte/neueste) + - Alle internen Referenzen (DB/JSON) testweise auf Kanon aktualisieren (Dry-Run) + +3. **Speicher sparen ohne Risiko:** + - Nicht-kanonische Dateien durch **Hardlinks** auf den Kanon ersetzen (gleiches FS) + - Alternativ: nur löschen, wenn Referenzen **sicher** auf Kanon zeigen + +4. **Prävention für die Zukunft:** + - Beim Speichern: **Content-Addressed Storage** (`.`) + - In DB ein `content_hash`-Feld mit **Unique-Constraint** + - Vor jedem Speichern/Upload: Hash lookup → vorhandene Datei wiederverwenden + +## Akzeptanzkriterien +- Report listet alle Duplikatgruppen mit Pfaden und Größenersparnis +- Dry-Run zeigt geplante Änderungen ohne Schreibzugriff +- Nach „Anwenden“ verweisen alle Referenzen auf die kanonische Datei +- Re-Run findet **keine** Duplikate mehr (idempotent) +- Rollback möglich via Backup der Reports/Indexdatei + +## Metriken +- Anzahl Bilder vorher/nachher +- Ersparter Speicher (MB/GB) +- Anzahl gruppierter Duplikate