接续 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。
38 lines
1.7 KiB
PL/PgSQL
38 lines
1.7 KiB
PL/PgSQL
-- 全书声音候选与确认版本;人物语言指纹仍归B02。
|
||
CREATE TABLE public.muse_voice_proposal (
|
||
proposal_id uuid PRIMARY KEY,
|
||
author_id text NOT NULL,
|
||
work_id text NOT NULL REFERENCES public.muse_work(work_id),
|
||
revision bigint NOT NULL DEFAULT 1 CHECK (revision = 1),
|
||
base_revision bigint NOT NULL CHECK (base_revision >= 0),
|
||
request jsonb NOT NULL CHECK (jsonb_typeof(request) = 'object'),
|
||
proposal_hash text NOT NULL,
|
||
created_at timestamptz NOT NULL DEFAULT clock_timestamp()
|
||
);
|
||
CREATE TABLE public.muse_voice_version (
|
||
version_id uuid PRIMARY KEY,
|
||
work_id text NOT NULL REFERENCES public.muse_work(work_id),
|
||
revision bigint NOT NULL CHECK (revision > 0),
|
||
proposal_id uuid NOT NULL UNIQUE REFERENCES public.muse_voice_proposal(proposal_id),
|
||
content_hash text NOT NULL,
|
||
effective_schema_hash text NOT NULL,
|
||
projection_version text NOT NULL,
|
||
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
|
||
UNIQUE (work_id, revision),
|
||
UNIQUE (work_id, version_id)
|
||
);
|
||
CREATE TABLE public.muse_voice_current (
|
||
work_id text PRIMARY KEY REFERENCES public.muse_work(work_id),
|
||
version_id uuid NOT NULL,
|
||
FOREIGN KEY (work_id, version_id) REFERENCES public.muse_voice_version(work_id, version_id)
|
||
);
|
||
CREATE FUNCTION public.muse_guard_voice_history() RETURNS trigger LANGUAGE plpgsql AS $$
|
||
BEGIN
|
||
RAISE EXCEPTION '声音提案与历史版本只追加,不改写或删除';
|
||
END;
|
||
$$;
|
||
CREATE TRIGGER muse_voice_proposal_guard BEFORE UPDATE OR DELETE ON public.muse_voice_proposal
|
||
FOR EACH ROW EXECUTE FUNCTION public.muse_guard_voice_history();
|
||
CREATE TRIGGER muse_voice_version_guard BEFORE UPDATE OR DELETE ON public.muse_voice_version
|
||
FOR EACH ROW EXECUTE FUNCTION public.muse_guard_voice_history();
|