65 lines
2.5 KiB
SQL
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;
|