muse-agent-example/数据库/迁移/V0023__模型规划与调用级消费.sql
zizi cf0f4fb985 W20–W24:保存知识方法、迁移框架、审校修订与案例行为的集成成果
接续 88dd570,保存 W20–W24 已实现的共享接口、业务入口、迁移、工作台、测试与文档。
W20/W22/W23 保持 in_progress,W21/W24 保持 verified;此提交不宣称方法或规则正式启用、多轮返修、真实角色评测完成。

W25 新增实验、标定、逐调用交付与角色执行及其迁移/测试/索引留在实施工作树,原有私人和旧实现保留项不纳入。

验证:离线 571、前端 33 通过;PG 469 项通过、2 项浏览器未启用,2 项误带入的 W25 用例已移出本提交;最终任务与交付边界 37 项通过。make 检查、最终类型、84 项资源及 diff 检查通过。未重跑浏览器或 Pi 宿主,不以合成调用认证外部模型效果。
独立整体审查四维通过;证据保存在 R2-20260909/提交W20-W24。
2026-09-13 16:24:42 +08:00

33 lines
1.6 KiB
SQL

-- 模型规划只落候选,来源绑定独立保存;正式规划仍由作者决定。
CREATE TABLE public.muse_model_plan_candidate (
candidate_id uuid PRIMARY KEY REFERENCES public.muse_plan_candidate(candidate_id),
task_id uuid NOT NULL REFERENCES public.muse_task(task_id),
snapshot_id uuid NOT NULL REFERENCES public.muse_context_snapshot(snapshot_id),
call_id text NOT NULL,
model_evidence jsonb NOT NULL CHECK (jsonb_typeof(model_evidence)='object'),
prompt_hash text NOT NULL,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
UNIQUE (task_id, call_id)
);
-- 同一快照可能由不同真实调用消费;不能将后一次调用冒充前一次的幂等回执。
DO $migration$
DECLARE
old_constraint text;
BEGIN
SELECT conname INTO old_constraint FROM pg_constraint
WHERE conrelid='public.muse_method_usage'::regclass AND contype='u'
AND pg_get_constraintdef(oid)='UNIQUE (method_version_id, kind, context_ref, fragment_hash)';
IF old_constraint IS NULL THEN
RAISE EXCEPTION '消费键约束缺失,不能盲目替换';
END IF;
EXECUTE format('ALTER TABLE public.muse_method_usage DROP CONSTRAINT %I', old_constraint);
END
$migration$;
ALTER TABLE public.muse_method_usage ADD CONSTRAINT method_usage_call_key
UNIQUE (method_version_id, kind, context_ref, fragment_hash, task_id, result_ref);
-- 历史无任务/调用回执维持原来的单键约束,不将其升级为真实模型消费。
CREATE UNIQUE INDEX method_usage_legacy_key ON public.muse_method_usage
(method_version_id, kind, context_ref, fragment_hash)
WHERE task_id IS NULL OR result_ref IS NULL;