-- 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;