# Portabilität: UNIVERSAL
# Version: 2.0.0
# Zuletzt validiert: 2026-05-10

HANDLER-NAME
============
db_sync - ProSync: Multi-System DB-Synchronisierung


BESCHREIBUNG
============
ProSync synchronisiert BACH-Datenbanken zwischen mehreren Systemen.

Architektur:
- Jedes System hat eine lokale DB (~/.bach/bach.db)
- OneDrive dient als Transit-Hub (.SYNC/bach_db_transit/)
- Sync bei BACH-Start (pull) und -Exit (push)
- 137 Tabellen werden dynamisch erkannt und synchronisiert

Intelligentes Merge: Tabellen mit Timestamp-Spalten verwenden Last-Write-Wins
mit Konflikt-Check durch Heartbeat (5-Minuten-Fenster). Schema-Drift-sicher
durch shared-columns-Erkennung und named INSERT. Secrets werden aus Backups
entfernt. Automatische Cleanup-Strategie: Behalte neueste Backups pro Host
plus alles unter X Tagen (Default: 7 Tage, 10 pro Host).

ProSync ist optional. Single-System-Installationen brauchen keinen Sync.
Konfiguration: bach setup prosync --multi-system / --single-system.


OPERATIONEN
===========
bach db backup
  Erstellt manuelles Backup von bach.db.
  Format: bach_HOSTNAME_TIMESTAMP.bachdb (Beispiel: bach_LAPTOP_2026-03-04T14-30-00.bachdb)
  Traeger: Lokal, keine Remote-Anfrage.

bach db sync
  Führt vollständigen Sync durch: Pull (neuere Backups) + Merge + Push (eigenes Backup).
  Konflikt-Check: Wenn andere PCs aktiv sind (Heartbeat < 5min), wird nach Bestätigung gefragt.
  Flags: --auto oder -y für non-interactive Mode.
  Merge-Strategie: Neuere Zeilen (Timestamp) gewinnen (INSERT OR REPLACE).

bach db status
  Zeigt Status anzeigen: Lokale DB, Backup-Ordner, letzte 10 Backups (Host, Zeit, Größe),
  aktive PCs und deren Heartbeat.

bach db cleanup
  Löscht alte Backups basierend auf Retention-Policy.
  Regel: Behalte neueste 10 pro Host ODER alles jünger als 7 Tage (konfigurierbar).
  Gibt Anzahl gelöschter Backups aus.

bach db enable
  Aktiviert Auto-Sync bei Startup/Exit (setzt Konfigurationsflag).

bach db disable
  Deaktiviert Auto-Sync.


BEISPIELE
=========
# Manuelles Backup vor risikanter Operation
bach db backup

# Sync mit Konflikt-Check (interaktiv)
bach db sync

# Unbeaufsichtigter Sync (Cronjob/Automation)
bach db sync --auto

# Status vor Sync prüfen (zeigt aktive PCs und Backups)
bach db status

# Cleanup veralteter Backups manuell auslösen
bach db cleanup


DATEIEN
=======
Relativ zu system/:

hub/db_sync.py
  Kernimplementierung (DBSyncManager, DBSyncHandler).
  Dynamische Tabellen-Erkennung: 137 syncbare Tabellen (statt hardcoded).
  Schema-Drift-sicher durch shared-columns + named INSERT.

~/.bach/bach.db
  Lokale Produktions-Datenbank (primaere DB seit ProSync).

data/bach.db
  OneDrive-Fallback-DB (wird nicht mehr direkt beschrieben bei aktivem ProSync).

OneDrive/.SYNC/bach_db_transit/
  Transit-Hub für .bachdb-Dateien und heartbeat.json.
  Heartbeat: Verfolgt aktive PCs (Hostname, PID, Zeitstempel) für Konflikt-Detection.

data/config/db_sync_enabled
  Flag für ProSync-Aktivierung (erstellt durch "bach setup prosync --multi-system").


SIEHE AUCH
==========
- docs/help/setup.txt: bach setup prosync (Konfiguration)
- hub/bach_paths.py: BACH_DB, PROSYNC_TRANSIT_DIR, LOCAL_BACH_DIR
- basehandler / Handler-Framework: Siehe base.py für Schnittstelle
