muse-agent-example/数据库/迁移/V0001__共享标识与版本.sql
zizi 73f96255af W03 数据库、用途隔离与迁移机制:受控连接、用途角色隔离、Flyway 式迁移执行与隔离库夹具。
按 R2 串行阶段整理提交;包内文件为该阶段交付(含后续小增量),状态以工作包清单为准。
2026-09-10 19:25:40 +08:00

65 lines
2.5 KiB
SQL

-- V0001 共享标识与版本:新版数据库的共享基础。
-- 内容:迁移账本 + 跨模块共用的身份域(用途、内容用途、候选状态、审阅动作)。
-- 边界:只建立共享基础;业务对象表由 V0005 起各模块迁移建立,
-- 不在本版本预建业务列,也不复用旧库 DDL。
-- 迁移账本:版本、校验和与应用时间是数据演进的唯一事实(迁移执行器维护)
CREATE TABLE muse_migration (
version integer PRIMARY KEY CHECK (version >= 1),
name text NOT NULL,
checksum text NOT NULL CHECK (length(checksum) = 64),
applied_at timestamptz NOT NULL DEFAULT now()
);
-- 执行隔离用途:与 src/muse/共享/调用身份.py 的 StrEnum 一一对应
CREATE TYPE muse_purpose AS ENUM (
'production',
'evaluation',
'maintenance'
);
-- 内容消费用途:任务与工具按此裁剪可见字段
CREATE TYPE muse_content_purpose AS ENUM (
'planning',
'generation',
'detection',
'extraction'
);
-- 候选状态:候选先审后入的状态轴(各业务模块实例共用同一解释)
CREATE TYPE muse_candidate_state AS ENUM (
'draft',
'candidate',
'adopted',
'rejected',
'retired'
);
-- 审阅动作:作者决策的闭合集合
CREATE TYPE muse_review_action AS ENUM (
'adopt',
'reject',
'revise'
);
-- 固定角色在目标环境初始化,迁移必须由 muse_maint 执行。
-- schema 负责用途边界;业务模块后续迁移在相应用途中建立自己的对象。
REVOKE ALL ON SCHEMA public FROM PUBLIC;
GRANT USAGE ON SCHEMA public TO muse_app, muse_eval;
CREATE SCHEMA evaluation AUTHORIZATION muse_maint;
CREATE SCHEMA oracle AUTHORIZATION muse_maint;
REVOKE ALL ON SCHEMA evaluation, oracle FROM PUBLIC;
GRANT USAGE ON SCHEMA evaluation, oracle TO muse_eval;
-- 维护账本不授予运行角色写权限;后续生产表只允许生产角色读写。
ALTER DEFAULT PRIVILEGES FOR ROLE muse_maint IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO muse_app;
ALTER DEFAULT PRIVILEGES FOR ROLE muse_maint IN SCHEMA public
GRANT USAGE, SELECT ON SEQUENCES TO muse_app;
ALTER DEFAULT PRIVILEGES FOR ROLE muse_maint IN SCHEMA evaluation
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO muse_eval;
ALTER DEFAULT PRIVILEGES FOR ROLE muse_maint IN SCHEMA evaluation
GRANT USAGE, SELECT ON SEQUENCES TO muse_eval;
ALTER DEFAULT PRIVILEGES FOR ROLE muse_maint IN SCHEMA oracle
GRANT SELECT ON TABLES TO muse_eval;