240 lines
10 KiB
SQL
240 lines
10 KiB
SQL
-- P1R-2 Meta Real API 扩展 Schema。
|
|
-- 说明:本迁移只追加 Meta owner 自有治理事实;跨 Content/AI/Knowledge/New-API/SSE 的副作用不在此处伪造。
|
|
|
|
CREATE TABLE muse_meta_command (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
command_id VARCHAR(128) NOT NULL,
|
|
operation_id VARCHAR(128) NOT NULL,
|
|
actor_user_id BIGINT NOT NULL,
|
|
target_type VARCHAR(64) NOT NULL,
|
|
target_key VARCHAR(160) NOT NULL,
|
|
target_version INT NOT NULL,
|
|
request_hash CHAR(64) NOT NULL,
|
|
result_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,
|
|
CONSTRAINT uk_muse_meta_command UNIQUE (tenant_id, command_id)
|
|
);
|
|
|
|
CREATE INDEX idx_muse_meta_command_target
|
|
ON muse_meta_command(tenant_id, target_type, target_key, target_version);
|
|
CREATE TRIGGER trg_muse_meta_command_updated_at
|
|
BEFORE UPDATE ON muse_meta_command
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
CREATE TABLE muse_meta_governance_audit (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
operation_id VARCHAR(128) NOT NULL,
|
|
actor_user_id BIGINT NOT NULL,
|
|
side VARCHAR(32) NOT NULL DEFAULT 'admin',
|
|
target_type VARCHAR(64) NOT NULL,
|
|
target_key VARCHAR(160) NOT NULL,
|
|
target_version INT NOT NULL,
|
|
command_id VARCHAR(128),
|
|
request_hash CHAR(64),
|
|
before_status VARCHAR(32),
|
|
after_status VARCHAR(32),
|
|
before_active_version INT,
|
|
after_active_version INT,
|
|
validation_result_id VARCHAR(128),
|
|
impact_preview_id VARCHAR(128),
|
|
request_summary TEXT,
|
|
result_summary TEXT,
|
|
reason TEXT,
|
|
status VARCHAR(32) NOT NULL,
|
|
error_code VARCHAR(64),
|
|
error_message TEXT,
|
|
source_snapshot JSONB,
|
|
result_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_governance_audit_target
|
|
ON muse_meta_governance_audit(tenant_id, target_type, target_key, target_version);
|
|
CREATE INDEX idx_muse_meta_governance_audit_command
|
|
ON muse_meta_governance_audit(tenant_id, command_id)
|
|
WHERE command_id IS NOT NULL;
|
|
CREATE TRIGGER trg_muse_meta_governance_audit_updated_at
|
|
BEFORE UPDATE ON muse_meta_governance_audit
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
CREATE TABLE muse_meta_validation_result (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
validation_result_id VARCHAR(128) NOT NULL,
|
|
schema_id BIGINT NOT NULL,
|
|
schema_key VARCHAR(100) NOT NULL,
|
|
draft_version INT NOT NULL,
|
|
draft_hash CHAR(64) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
errors JSONB NOT NULL DEFAULT '[]'::jsonb,
|
|
warnings JSONB NOT NULL DEFAULT '[]'::jsonb,
|
|
compatibility_result JSONB,
|
|
source_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,
|
|
CONSTRAINT uk_muse_meta_validation_result UNIQUE (tenant_id, validation_result_id)
|
|
);
|
|
|
|
CREATE INDEX idx_muse_meta_validation_result_schema
|
|
ON muse_meta_validation_result(tenant_id, schema_id, draft_version);
|
|
CREATE TRIGGER trg_muse_meta_validation_result_updated_at
|
|
BEFORE UPDATE ON muse_meta_validation_result
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
CREATE TABLE muse_meta_impact_preview (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
impact_preview_id VARCHAR(128) NOT NULL,
|
|
operation_id VARCHAR(128) NOT NULL,
|
|
target_type VARCHAR(64) NOT NULL,
|
|
target_key VARCHAR(160) NOT NULL,
|
|
target_version INT NOT NULL,
|
|
draft_hash CHAR(64),
|
|
impact_summary JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
external_error_summary JSONB,
|
|
source_snapshot JSONB,
|
|
status VARCHAR(32) NOT NULL DEFAULT 'succeeded',
|
|
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_impact_preview UNIQUE (tenant_id, impact_preview_id)
|
|
);
|
|
|
|
CREATE INDEX idx_muse_meta_impact_preview_target
|
|
ON muse_meta_impact_preview(tenant_id, target_type, target_key, target_version);
|
|
CREATE TRIGGER trg_muse_meta_impact_preview_updated_at
|
|
BEFORE UPDATE ON muse_meta_impact_preview
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
CREATE TABLE muse_meta_gray_rule (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
schema_id BIGINT NOT NULL,
|
|
schema_version_id BIGINT NOT NULL,
|
|
version_no INT NOT NULL,
|
|
rule_key VARCHAR(128) NOT NULL,
|
|
scope VARCHAR(64) NOT NULL,
|
|
rule_snapshot JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
status VARCHAR(32) NOT NULL DEFAULT 'active',
|
|
command_id VARCHAR(128),
|
|
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_gray_rule UNIQUE (tenant_id, schema_version_id, rule_key)
|
|
);
|
|
|
|
CREATE INDEX idx_muse_meta_gray_rule_schema
|
|
ON muse_meta_gray_rule(tenant_id, schema_id, version_no);
|
|
CREATE TRIGGER trg_muse_meta_gray_rule_updated_at
|
|
BEFORE UPDATE ON muse_meta_gray_rule
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
CREATE TABLE muse_meta_function_chain_version (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
chain_id BIGINT NOT NULL,
|
|
chain_key VARCHAR(100) NOT NULL,
|
|
version_no INT NOT NULL,
|
|
status VARCHAR(32) NOT NULL DEFAULT 'draft',
|
|
active_flag BOOLEAN NOT NULL DEFAULT FALSE,
|
|
chain_snapshot JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
impact_preview_id VARCHAR(128),
|
|
command_id VARCHAR(128),
|
|
activated_by VARCHAR(64),
|
|
activated_at TIMESTAMP,
|
|
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_version UNIQUE (tenant_id, chain_id, version_no)
|
|
);
|
|
|
|
CREATE INDEX idx_muse_meta_function_chain_version_chain
|
|
ON muse_meta_function_chain_version(tenant_id, chain_id);
|
|
CREATE UNIQUE INDEX uk_muse_meta_function_chain_version_active
|
|
ON muse_meta_function_chain_version(tenant_id, chain_id)
|
|
WHERE active_flag = TRUE AND deleted = FALSE;
|
|
CREATE TRIGGER trg_muse_meta_function_chain_version_updated_at
|
|
BEFORE UPDATE ON muse_meta_function_chain_version
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
CREATE TABLE muse_meta_function_chain_slot (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
chain_version_id BIGINT NOT NULL,
|
|
slot_key VARCHAR(128) NOT NULL,
|
|
slot_type VARCHAR(64) NOT NULL,
|
|
required_node_type VARCHAR(64),
|
|
replaceable BOOLEAN NOT NULL DEFAULT TRUE,
|
|
slot_snapshot JSONB NOT NULL DEFAULT '{}'::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,
|
|
CONSTRAINT uk_muse_meta_function_chain_slot UNIQUE (tenant_id, chain_version_id, slot_key)
|
|
);
|
|
|
|
CREATE INDEX idx_muse_meta_function_chain_slot_version
|
|
ON muse_meta_function_chain_slot(tenant_id, chain_version_id);
|
|
CREATE TRIGGER trg_muse_meta_function_chain_slot_updated_at
|
|
BEFORE UPDATE ON muse_meta_function_chain_slot
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
CREATE TABLE muse_meta_function_chain_node (
|
|
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
chain_version_id BIGINT NOT NULL,
|
|
slot_id BIGINT,
|
|
node_key VARCHAR(100) NOT NULL,
|
|
node_type VARCHAR(64) NOT NULL,
|
|
protection_node_id BIGINT,
|
|
replaceable BOOLEAN NOT NULL DEFAULT FALSE,
|
|
node_snapshot JSONB NOT NULL DEFAULT '{}'::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,
|
|
CONSTRAINT uk_muse_meta_function_chain_node UNIQUE (tenant_id, chain_version_id, node_key)
|
|
);
|
|
|
|
CREATE INDEX idx_muse_meta_function_chain_node_version
|
|
ON muse_meta_function_chain_node(tenant_id, chain_version_id);
|
|
CREATE INDEX idx_muse_meta_function_chain_node_protection
|
|
ON muse_meta_function_chain_node(tenant_id, protection_node_id)
|
|
WHERE protection_node_id IS NOT NULL;
|
|
CREATE TRIGGER trg_muse_meta_function_chain_node_updated_at
|
|
BEFORE UPDATE ON muse_meta_function_chain_node
|
|
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
|
|
|
CREATE UNIQUE INDEX uk_muse_meta_schema_version_active_schema_id
|
|
ON muse_meta_schema_version(tenant_id, schema_id)
|
|
WHERE active_flag = TRUE AND deleted = FALSE;
|
|
|
|
ALTER TABLE muse_meta_protection_node
|
|
ADD COLUMN IF NOT EXISTS node_type VARCHAR(64) NOT NULL DEFAULT 'system',
|
|
ADD COLUMN IF NOT EXISTS irreplaceable_reason TEXT,
|
|
ADD COLUMN IF NOT EXISTS permission_requirement JSONB,
|
|
ADD COLUMN IF NOT EXISTS audit_requirement JSONB,
|
|
ADD COLUMN IF NOT EXISTS shadow_to_canonical_boundary JSONB,
|
|
ADD COLUMN IF NOT EXISTS observability_metrics JSONB;
|