258 lines
11 KiB
SQL
258 lines
11 KiB
SQL
-- Muse AI 模块初始 Schema(PostgreSQL 16)
|
||
-- 影响范围:AI 任务、候选、智能体、Prompt、质量策略、工具授权。
|
||
|
||
CREATE TABLE muse_ai_generation (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
work_id BIGINT,
|
||
chapter_id BIGINT,
|
||
block_id BIGINT,
|
||
agent_id BIGINT,
|
||
agent_version_id BIGINT,
|
||
task_type VARCHAR(50) NOT NULL,
|
||
status VARCHAR(20) NOT NULL DEFAULT 'queued',
|
||
idempotency_key VARCHAR(200) NOT NULL,
|
||
input_snapshot JSONB,
|
||
output_summary JSONB,
|
||
candidate_id BIGINT,
|
||
error_code VARCHAR(50),
|
||
error_message VARCHAR(500),
|
||
retry_count INT NOT NULL DEFAULT 0,
|
||
started_at TIMESTAMP,
|
||
finished_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_ai_generation_idem UNIQUE (tenant_id, idempotency_key)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_ai_gen_work_status ON muse_ai_generation(tenant_id, work_id, status, create_time);
|
||
CREATE INDEX idx_muse_ai_gen_block ON muse_ai_generation(tenant_id, block_id);
|
||
CREATE TRIGGER trg_muse_ai_generation_updated_at BEFORE UPDATE ON muse_ai_generation FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_ai_suggestion (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
work_id BIGINT NOT NULL,
|
||
chapter_id BIGINT,
|
||
block_id BIGINT,
|
||
generation_id BIGINT NOT NULL,
|
||
candidate_type VARCHAR(50) NOT NULL DEFAULT 'suggestion',
|
||
content_snapshot JSONB,
|
||
agent_id BIGINT,
|
||
agent_name VARCHAR(200),
|
||
agent_version VARCHAR(50),
|
||
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||
source_revision INT,
|
||
source_hash VARCHAR(100),
|
||
diff_summary JSONB,
|
||
quality_scores JSONB,
|
||
quality_result_id BIGINT,
|
||
source_snapshot_id BIGINT,
|
||
authorization_snapshot_id BIGINT,
|
||
source_status VARCHAR(30),
|
||
source_action_policy VARCHAR(30),
|
||
decision_archive_id BIGINT,
|
||
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
|
||
);
|
||
|
||
CREATE INDEX idx_muse_ai_suggestion_work_status ON muse_ai_suggestion(tenant_id, work_id, status, create_time);
|
||
CREATE INDEX idx_muse_ai_suggestion_gen ON muse_ai_suggestion(tenant_id, generation_id);
|
||
CREATE UNIQUE INDEX uk_muse_ai_suggestion_command ON muse_ai_suggestion(tenant_id, command_id) WHERE command_id IS NOT NULL;
|
||
CREATE TRIGGER trg_muse_ai_suggestion_updated_at BEFORE UPDATE ON muse_ai_suggestion FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_agent (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
agent_key VARCHAR(100) NOT NULL,
|
||
name VARCHAR(200) NOT NULL,
|
||
description VARCHAR(500),
|
||
agent_type VARCHAR(20) NOT NULL DEFAULT 'system',
|
||
owner_user_id BIGINT,
|
||
prompt_key VARCHAR(100),
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||
current_version_id BIGINT,
|
||
slot_bindings JSONB,
|
||
category VARCHAR(50),
|
||
tags 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_agent_key UNIQUE (tenant_id, agent_key)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_agent_type_status ON muse_agent(tenant_id, agent_type, status);
|
||
CREATE TRIGGER trg_muse_agent_updated_at BEFORE UPDATE ON muse_agent FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_agent_version (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
agent_id BIGINT NOT NULL,
|
||
version VARCHAR(50) NOT NULL,
|
||
config JSONB,
|
||
change_note VARCHAR(500),
|
||
status VARCHAR(20) NOT NULL DEFAULT 'draft',
|
||
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_agent_version_agent_ver UNIQUE (tenant_id, agent_id, version)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_agent_version_agent ON muse_agent_version(tenant_id, agent_id);
|
||
CREATE TRIGGER trg_muse_agent_version_updated_at BEFORE UPDATE ON muse_agent_version FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_agent_slot_binding (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
work_id BIGINT NOT NULL,
|
||
slot_key VARCHAR(100) NOT NULL,
|
||
agent_id BIGINT NOT NULL,
|
||
agent_version VARCHAR(50) NOT NULL,
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||
revision INT NOT NULL DEFAULT 1,
|
||
authorization_snapshot_id BIGINT,
|
||
source_snapshot_id BIGINT,
|
||
fallback_agent_id BIGINT,
|
||
binding_source VARCHAR(50),
|
||
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
|
||
);
|
||
|
||
CREATE INDEX idx_muse_agent_slot_binding_work ON muse_agent_slot_binding(tenant_id, work_id, slot_key, status);
|
||
CREATE UNIQUE INDEX uk_muse_agent_slot_binding_command ON muse_agent_slot_binding(tenant_id, command_id) WHERE command_id IS NOT NULL;
|
||
CREATE TRIGGER trg_muse_agent_slot_binding_updated_at BEFORE UPDATE ON muse_agent_slot_binding FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_prompt (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
prompt_key VARCHAR(100) NOT NULL,
|
||
name VARCHAR(200) NOT NULL,
|
||
description VARCHAR(500),
|
||
content TEXT,
|
||
active_version VARCHAR(50),
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||
category VARCHAR(50),
|
||
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_prompt_key UNIQUE (tenant_id, prompt_key)
|
||
);
|
||
|
||
CREATE TRIGGER trg_muse_prompt_updated_at BEFORE UPDATE ON muse_prompt FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_prompt_version (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
prompt_id BIGINT NOT NULL,
|
||
prompt_key VARCHAR(100) NOT NULL,
|
||
version VARCHAR(50) NOT NULL,
|
||
content TEXT,
|
||
variables JSONB,
|
||
change_note VARCHAR(500),
|
||
status VARCHAR(20) NOT NULL DEFAULT 'draft',
|
||
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_prompt_version_key_ver UNIQUE (tenant_id, prompt_key, version)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_prompt_version_prompt ON muse_prompt_version(tenant_id, prompt_id);
|
||
CREATE TRIGGER trg_muse_prompt_version_updated_at BEFORE UPDATE ON muse_prompt_version FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_quality_policy (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
policy_key VARCHAR(100) NOT NULL,
|
||
name VARCHAR(200) NOT NULL,
|
||
description VARCHAR(500),
|
||
active_version VARCHAR(50),
|
||
task_types 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_quality_policy_key UNIQUE (tenant_id, policy_key)
|
||
);
|
||
|
||
CREATE TRIGGER trg_muse_quality_policy_updated_at BEFORE UPDATE ON muse_quality_policy FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_quality_policy_version (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
policy_id BIGINT NOT NULL,
|
||
policy_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,
|
||
metric_contract_snapshot JSONB,
|
||
threshold_snapshot JSONB,
|
||
rewrite_policy_snapshot JSONB,
|
||
rollback_from_version_id BIGINT,
|
||
rollback_to_version_id BIGINT,
|
||
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_quality_policy_ver UNIQUE (tenant_id, policy_key, version_no)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_quality_policy_ver_pid ON muse_quality_policy_version(tenant_id, policy_id);
|
||
CREATE TRIGGER trg_muse_quality_policy_ver_updated_at BEFORE UPDATE ON muse_quality_policy_version FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_tool_grant (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
grant_key VARCHAR(100) NOT NULL,
|
||
agent_id BIGINT NOT NULL,
|
||
tool_name VARCHAR(100) NOT NULL,
|
||
action VARCHAR(100) NOT NULL,
|
||
purpose VARCHAR(200),
|
||
authority_owner VARCHAR(50) NOT NULL DEFAULT 'governance',
|
||
scope JSONB,
|
||
budget JSONB,
|
||
input_source_policy JSONB,
|
||
output_target_policy JSONB,
|
||
egress_policy JSONB,
|
||
outbound_policy JSONB,
|
||
audit_requirement JSONB,
|
||
approval_status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
||
approved_by VARCHAR(64),
|
||
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
||
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_tool_grant_key UNIQUE (tenant_id, grant_key)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_tool_grant_agent ON muse_tool_grant(tenant_id, agent_id);
|
||
CREATE UNIQUE INDEX uk_muse_tool_grant_command ON muse_tool_grant(tenant_id, command_id) WHERE command_id IS NOT NULL;
|
||
CREATE TRIGGER trg_muse_tool_grant_updated_at BEFORE UPDATE ON muse_tool_grant FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|