-- Klarbild — Erzeugungs-Modi, Vorschaubilder, Speicherverwaltung, NAS-Sicherung. -- (04) Kombinieren aus mehreren Bildern + Freitext-Erzeugung, Thumbnails für die -- Bibliothek, „nicht den Server vollmüllen" (Retention/Quellenlöschen), zweite -- Datensicherung auf ein Synology-NAS. -- Auftrags-Modus: each = jede Vorlage einzeln (bisher), compose = mehrere Bilder + Text -- zu EINEM neuen Bild, generate = reiner Freitext ohne Vorlage. ALTER TABLE jobs ADD COLUMN IF NOT EXISTS mode text NOT NULL DEFAULT 'each' CHECK (mode IN ('each','compose','generate')); -- Positionen: mehrere Quellbilder (compose) + verkleinertes Vorschaubild. ALTER TABLE items ADD COLUMN IF NOT EXISTS source_paths jsonb; ALTER TABLE items ADD COLUMN IF NOT EXISTS thumb_path text; -- Rezepte können einen Modus vorbelegen (für Telegram-Standardrezepte). ALTER TABLE recipes ADD COLUMN IF NOT EXISTS mode text NOT NULL DEFAULT 'each' CHECK (mode IN ('each','compose','generate')); -- Speicherverwaltung ------------------------------------------------------- ALTER TABLE settings ADD COLUMN IF NOT EXISTS keep_sources bool NOT NULL DEFAULT true; ALTER TABLE settings ADD COLUMN IF NOT EXISTS make_thumbnails bool NOT NULL DEFAULT true; ALTER TABLE settings ADD COLUMN IF NOT EXISTS retention_days int; -- NULL = unbegrenzt -- Zweite Sicherung auf Synology-NAS (SFTP/FTPS, wie Picdrop) ---------------- ALTER TABLE settings ADD COLUMN IF NOT EXISTS nas_enabled bool NOT NULL DEFAULT false; ALTER TABLE settings ADD COLUMN IF NOT EXISTS nas_host text; ALTER TABLE settings ADD COLUMN IF NOT EXISTS nas_protocol text CHECK (nas_protocol IN ('ftps','sftp')); ALTER TABLE settings ADD COLUMN IF NOT EXISTS nas_port int; ALTER TABLE settings ADD COLUMN IF NOT EXISTS nas_user text; ALTER TABLE settings ADD COLUMN IF NOT EXISTS nas_password_enc text; ALTER TABLE settings ADD COLUMN IF NOT EXISTS nas_base_path text; -- Spiegel-Status je Position (für Sichtbarkeit/Wiederholung). ALTER TABLE items ADD COLUMN IF NOT EXISTS nas_status text NOT NULL DEFAULT 'none' CHECK (nas_status IN ('none','pending','mirrored','failed'));