-- 平台治理:租户 / 审批 / 审计(字段以 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);