112 lines
4.1 KiB
SQL
112 lines
4.1 KiB
SQL
-- 平台治理:租户 / 审批 / 审计(字段以 platform_store 实际写入为准)
|
||
CREATE TABLE IF NOT EXISTS tenants (
|
||
id TEXT PRIMARY KEY,
|
||
name TEXT NOT NULL,
|
||
code TEXT,
|
||
status TEXT DEFAULT 'active',
|
||
owner_user_id TEXT,
|
||
quota TEXT,
|
||
retention_policy_id TEXT,
|
||
create_time TEXT
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS approval_templates (
|
||
id TEXT PRIMARY KEY,
|
||
name TEXT NOT NULL,
|
||
steps TEXT,
|
||
create_time TEXT
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS approval_instances (
|
||
id TEXT PRIMARY KEY,
|
||
template_id TEXT,
|
||
resource_type TEXT,
|
||
resource_id TEXT,
|
||
applicant_id TEXT,
|
||
status TEXT DEFAULT 'pending',
|
||
current_step INTEGER DEFAULT 0,
|
||
create_time TEXT
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS approval_steps (
|
||
id TEXT PRIMARY KEY,
|
||
instance_id TEXT,
|
||
step_index INTEGER,
|
||
approver_id TEXT,
|
||
status TEXT DEFAULT 'pending',
|
||
comment TEXT,
|
||
time TEXT
|
||
);
|
||
|
||
CREATE TABLE IF NOT EXISTS audit_logs (
|
||
id TEXT PRIMARY KEY,
|
||
tenant_id TEXT,
|
||
project_id TEXT,
|
||
actor_id TEXT,
|
||
action TEXT,
|
||
target_type TEXT,
|
||
target_id TEXT,
|
||
detail TEXT,
|
||
client_ip TEXT,
|
||
time TEXT
|
||
);
|
||
|
||
-- 幂等升级 audit_logs 表:新增字段(已存在则跳过)
|
||
ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS trace_id TEXT;
|
||
ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS request_method TEXT;
|
||
ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS request_path TEXT;
|
||
ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS status_code INTEGER;
|
||
ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS duration_ms REAL;
|
||
ALTER TABLE audit_logs ADD COLUMN IF NOT EXISTS extra JSONB;
|
||
|
||
-- 索引(已存在则跳过)
|
||
CREATE INDEX IF NOT EXISTS idx_audit_trace ON audit_logs(trace_id);
|
||
CREATE INDEX IF NOT EXISTS idx_audit_actor_time ON audit_logs(actor_id, time);
|
||
CREATE INDEX IF NOT EXISTS idx_audit_target ON audit_logs(target_type, target_id);
|
||
|
||
CREATE TABLE IF NOT EXISTS retention_policies (
|
||
id TEXT PRIMARY KEY,
|
||
name TEXT NOT NULL,
|
||
scope TEXT,
|
||
rule TEXT,
|
||
status TEXT DEFAULT 'active',
|
||
create_time TEXT,
|
||
create_by TEXT,
|
||
updated_at TEXT
|
||
);
|
||
|
||
-- ===================== 操作日志表 =====================
|
||
-- 记录用户在每个业务模块的详细操作(成功/失败、报错信息等)
|
||
CREATE TABLE IF NOT EXISTS operation_logs (
|
||
id TEXT PRIMARY KEY,
|
||
user_id TEXT, -- 操作用户 ID
|
||
username TEXT, -- 操作用户名(冗余,便于查询)
|
||
module TEXT, -- 业务模块:fine-tune/model-eval/model-inference/dataset/data-process/data-convert/model-manage
|
||
action TEXT, -- 具体动作:create/start/stop/delete/upload/convert 等
|
||
target_type TEXT, -- 资源类型
|
||
target_id TEXT, -- 资源 ID
|
||
target_name TEXT, -- 资源名称(便于阅读)
|
||
status TEXT NOT NULL, -- success / failure
|
||
error_message TEXT, -- 失败时的报错信息
|
||
detail TEXT, -- 操作详情 JSON(参数摘要)
|
||
client_ip TEXT, -- 客户端 IP
|
||
request_method TEXT, -- HTTP 方法
|
||
request_path TEXT, -- 请求路径
|
||
trace_id TEXT, -- 链路追踪 ID
|
||
duration_ms REAL, -- 耗时(ms)
|
||
create_time TEXT -- 操作时间
|
||
);
|
||
|
||
-- 幂等升级 operation_logs 表:新增字段(已存在则跳过)
|
||
ALTER TABLE operation_logs ADD COLUMN IF NOT EXISTS error_type TEXT; -- 异常类型:RuntimeError / ValueError / ConnectionError
|
||
ALTER TABLE operation_logs ADD COLUMN IF NOT EXISTS error_traceback TEXT; -- 完整异常堆栈
|
||
ALTER TABLE operation_logs ADD COLUMN IF NOT EXISTS func_name TEXT; -- 出错的函数名
|
||
|
||
-- 索引
|
||
CREATE INDEX IF NOT EXISTS idx_op_user_time ON operation_logs(user_id, create_time DESC);
|
||
CREATE INDEX IF NOT EXISTS idx_op_module_time ON operation_logs(module, create_time DESC);
|
||
CREATE INDEX IF NOT EXISTS idx_op_status ON operation_logs(status, create_time DESC);
|
||
CREATE INDEX IF NOT EXISTS idx_op_action ON operation_logs(action);
|
||
CREATE INDEX IF NOT EXISTS idx_op_create_time ON operation_logs(create_time DESC);
|
||
CREATE INDEX IF NOT EXISTS idx_op_error_type ON operation_logs(error_type);
|