BEGIN; -- Webapp-Mechanismus (Phase 2, siehe project_phase2_app_store_merkmale- -- Memory): kundeneigene URLs (kein fester Katalog wie bei Merkmalen - -- jede Organisation/jeder Workspace hat ihre/seine eigenen), die als -- Menü-/Desktop-Verknüpfung mit dem Favicon der Seite ausgeliefert werden. -- Bewusst workspace-skaliert (nicht organisationsweit) - analog zu -- workspace_merkmale, damit unterschiedliche Workspaces derselben -- Organisation unterschiedliche Webapps bekommen können. CREATE TABLE workspace_webapps ( id UUID PRIMARY KEY, workspace_id UUID NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE, name TEXT NOT NULL, url TEXT NOT NULL, -- Favicon wird serverseitig beim Anlegen/Bearbeiten geholt (siehe -- fetch_favicon() in app.py) und unter WEBAPP_ICONS_DIR abgelegt - -- icon_filename ist NULL, solange kein Favicon gefunden werden konnte -- (Fallback-Icon auf Geräteseite). icon_filename TEXT, icon_content_type TEXT, sort_order INTEGER NOT NULL DEFAULT 0, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), updated_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE INDEX idx_workspace_webapps_workspace_id ON workspace_webapps(workspace_id); COMMIT;