-- PROJ: heuristische Metadaten-Vorschläge
-- Doku-only (siehe README.md in diesem Verzeichnis) — die tatsächliche
-- Ausführung passiert idempotent über
-- internal/storage/metadata_suggestions.go initMetadataSuggestionsSchema(),
-- aufgerufen aus (*Store).initSchema() NACH dem documents-/taxonomy-Schema
-- (die Vorschläge scoren Taxonomie-Entitäten gegen ein Dokument).
--
-- Metadaten-Vorschläge: regelbasiert (KEIN LLM). Pro Vorschlags-Lauf wird ein
-- Dokument gegen alle Taxonomie-Entitäten (Tags/Dokumenttypen/Korrespondenten)
-- fuzzy-gescored; Near-Misses oberhalb einer Schwelle (suggestionFloor), die
-- noch NICHT zugewiesen sind, werden als nicht-bindende Kandidaten vorgeschlagen.
-- Sieht der aktuelle Titel noch auto-generiert aus, wird zusätzlich ein
-- neu abgeleiteter Titel vorgeschlagen.
--
-- Diese Tabelle ist NUR ein Log/Cache dessen, was der heuristische Provider
-- vorgeschlagen hat. Das Anwenden eines akzeptierten Feldes läuft über die
-- normalen Edit-Endpunkte (PATCH title, tag-attach, ...), NIEMALS über diese
-- Zeile. status wird beim Review ('reviewed') gesetzt, unabhängig davon welche
-- Felder der Nutzer übernommen hat.

CREATE TABLE IF NOT EXISTS metadata_suggestions (
    id            BIGSERIAL PRIMARY KEY,
    tenant_id     BIGINT NOT NULL,
    document_id   BIGINT NOT NULL,
    provider      TEXT NOT NULL DEFAULT 'heuristic',
    requested_by  BIGINT,
    requested_at  TIMESTAMPTZ NOT NULL DEFAULT now(),
    suggestion    JSONB NOT NULL,
    status        TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending','reviewed')),
    reviewed_at   TIMESTAMPTZ,
    reviewed_by   BIGINT
);
CREATE INDEX IF NOT EXISTS idx_metadata_suggestions_document ON metadata_suggestions(document_id);
