muse-agent-example/数据库/迁移/V0005__作品规划.sql
zizi 8353d11d40 W10 作品骨架与人工正文版本:作品/章节骨架、目录版本与人工正文版本链。
按 R2 串行阶段整理提交;包内文件为该阶段交付(含后续小增量),状态以工作包清单为准。
2026-09-10 19:25:41 +08:00

95 lines
4.2 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- B01拥有作品身份、动态档案版本及稳定章节目录。
CREATE TABLE public.muse_work (
work_id text PRIMARY KEY,
author_id text NOT NULL,
current_revision bigint NOT NULL CHECK(current_revision>0),
directory_revision bigint NOT NULL DEFAULT 0 CHECK(directory_revision>=0)
);
CREATE TABLE public.muse_work_version (
work_id text NOT NULL REFERENCES public.muse_work(work_id),
revision bigint NOT NULL CHECK(revision>0),
content jsonb NOT NULL,
schema_binding jsonb NOT NULL,
content_hash text NOT NULL,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
PRIMARY KEY(work_id,revision)
);
CREATE TABLE public.muse_chapter (
chapter_id text PRIMARY KEY,
work_id text NOT NULL REFERENCES public.muse_work(work_id),
title text NOT NULL,
position integer NOT NULL CHECK(position>0),
UNIQUE(work_id,position) DEFERRABLE INITIALLY DEFERRED
);
CREATE TABLE public.muse_directory_version (
work_id text NOT NULL REFERENCES public.muse_work(work_id),
revision bigint NOT NULL CHECK(revision>=0),
chapters jsonb NOT NULL,
nodes jsonb NOT NULL DEFAULT '[]',
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
PRIMARY KEY(work_id,revision)
);
ALTER TABLE public.muse_work ADD CONSTRAINT work_current_version_fk
FOREIGN KEY(work_id,current_revision) REFERENCES public.muse_work_version(work_id,revision)
DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE public.muse_work ADD CONSTRAINT work_current_directory_fk
FOREIGN KEY(work_id,directory_revision) REFERENCES public.muse_directory_version(work_id,revision)
DEFERRABLE INITIALLY DEFERRED;
-- 明确选定的探索来源属于B01;保留不可变快照,不将方向选择当作规划确认。
CREATE TABLE public.muse_exploration_selection (
work_id text PRIMARY KEY REFERENCES public.muse_work(work_id),
current_revision bigint NOT NULL CHECK(current_revision>0)
);
CREATE TABLE public.muse_exploration_selection_version (
work_id text NOT NULL REFERENCES public.muse_work(work_id),
revision bigint NOT NULL CHECK(revision>0),
snapshot jsonb NOT NULL,
selected_by text NOT NULL,
selected_at timestamptz NOT NULL DEFAULT clock_timestamp(),
PRIMARY KEY(work_id,revision)
);
ALTER TABLE public.muse_exploration_selection ADD CONSTRAINT selection_current_version_fk
FOREIGN KEY(work_id,current_revision) REFERENCES public.muse_exploration_selection_version(work_id,revision)
DEFERRABLE INITIALLY DEFERRED;
CREATE TABLE public.muse_plan (
plan_id text PRIMARY KEY,
work_id text NOT NULL REFERENCES public.muse_work(work_id),
type_id text NOT NULL,
chapter_id text REFERENCES public.muse_chapter(chapter_id),
node_id text,
current_revision bigint NOT NULL CHECK(current_revision>0)
);
CREATE TABLE public.muse_plan_version (
plan_id text NOT NULL REFERENCES public.muse_plan(plan_id),
revision bigint NOT NULL CHECK(revision>0),
request jsonb NOT NULL,
content jsonb NOT NULL,
content_hash text NOT NULL,
schema_binding jsonb NOT NULL,
source_dependencies jsonb NOT NULL,
author_id text NOT NULL,
created_at timestamptz NOT NULL DEFAULT clock_timestamp(),
PRIMARY KEY(plan_id,revision)
);
ALTER TABLE public.muse_plan ADD CONSTRAINT plan_current_version_fk
FOREIGN KEY(plan_id,current_revision) REFERENCES public.muse_plan_version(plan_id,revision)
DEFERRABLE INITIALLY DEFERRED;
CREATE TABLE public.muse_plan_candidate (
candidate_id uuid PRIMARY KEY,
work_id text NOT NULL REFERENCES public.muse_work(work_id),
plan_id text NOT NULL,
current_revision bigint NOT NULL CHECK(current_revision>0)
);
CREATE TABLE public.muse_plan_candidate_version (
candidate_id uuid NOT NULL REFERENCES public.muse_plan_candidate(candidate_id),
revision bigint NOT NULL CHECK(revision>0),
request jsonb NOT NULL,
content jsonb NOT NULL,
source_dependencies jsonb NOT NULL,
candidate_hash text NOT NULL,
PRIMARY KEY(candidate_id,revision)
);
ALTER TABLE public.muse_plan_candidate ADD CONSTRAINT plan_candidate_current_version_fk
FOREIGN KEY(candidate_id,current_revision) REFERENCES public.muse_plan_candidate_version(candidate_id,revision)
DEFERRABLE INITIALLY DEFERRED;