-- ==================================================================== -- 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;