134 lines
5.9 KiB
SQL
134 lines
5.9 KiB
SQL
-- Muse Meta 模块初始 Schema(PostgreSQL 16)
|
||
-- 影响范围:MetaSchema、字段、可见性策略、保护节点、功能链路。
|
||
|
||
CREATE TABLE muse_meta_schema (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
schema_key VARCHAR(100) NOT NULL,
|
||
domain VARCHAR(20) NOT NULL,
|
||
scope VARCHAR(20) NOT NULL,
|
||
target_type VARCHAR(50),
|
||
display_name VARCHAR(200) NOT NULL,
|
||
active_version_id BIGINT,
|
||
effective_scope JSONB,
|
||
projection_version INT NOT NULL DEFAULT 1,
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||
creator VARCHAR(64) NOT NULL DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater VARCHAR(64) NOT NULL DEFAULT '',
|
||
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||
CONSTRAINT uk_muse_meta_schema_key UNIQUE (tenant_id, domain, scope, target_type, schema_key)
|
||
);
|
||
|
||
CREATE TRIGGER trg_muse_meta_schema_updated_at BEFORE UPDATE ON muse_meta_schema FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_meta_schema_version (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
schema_id BIGINT NOT NULL,
|
||
schema_key VARCHAR(100) NOT NULL,
|
||
version_no INT NOT NULL,
|
||
status VARCHAR(20) NOT NULL DEFAULT 'draft',
|
||
active_flag BOOLEAN NOT NULL DEFAULT FALSE,
|
||
effective_scope JSONB,
|
||
field_contract_snapshot JSONB,
|
||
impact_preview_snapshot JSONB,
|
||
rollback_from_version_id BIGINT,
|
||
rollback_to_version_id BIGINT,
|
||
published_by VARCHAR(64),
|
||
published_at TIMESTAMP,
|
||
activated_by VARCHAR(64),
|
||
activated_at TIMESTAMP,
|
||
change_note VARCHAR(500),
|
||
command_id VARCHAR(120),
|
||
creator VARCHAR(64) NOT NULL DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater VARCHAR(64) NOT NULL DEFAULT '',
|
||
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||
CONSTRAINT uk_muse_meta_schema_version_key UNIQUE (tenant_id, schema_key, version_no)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_meta_schema_ver_sid ON muse_meta_schema_version(tenant_id, schema_id);
|
||
CREATE UNIQUE INDEX uk_muse_meta_schema_ver_command ON muse_meta_schema_version(tenant_id, command_id) WHERE command_id IS NOT NULL;
|
||
CREATE TRIGGER trg_muse_meta_schema_version_updated_at BEFORE UPDATE ON muse_meta_schema_version FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_meta_field (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
schema_version_id BIGINT NOT NULL,
|
||
field_key VARCHAR(100) NOT NULL,
|
||
display_name VARCHAR(200) NOT NULL,
|
||
field_type VARCHAR(20) NOT NULL,
|
||
is_required BOOLEAN NOT NULL DEFAULT FALSE,
|
||
default_value JSONB,
|
||
enum_values JSONB,
|
||
validation_rules JSONB,
|
||
sort_order INT NOT NULL DEFAULT 0,
|
||
creator VARCHAR(64) NOT NULL DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater VARCHAR(64) NOT NULL DEFAULT '',
|
||
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0
|
||
);
|
||
|
||
CREATE INDEX idx_muse_meta_field_ver ON muse_meta_field(tenant_id, schema_version_id);
|
||
CREATE TRIGGER trg_muse_meta_field_updated_at BEFORE UPDATE ON muse_meta_field FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_meta_visibility_policy (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
schema_version_id BIGINT NOT NULL,
|
||
ui_visible BOOLEAN NOT NULL DEFAULT TRUE,
|
||
ai_context BOOLEAN NOT NULL DEFAULT FALSE,
|
||
user_editable BOOLEAN NOT NULL DEFAULT TRUE,
|
||
user_searchable BOOLEAN NOT NULL DEFAULT FALSE,
|
||
exportable BOOLEAN NOT NULL DEFAULT FALSE,
|
||
policy_snapshot JSONB,
|
||
creator VARCHAR(64) NOT NULL DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater VARCHAR(64) NOT NULL DEFAULT '',
|
||
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0
|
||
);
|
||
|
||
CREATE INDEX idx_muse_meta_vis_policy_ver ON muse_meta_visibility_policy(tenant_id, schema_version_id);
|
||
CREATE TRIGGER trg_muse_meta_vis_policy_updated_at BEFORE UPDATE ON muse_meta_visibility_policy FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_meta_protection_node (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
node_key VARCHAR(100) NOT NULL,
|
||
display_name VARCHAR(200) NOT NULL,
|
||
owner_module VARCHAR(50) NOT NULL,
|
||
replaceable BOOLEAN NOT NULL DEFAULT FALSE,
|
||
policy_snapshot JSONB,
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||
creator VARCHAR(64) NOT NULL DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater VARCHAR(64) NOT NULL DEFAULT '',
|
||
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||
CONSTRAINT uk_muse_meta_protection_node UNIQUE (tenant_id, node_key)
|
||
);
|
||
|
||
CREATE TRIGGER trg_muse_meta_protection_node_updated_at BEFORE UPDATE ON muse_meta_protection_node FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_meta_function_chain (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
chain_key VARCHAR(100) NOT NULL,
|
||
active_version VARCHAR(50),
|
||
chain_snapshot JSONB,
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||
creator VARCHAR(64) NOT NULL DEFAULT '',
|
||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
updater VARCHAR(64) NOT NULL DEFAULT '',
|
||
update_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
||
tenant_id BIGINT NOT NULL DEFAULT 0,
|
||
CONSTRAINT uk_muse_meta_function_chain UNIQUE (tenant_id, chain_key)
|
||
);
|
||
|
||
CREATE TRIGGER trg_muse_meta_function_chain_updated_at BEFORE UPDATE ON muse_meta_function_chain FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|