Files
Piwigo_Bratonien_Tools/CURRENT_STATUS.md
2026-08-17 21:22:04 +02:00

153 lines
6.6 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.

# Aktueller Entwicklungsstand
Stand: 17.08.2026
## Plugin
- Aktuelle Plugin-Version: **0.9.3.16**
- Aktueller Entwicklungsblock: **NC Connector Verbindungsverwaltung / laufende Optimierung**
- NC Connector ist Feature 10 und noch nicht vollständig abgeschlossen.
- Solange dieser Optimierungsblock läuft, bleibt die Version im Bereich `0.9.3.x`.
## Aktueller GitHub-Stand
Der lokale NC Connector ist für den aktuellen Bratonien-Einsatz inzwischen End-to-End funktionsfähig.
Erfolgreich umgesetzt und getestet:
- Nextcloud-Freigaben vom Typ `folder` und `file` werden aus der Source-View gelesen.
- Das Manifest führt beide Freigabetypen korrekt.
- Ordnerfreigaben werden als Verzeichnisbaum im Shadow Tree gespiegelt.
- Einzeldateifreigaben werden als Symlink direkt im Galerie-Root angelegt.
- Einzeldateien werden anschließend als echte Piwigo-Orphans ohne Albumzuordnung registriert.
- Entfernte Einzeldateifreigaben werden beim normalen Connector-Lauf aus dem Shadow Tree und aus Piwigo entfernt.
- Das Nextcloud-Original bleibt bei allen Löschvorgängen unangetastet.
- Der normale Connector-Lauf führt klassischen Piwigo-Dateisync und Orphan-Abgleich automatisch hintereinander aus.
- Der gemeinsame systemd-Timer `bratonien-nc-connector.timer` kann wieder produktiv verwendet werden.
- Connector-getriggerte neue physische Alben werden standardmäßig privat angelegt, damit neu importierte Inhalte nicht ungeordnet öffentlich erscheinen.
## Architektur NC Connector
- Nextcloud bleibt die einzige dauerhafte Quelle der Originalbilder.
- Piwigo erhält nur die für die Galerie benötigte Verzeichnis-/Symlink-Struktur und erzeugt daraus seine Derivate und Cache-Dateien.
- Der Connector arbeitet mit einem PostgreSQL-Leser und den Views `piwigo_showcase_sources` und `piwigo_showcase_activity`.
- Laufzeitdaten liegen unter `/var/lib/bratonien-tools/nc-connector/...`.
- Verbindungs-Konfigurationen liegen unter `/etc/bratonien-tools/nc-connector/connection-*.conf`.
- Der Shadow Tree enthält Verzeichnisse und Symlinks, keine Kopien der Originaldateien.
- Alle aktivierten Verbindungen werden über `runtime/run-all.sh` gemeinsam verarbeitet.
## Nextcloud-Freigabemodell
Der Connector unterstützt zwei Fälle:
1. komplette Ordner werden geteilt;
2. einzelne Bilder werden direkt geteilt.
Verarbeitung:
- `folder` -> Verzeichnisstruktur spiegeln und über Piwigos klassische Dateisynchronisierung als physische Albumstruktur einlesen;
- `file` -> Symlink direkt im Galerie-Root und anschließende Registrierung als Piwigo-Orphan.
Für einzelne Dateien wird kein künstlicher Unterordner erzeugt.
## Manifest / Shadow Tree
`runtime/lib/build_manifest.py` unterstützt zwei View-Schemata:
- modern: `share_id, item_type, display_name, storage_id, source_path`;
- legacy: `share_id, display_name, storage_id, source_path`.
Bei einer Legacy-View wird der Typ nach Auflösung des Storage-Pfads über Datei oder Verzeichnis bestimmt.
Das Manifest führt danach in beiden Fällen:
`share_id, item_type, display_name, source_path`
`runtime/lib/shadow_tree.py` verarbeitet daraus:
- `folder` -> Verzeichnisstruktur spiegeln;
- `file` -> Symlink direkt im Galerie-Root.
## Activity-Gate
Das Activity-Gate berücksichtigt neben dem Nextcloud-Aktivitätsstand auch die Signatur der aktuell sichtbaren Freigaben.
Damit werden Strukturänderungen an den Shares auch dann erkannt, wenn sie nicht zuverlässig durch einen reinen Maximalwert der Nextcloud-Aktivität abgebildet werden.
Weiterhin vorhanden:
- Quiet-Time;
- maximale Wartezeit;
- periodischer Full-Sync;
- Verbindungsspezifischer State.
## Piwigo-Synchronisation
### Physische Alben
`runtime/lib/piwigo-db-sync.pl` meldet sich an Piwigo an und löst die normale Dateisynchronisierung für die physischen Albumverzeichnisse aus.
Connector-getriggerte Neuanlagen werden dabei mit privatem Standardstatus verarbeitet.
### Root-Dateien / Orphans
Piwigos klassische Dateisynchronisation kann Dateien direkt unter dem Galerie-Root nicht als neues Element einem physischen Album zuordnen.
Deshalb verarbeitet `bratonien.nc.syncOrphans` diese Dateien separat.
Für neue Root-Dateien:
- wird ein normaler Eintrag in `piwigo_images` angelegt;
- `storage_category_id` bleibt `NULL`;
- es wird kein Eintrag in `piwigo_image_category` erzeugt;
- Metadaten und Piwigo-Aktivität werden über vorhandene Piwigo-Funktionen aktualisiert;
- die Datei erscheint im Batch Manager unter `With no album / Orphans`.
Für entfernte Root-Dateien wird nur der Piwigo-Datenbankeintrag entfernt. Das Nextcloud-Original bleibt unberührt.
### API-Weg
Es existieren zwei eigene Webservice-Endpunkte:
- `bratonien.nc.sync` vollständiger read-only Paritätstest des klassischen Piwigo-Syncs;
- `bratonien.nc.syncOrphans` dedizierte Root-Orphan-Synchronisation mit Simulation und produktivem Modus.
Beide Wege sind aktuell für Piwigo **16.4.0** freigegeben.
## Erfolgreiche Live-Tests
Bestätigt wurden:
- Ordnerfreigaben werden korrekt eingelesen.
- Eine einzelne Nextcloud-Dateifreigabe wurde im Manifest als `file` erkannt.
- Der zugehörige Symlink wurde direkt im Galerie-Root erzeugt.
- Die Orphan-Simulation erkannte die Datei als `new_orphans = 1` ohne Datenbankschreibzugriff.
- Der produktive Lauf registrierte die Datei als echtes Piwigo-Orphan.
- Die Piwigo-Fotoanzahl stieg dabei entsprechend an.
- Nach Entfernen der Nextcloud-Freigabe meldete der normale Connector-Lauf `files = 0` und `Piwigo-Orphans synchronisiert: +0 / -1`.
- Der Root-Symlink wurde entfernt.
- Ein anschließender Orphan-Abgleich fand keine Restdatei mehr.
- Der automatische Timer kann wieder regulär laufen.
## Sicherheit / Betriebsmodell
- Nextcloud bleibt Eigentümer der Originaldateien.
- Der Connector löscht keine Originaldateien aus den Storage-Mounts.
- Zugangsdaten werden nicht in das Repository geschrieben.
- Aktive Verbindungen verwenden getrennte Konfigurations-, Secret- und State-Dateien.
- Der Piwigo-Sync wird nur für aktivierte Connector-Verbindungen ausgeführt.
- Neue Connector-Alben werden privat angelegt, bevor sie regulär einsortiert oder freigegeben werden.
## Bekannte offene Punkte
Der lokale Connector-Grundbetrieb ist abgeschlossen. Offen bleiben vor allem die nächsten Ausbauschritte:
- Remote-Nextcloud-Adapter;
- weitere Bereinigung und Vereinfachung der Verbindungsverwaltung im Admin-UI;
- endgültige Entscheidung, welche Legacy-/Migrationshilfen nach stabiler Betriebsphase noch im Plugin verbleiben sollen;
- weitere Komfortfunktionen für Status, Diagnose und Administration.
## Repository-Fallback
Während der Entwicklung bleibt GitHub das führende Repository. Zusätzlich existiert auf dem privaten Gitea-System ein Pull-Mirror als Ausfall-/Fallback-Ebene.