143 lines
6.5 KiB
SQL
143 lines
6.5 KiB
SQL
-- Muse Account 模块初始 Schema(PostgreSQL 16)
|
||
-- 影响范围:权益、配额、用量、安全事件、New-API 绑定。
|
||
|
||
CREATE TABLE muse_member_entitlement (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
account_user_id BIGINT NOT NULL,
|
||
plan_type VARCHAR(50) NOT NULL DEFAULT 'free',
|
||
plan_started_at TIMESTAMP,
|
||
plan_expires_at TIMESTAMP,
|
||
ai_call_quota INT NOT NULL DEFAULT 0,
|
||
ai_call_used INT NOT NULL DEFAULT 0,
|
||
storage_quota_mb BIGINT NOT NULL DEFAULT 0,
|
||
storage_used_mb BIGINT NOT NULL DEFAULT 0,
|
||
kb_count_quota INT NOT NULL DEFAULT 0,
|
||
work_count_quota INT NOT NULL DEFAULT 0,
|
||
export_quota INT NOT NULL DEFAULT 0,
|
||
features_json JSONB,
|
||
revision INT NOT NULL DEFAULT 1,
|
||
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_member_entitlement_user UNIQUE (tenant_id, account_user_id)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_member_entitlement_user ON muse_member_entitlement(tenant_id, account_user_id);
|
||
CREATE TRIGGER trg_muse_member_entitlement_updated_at BEFORE UPDATE ON muse_member_entitlement FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_member_entitlement_audit_log (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
account_user_id BIGINT NOT NULL,
|
||
change_type VARCHAR(30) NOT NULL,
|
||
source_owner VARCHAR(50),
|
||
source_id BIGINT,
|
||
idempotency_key VARCHAR(200) NOT NULL,
|
||
before_value_snapshot JSONB,
|
||
delta_value_snapshot JSONB,
|
||
after_value_snapshot JSONB,
|
||
reason_code VARCHAR(50),
|
||
reason_message VARCHAR(500),
|
||
operator_user_id BIGINT,
|
||
audit_event_id BIGINT,
|
||
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_member_ent_audit_idem UNIQUE (tenant_id, idempotency_key)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_member_ent_audit_user ON muse_member_entitlement_audit_log(tenant_id, account_user_id, create_time);
|
||
CREATE TRIGGER trg_muse_member_ent_audit_updated_at BEFORE UPDATE ON muse_member_entitlement_audit_log FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_member_quota (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
account_user_id BIGINT NOT NULL,
|
||
quota_type VARCHAR(50) NOT NULL,
|
||
total_amount BIGINT NOT NULL DEFAULT 0,
|
||
used_amount BIGINT NOT NULL DEFAULT 0,
|
||
reset_cycle VARCHAR(20),
|
||
last_reset_at TIMESTAMP,
|
||
next_reset_at TIMESTAMP,
|
||
revision INT NOT NULL DEFAULT 1,
|
||
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_member_quota_user_type UNIQUE (tenant_id, account_user_id, quota_type)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_member_quota_user ON muse_member_quota(tenant_id, account_user_id);
|
||
CREATE TRIGGER trg_muse_member_quota_updated_at BEFORE UPDATE ON muse_member_quota FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_member_usage_record (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
account_user_id BIGINT NOT NULL,
|
||
usage_type VARCHAR(50) NOT NULL,
|
||
work_id BIGINT,
|
||
task_id BIGINT,
|
||
token_input INT NOT NULL DEFAULT 0,
|
||
token_output INT NOT NULL DEFAULT 0,
|
||
cost_reference VARCHAR(100),
|
||
gateway_request_id VARCHAR(200),
|
||
correlation_id VARCHAR(200),
|
||
attribution_snapshot JSONB,
|
||
status VARCHAR(20) NOT NULL DEFAULT 'completed',
|
||
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_member_usage_user_time ON muse_member_usage_record(tenant_id, account_user_id, create_time);
|
||
CREATE INDEX idx_muse_member_usage_correlation ON muse_member_usage_record(tenant_id, correlation_id);
|
||
CREATE TRIGGER trg_muse_member_usage_record_updated_at BEFORE UPDATE ON muse_member_usage_record FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_member_security_event (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
account_user_id BIGINT NOT NULL,
|
||
event_type VARCHAR(50) NOT NULL,
|
||
severity VARCHAR(20) NOT NULL DEFAULT 'info',
|
||
device_info JSONB,
|
||
ip_address VARCHAR(64),
|
||
acknowledged BOOLEAN NOT NULL DEFAULT FALSE,
|
||
acknowledged_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
|
||
);
|
||
|
||
CREATE INDEX idx_muse_member_security_user ON muse_member_security_event(tenant_id, account_user_id, create_time);
|
||
CREATE TRIGGER trg_muse_member_security_updated_at BEFORE UPDATE ON muse_member_security_event FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||
|
||
CREATE TABLE muse_member_new_api_binding (
|
||
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
||
account_user_id BIGINT NOT NULL,
|
||
newapi_user_id VARCHAR(100) NOT NULL,
|
||
binding_status VARCHAR(30) NOT NULL DEFAULT 'active',
|
||
command_id VARCHAR(120) NOT NULL,
|
||
last_sync_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_member_newapi_user UNIQUE (tenant_id, account_user_id),
|
||
CONSTRAINT uk_muse_member_newapi_command UNIQUE (tenant_id, command_id)
|
||
);
|
||
|
||
CREATE INDEX idx_muse_member_newapi_remote ON muse_member_new_api_binding(tenant_id, newapi_user_id);
|
||
CREATE TRIGGER trg_muse_member_newapi_updated_at BEFORE UPDATE ON muse_member_new_api_binding FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|