Files
teamvis-selfhost/supabase/migrations/0051_organigram_versions.sql
T
2026-06-25 19:54:40 +02:00

39 lines
1.8 KiB
SQL

-- ====================================================================
-- 0051_organigram_versions — Versionierung des Organigramms
-- ====================================================================
-- Audit-Anforderung: Prüfer wollen jederzeit die aktuelle, datierte
-- Version sehen und ältere Stände nachvollziehen können.
--
-- Modell (Hybrid):
-- 1) organigram_versions: nummerierte, UNVERÄNDERLICHE Snapshots des
-- kompletten Organigramm-Stands (JSONB), erzeugt bei „Version
-- veröffentlichen". Analog job_description_versions (0048).
-- 2) change_log (0022): erfasst zusätzlich jede Einzeländerung an
-- positions/org_units/assignments/deputies/external_parties/
-- service_relations (Hash-gesichert) — für die lückenlose
-- Nachvollziehbarkeit der Änderungen zwischen zwei Versionen.
create table if not exists public.organigram_versions (
id uuid primary key default gen_random_uuid(),
version_number integer not null,
-- Vollständiger OrganigramSnapshot (lib/organigram-tree.ts) als JSON,
-- inkl. zum Zeitpunkt der Freigabe aufgelöster Personennamen — so ist
-- der Stand reproduzierbar, auch wenn Stammdaten sich später ändern.
snapshot jsonb not null,
published_at timestamptz not null default now(),
published_by text not null,
note text,
created_at timestamptz not null default now()
);
create unique index if not exists organigram_versions_number_idx
on public.organigram_versions (version_number desc);
-- RLS: admin-only (Default deny, kein anon-Grant) — wie 0048.
alter table public.organigram_versions enable row level security;
-- Service-Role umgeht RLS, braucht auf Self-Host aber explizite Grants.
grant select, insert, update, delete on
public.organigram_versions
to service_role;