-- B03拥有完整分析;S02检查点只保留运行证据与结果引用。 CREATE TABLE public.muse_source_analysis ( author_id text NOT NULL, analysis_id text NOT NULL, revision bigint NOT NULL DEFAULT 1 CHECK (revision = 1), source_id uuid NOT NULL, source_revision bigint NOT NULL CHECK (source_revision > 0), source_content_hash text NOT NULL CHECK (source_content_hash ~ '^[0-9a-f]{64}$'), origin text NOT NULL CHECK (origin IN ('model','checkpoint_history','legacy_import')), payload jsonb NOT NULL CHECK (jsonb_typeof(payload) = 'object'), content_hash text NOT NULL CHECK (content_hash ~ '^[0-9a-f]{64}$'), created_at timestamptz NOT NULL DEFAULT clock_timestamp(), PRIMARY KEY (analysis_id), FOREIGN KEY (source_id, source_revision) REFERENCES public.muse_source_version(source_id, revision) ); CREATE INDEX ON public.muse_source_analysis (author_id, source_id, created_at DESC, analysis_id); CREATE FUNCTION public.muse_guard_source_analysis() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN RAISE EXCEPTION '分析版本只追加,不改写或删除历史'; END; $$; CREATE TRIGGER muse_source_analysis_guard BEFORE UPDATE OR DELETE ON public.muse_source_analysis FOR EACH ROW EXECUTE FUNCTION public.muse_guard_source_analysis();