-- B10只导出无正文的返修比较证明;B06只读,不据此自动采纳候选或修改正文。 CREATE TABLE public.muse_revision_comparison_receipt ( receipt_id uuid PRIMARY KEY, author_id text NOT NULL, experiment_id uuid NOT NULL REFERENCES evaluation.muse_experiment(experiment_id), session_id uuid NOT NULL, round_number integer NOT NULL CHECK(round_number BETWEEN 1 AND 5), candidate_id uuid NOT NULL REFERENCES public.muse_writing_candidate(candidate_id), payload jsonb NOT NULL CHECK(jsonb_typeof(payload)='object'), payload_hash text NOT NULL CHECK(payload_hash ~ '^[0-9a-f]{64}$'), created_at timestamptz NOT NULL DEFAULT clock_timestamp(), FOREIGN KEY(session_id,author_id) REFERENCES public.muse_revision_session(session_id,author_id), FOREIGN KEY(session_id,round_number) REFERENCES public.muse_revision_round(session_id,round_number), UNIQUE(author_id,experiment_id,payload_hash) ); REVOKE ALL ON public.muse_revision_comparison_receipt FROM PUBLIC,muse_app,muse_eval; CREATE TRIGGER muse_revision_comparison_receipt_immutable BEFORE UPDATE OR DELETE ON public.muse_revision_comparison_receipt FOR EACH ROW EXECUTE FUNCTION public.muse_guard_literary_history(); -- 生产侧只能看到已导出的最小证明及实验是否停止,看不到oracle中的固定文本对或匿名映射。 CREATE VIEW public.muse_revision_comparison_status WITH (security_barrier=true) AS SELECT r.receipt_id,r.author_id,r.experiment_id,r.session_id,r.round_number, r.candidate_id,r.payload,r.payload_hash, EXISTS ( SELECT 1 FROM evaluation.muse_experiment_stop s WHERE s.experiment_id=r.experiment_id ) AS stopped FROM public.muse_revision_comparison_receipt r; REVOKE ALL ON public.muse_revision_comparison_status FROM PUBLIC,muse_app,muse_eval; GRANT SELECT ON public.muse_revision_comparison_status TO muse_app,muse_eval;