muse-agent-example/数据库/迁移/V0056__调用结算与配置验证.sql
zizi c154ca9085 配置与数据库:迁移 V0056–V0060 与流程模板
- 迁移:调用结算与配置验证(V0056)、来源当前授权(V0057)、成品补充验证回执(V0058)、检索索引代次(V0059)、
  评测单元复用来源(V0060);新表按既有约定加只追加守卫与角色授权。
- 流程模板与载入口径同步(内联保护字段改为登记类型约束);旧库迁移工具链按新表结构对齐。
- 配置:提供方模板与运行配置同步角色策略版本;角色策略白名单新增 qwen3.8-flash(见收尾报告待裁决项:
  该模型精确身份与独立性尚未核验,且策略版本号未随白名单升版)。
2026-09-18 01:15:25 +08:00

56 lines
3.6 KiB
SQL

-- 结算不产生执行事件;账目变化由独立版本及只追加命令回执表达。
ALTER TABLE public.muse_task ADD COLUMN accounting_revision bigint NOT NULL DEFAULT 0;
ALTER TABLE evaluation.muse_task ADD COLUMN accounting_revision bigint NOT NULL DEFAULT 0;
CREATE TABLE public.muse_call_settlement (
task_id uuid NOT NULL REFERENCES public.muse_task(task_id),
command_id text NOT NULL CHECK (btrim(command_id) <> ''),
receipt_id uuid NOT NULL UNIQUE,
request_hash text NOT NULL CHECK (request_hash ~ '^[0-9a-f]{64}$'),
receipt jsonb NOT NULL,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
PRIMARY KEY(task_id,command_id)
);
CREATE TABLE evaluation.muse_call_settlement (LIKE public.muse_call_settlement INCLUDING ALL);
ALTER TABLE evaluation.muse_call_settlement ADD FOREIGN KEY(task_id) REFERENCES evaluation.muse_task(task_id);
CREATE TRIGGER muse_call_settlement_immutable BEFORE UPDATE OR DELETE ON public.muse_call_settlement
FOR EACH ROW EXECUTE FUNCTION public.muse_guard_literary_history();
CREATE TRIGGER muse_call_settlement_immutable BEFORE UPDATE OR DELETE ON evaluation.muse_call_settlement
FOR EACH ROW EXECUTE FUNCTION public.muse_guard_literary_history();
GRANT SELECT,INSERT ON public.muse_call_settlement TO muse_app;
GRANT SELECT,INSERT ON evaluation.muse_call_settlement TO muse_eval;
REVOKE ALL ON public.muse_call_settlement FROM muse_eval;
-- 验证专用绑定不能被业务配置读取入口消费,不需要草案先启用。
CREATE TABLE public.muse_config_probe_binding (
task_id uuid PRIMARY KEY REFERENCES public.muse_task(task_id),
config_id text NOT NULL,
version text NOT NULL,
content_hash text NOT NULL CHECK (content_hash ~ '^[0-9a-f]{64}$'),
content jsonb NOT NULL,
created_at timestamptz NOT NULL DEFAULT clock_timestamp()
);
CREATE TABLE evaluation.muse_config_probe_binding (LIKE public.muse_config_probe_binding INCLUDING ALL);
ALTER TABLE evaluation.muse_config_probe_binding ADD FOREIGN KEY(task_id) REFERENCES evaluation.muse_task(task_id);
CREATE TRIGGER muse_config_probe_immutable BEFORE UPDATE OR DELETE ON public.muse_config_probe_binding
FOR EACH ROW EXECUTE FUNCTION public.muse_guard_literary_history();
CREATE TRIGGER muse_config_probe_immutable BEFORE UPDATE OR DELETE ON evaluation.muse_config_probe_binding
FOR EACH ROW EXECUTE FUNCTION public.muse_guard_literary_history();
GRANT SELECT,INSERT ON public.muse_config_probe_binding TO muse_app;
GRANT SELECT,INSERT ON evaluation.muse_config_probe_binding TO muse_eval;
REVOKE ALL ON public.muse_config_probe_binding FROM muse_eval;
CREATE TABLE public.muse_call_reconciliation (
task_id uuid NOT NULL REFERENCES public.muse_task(task_id),
command_id text NOT NULL CHECK (btrim(command_id) <> ''),
request_hash text NOT NULL CHECK (request_hash ~ '^[0-9a-f]{64}$'),
receipt jsonb NOT NULL,
PRIMARY KEY(task_id,command_id)
);
CREATE TABLE evaluation.muse_call_reconciliation (LIKE public.muse_call_reconciliation INCLUDING ALL);
ALTER TABLE evaluation.muse_call_reconciliation ADD FOREIGN KEY(task_id) REFERENCES evaluation.muse_task(task_id);
CREATE TRIGGER muse_call_reconciliation_immutable BEFORE UPDATE OR DELETE ON public.muse_call_reconciliation
FOR EACH ROW EXECUTE FUNCTION public.muse_guard_literary_history();
CREATE TRIGGER muse_call_reconciliation_immutable BEFORE UPDATE OR DELETE ON evaluation.muse_call_reconciliation
FOR EACH ROW EXECUTE FUNCTION public.muse_guard_literary_history();
GRANT SELECT,INSERT ON public.muse_call_reconciliation TO muse_app;
GRANT SELECT,INSERT ON evaluation.muse_call_reconciliation TO muse_eval;
REVOKE ALL ON public.muse_call_reconciliation FROM muse_eval;