Files
YG_FT/backend/app/db/sql/002_governance.sql
wangjiming 945b4ace86 update
2026-07-30 14:38:56 +08:00

130 lines
4.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- A. 平台基础与企业治理:权限 / 角色 / 租户 / 审批 / 审计 / 留存
-- 沿用 001 的约定:时间戳存 TEXT布尔用 INTEGER列表用 TEXT(JSON)
CREATE TABLE IF NOT EXISTS permissions (
code TEXT PRIMARY KEY,
name TEXT NOT NULL,
group_name TEXT NOT NULL,
create_time TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS roles (
id TEXT PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
display_name TEXT NOT NULL,
permissions TEXT NOT NULL,
create_time TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS role_permissions (
role_id TEXT NOT NULL,
permission TEXT NOT NULL,
PRIMARY KEY (role_id, permission)
);
CREATE TABLE IF NOT EXISTS user_permission_overrides (
user_id TEXT NOT NULL,
permission TEXT NOT NULL,
granted INTEGER NOT NULL,
PRIMARY KEY (user_id, permission)
);
CREATE TABLE IF NOT EXISTS tenants (
id TEXT PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
code TEXT NOT NULL UNIQUE,
status TEXT NOT NULL,
owner_user_id TEXT,
quota TEXT,
retention_policy_id TEXT,
create_time TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS tenant_users (
tenant_id TEXT NOT NULL,
user_id TEXT NOT NULL,
role TEXT NOT NULL,
PRIMARY KEY (tenant_id, user_id)
);
CREATE TABLE IF NOT EXISTS resource_acl (
resource_type TEXT NOT NULL,
resource_id TEXT NOT NULL,
principal_type TEXT NOT NULL,
principal_id TEXT NOT NULL,
permission TEXT NOT NULL,
granted INTEGER NOT NULL,
PRIMARY KEY (resource_type, resource_id, principal_type, principal_id, permission)
);
CREATE TABLE IF NOT EXISTS approval_templates (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
steps TEXT NOT NULL,
create_time TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS approval_instances (
id TEXT PRIMARY KEY,
template_id TEXT,
resource_type TEXT NOT NULL,
resource_id TEXT NOT NULL,
applicant_id TEXT NOT NULL,
status TEXT NOT NULL,
current_step INTEGER NOT NULL DEFAULT 0,
create_time TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS approval_steps (
instance_id TEXT NOT NULL,
step_index INTEGER NOT NULL,
approver_id TEXT,
status TEXT NOT NULL,
comment TEXT,
time TEXT,
PRIMARY KEY (instance_id, step_index)
);
CREATE TABLE IF NOT EXISTS audit_logs (
id TEXT PRIMARY KEY,
tenant_id TEXT,
project_id TEXT,
actor_id TEXT,
action TEXT NOT NULL,
target_type TEXT,
target_id TEXT,
detail TEXT,
client_ip TEXT,
time TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS retention_policies (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
resource_type TEXT NOT NULL,
retention_days INTEGER NOT NULL,
create_time TEXT NOT NULL
);
-- ===================== 种子数据 =====================
INSERT INTO permissions (code, name, group_name, create_time) VALUES
('dashboard', '仪表盘', '概览', '2026-01-01T00:00:00Z'),
('fine-tune', '模型微调', '模型', '2026-01-01T00:00:00Z'),
('model-eval', '模型评估', '模型', '2026-01-01T00:00:00Z'),
('model-inference', '模型推理', '模型', '2026-01-01T00:00:00Z'),
('model-manage', '模型管理', '模型', '2026-01-01T00:00:00Z'),
('dataset', '数据集', '数据', '2026-01-01T00:00:00Z'),
('data-process', '数据处理', '数据', '2026-01-01T00:00:00Z'),
('data-convert', '数据转换', '数据', '2026-01-01T00:00:00Z'),
('compute', '算力管理', '算力', '2026-01-01T00:00:00Z'),
('hardware', '硬件监控', '算力', '2026-01-01T00:00:00Z'),
('logs', '日志查看', '运维', '2026-01-01T00:00:00Z'),
('user-settings', '用户设置', '运维', '2026-01-01T00:00:00Z')
ON CONFLICT (code) DO NOTHING;
INSERT INTO roles (id, name, display_name, permissions, create_time) VALUES
('role_admin', 'admin', '管理员', '["dashboard","fine-tune","model-eval","model-inference","model-manage","dataset","data-process","data-convert","compute","hardware","logs","user-settings"]', '2026-01-01T00:00:00Z'),
('role_operator','operator','操作员', '["dashboard","fine-tune","model-eval","model-inference","model-manage","dataset","data-process","data-convert","compute","hardware","logs"]', '2026-01-01T00:00:00Z'),
('role_viewer', 'viewer', '访客', '["dashboard"]', '2026-01-01T00:00:00Z')
ON CONFLICT (name) DO NOTHING;