-- P72: scope_doc_type fuer canonical_controls
--
-- Erlaubt zu unterscheiden welcher Dokument-Typ der eigentliche Adressat
-- eines MC ist. Bisher landete jeder MC in jedem Doc-Audit was zu Noise
-- fuehrt (z.B. "elektronische Gesundheitsdaten-Transmission" landet im
-- Cookie-Richtlinie-Audit eines Autobauers).
--
-- Werte:
--   cookie_richtlinie     — Pflichtangaben Cookie-RL nach DSK-OH 2024
--   dse                   — Pflichtangaben Datenschutzerklaerung Art. 13/14
--   banner_implementation — Banner-UI-Anforderungen (nicht Text)
--                           z.B. "keine pre-ticked Checkboxes"
--   cmp_audit             — Consent-Management-Plattform-Audit-Trail
--                           z.B. "jede Einwilligung mit Zeitstempel speichern"
--   tom                   — Technisch-organisatorische Massnahmen
--                           z.B. "verschluesselte Backups"
--   avv                   — Auftragsverarbeitungsvertrag-Inhalt
--   jc                    — Joint-Controller-Vereinbarung Art. 26
--   impressum             — §5 TMG / §18 MStV
--   agb                   — Allgemeine Geschaeftsbedingungen
--   widerruf              — Widerrufsbelehrung
--   process               — Prozess-Anforderung (nicht textbasiert,
--                           kann nicht durch Text-Einfuegung erfuellt werden)
--   accounting            — Rechnungsstellung (UStG, HGB) — nicht Compliance
--   other                 — Faellt keiner Kategorie zu (Default)
--
-- NULL = noch nicht klassifiziert (Backfill-Skript setzt Wert).

DO $$
BEGIN
    IF EXISTS (
        SELECT 1 FROM information_schema.tables
        WHERE table_name = 'canonical_controls'
        AND table_schema = 'compliance'
    ) THEN
        ALTER TABLE compliance.canonical_controls
            ADD COLUMN IF NOT EXISTS scope_doc_type VARCHAR(40) DEFAULT NULL
            CHECK (scope_doc_type IS NULL OR scope_doc_type IN (
                'cookie_richtlinie', 'dse', 'banner_implementation',
                'cmp_audit', 'tom', 'avv', 'jc',
                'impressum', 'agb', 'widerruf',
                'process', 'accounting', 'other'
            ));

        CREATE INDEX IF NOT EXISTS idx_cc_scope_doc_type
            ON compliance.canonical_controls(scope_doc_type);

        COMMENT ON COLUMN compliance.canonical_controls.scope_doc_type IS
            'P72: Doc-Type Adressat. NULL = nicht klassifiziert. Findings nur '
            'beim passenden Doc-Type anzeigen, sonst Noise.';
    END IF;
END $$;
