diff --git a/README.md b/README.md index 090c1ac..dc30873 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# TeamVis — Self-Hosting-Bundle (v0.58.0) +# TeamVis — Self-Hosting-Bundle (v0.59.0) Dieses Bundle enthält alles zum **Betreiben** von TeamVis auf eigener Infrastruktur — **keinen** App-Quellcode. Die App selbst kommt als fertiges @@ -36,4 +36,4 @@ Vollständige Schritt-für-Schritt-Anleitung (von der nackten VM bis live): | `supabase/migrations/` | Datenbank-Schema (DDL) | | `docs/` | Anleitungen | -Stand: TeamVis 0.58.0. +Stand: TeamVis 0.59.0. diff --git a/package.json b/package.json index ff0748f..31547ad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "teamvis-selfhost", - "version": "0.58.0", + "version": "0.59.0", "private": true, "description": "Self-Hosting-Bundle für TeamVis (Installer + Migrationen, ohne App-Quellcode).", "type": "module", diff --git a/release.json b/release.json index bb60a97..af1be55 100644 --- a/release.json +++ b/release.json @@ -1,6 +1,6 @@ { - "version": "0.58.0", - "released": "2026-10-11", - "security": false, - "summary": "Die native App ist jetzt an den Tarif gebunden: ab Starter. Keine Migration, keine neuen Variablen." + "version": "0.59.0", + "released": "2026-10-14", + "security": true, + "summary": "Neuer KI-Anbieter mit eigener Adresse (OpenAI-kompatibel), etwa für einen Hoster mit Sitz und Verarbeitung in der EU. Zwei KI-Funktionen im Portal folgen jetzt dem Modul „KI“. Eine optionale Migration (0071), keine neuen Pflicht-Variablen." } diff --git a/supabase/migrations/0071_ai_compatible_provider.sql b/supabase/migrations/0071_ai_compatible_provider.sql new file mode 100644 index 0000000..893cb75 --- /dev/null +++ b/supabase/migrations/0071_ai_compatible_provider.sql @@ -0,0 +1,39 @@ +-- KI-Anbieter mit OpenAI-kompatibler Schnittstelle und eigener Adresse +-- ==================================================================== +-- Ergänzt die drei festen Anbieter aus 0038 um einen vierten, dessen +-- Adresse die Verwaltung selbst einträgt — z. B. ein Hoster mit Sitz und +-- Verarbeitung in der EU oder ein selbst betriebenes Modell. Nur additiv: +-- neue Spalten und eine erweiterte Prüfregel. + +alter table public.site_settings + add column if not exists ai_compatible_name text, + add column if not exists ai_compatible_base_url text, + add column if not exists ai_compatible_key text, + add column if not exists ai_compatible_model text; + +-- Die Prüfregel aus 0038 hat einen automatisch vergebenen Namen; sie wird +-- über ihre Definition gefunden und mit 'compatible' neu angelegt. +do $$ +declare c record; +begin + for c in + select conname + from pg_constraint + where conrelid = 'public.site_settings'::regclass + and contype = 'c' + and pg_get_constraintdef(oid) like '%ai_active_provider%' + loop + execute format('alter table public.site_settings drop constraint %I', c.conname); + end loop; +end $$; + +alter table public.site_settings + add constraint site_settings_ai_active_provider_check + check (ai_active_provider in ('anthropic', 'openai', 'openrouter', 'compatible')); + +-- Nur verschlüsselte Verbindungen: Über die Schnittstelle gehen +-- personenbezogene Daten. +alter table public.site_settings drop constraint if exists site_settings_ai_compatible_base_url_https; +alter table public.site_settings + add constraint site_settings_ai_compatible_base_url_https + check (ai_compatible_base_url is null or ai_compatible_base_url ~ '^https://');