数据库结构文档(PostgreSQL)
本文档根据 backend/design/db_schema_pgsql.sql 生成,描述当前核心表结构、字段、约束与索引。
0. 租户与组织
0.1 sys_tenant(租户表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
租户ID |
| tenant_code |
VARCHAR(64) |
NOT NULL, UNIQUE |
租户编码 |
| tenant_name |
VARCHAR(128) |
NOT NULL |
租户名称 |
| status |
SMALLINT |
NOT NULL, DEFAULT 1 |
状态 |
| expire_time |
TIMESTAMP(6) |
|
过期时间 |
| contact_name |
VARCHAR(64) |
|
联系人 |
| contact_phone |
VARCHAR(32) |
|
联系电话 |
| remark |
VARCHAR(255) |
|
备注 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT CURRENT_TIMESTAMP |
更新时间 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除标记 |
索引:
uk_tenant_code:UNIQUE (tenant_code) WHERE is_deleted = FALSE
0.2 sys_org(组织架构表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
组织ID |
| tenant_id |
BIGINT |
NOT NULL |
租户ID |
| parent_id |
BIGINT |
|
父级组织ID |
| org_name |
VARCHAR(128) |
NOT NULL |
组织名称 |
| org_code |
VARCHAR(64) |
|
组织编码 |
| org_path |
VARCHAR(512) |
|
组织路径 |
| sort_order |
INTEGER |
DEFAULT 0 |
排序 |
| status |
SMALLINT |
DEFAULT 1 |
状态 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT CURRENT_TIMESTAMP |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT CURRENT_TIMESTAMP |
更新时间 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除标记 |
外键:
fk_org_parent:parent_id -> sys_org(id)
fk_org_tenant:tenant_id -> sys_tenant(id)
索引:
idx_org_tenant:(tenant_id)
1. 用户与角色
1.1 sys_user(用户表)
| 字段 |
类型 |
约束 |
说明 |
| user_id |
BIGSERIAL |
PK |
用户ID |
| username |
VARCHAR(50) |
NOT NULL, UNIQUE |
登录名 |
| display_name |
VARCHAR(50) |
NOT NULL |
显示名 |
| email |
VARCHAR(100) |
|
邮箱 |
| phone |
VARCHAR(30) |
UNIQUE |
手机号 |
| password_hash |
VARCHAR(255) |
NOT NULL |
密码哈希 |
| status |
SMALLINT |
NOT NULL, DEFAULT 1 |
状态 |
| pwd_reset_required |
SMALLINT |
DEFAULT 1 |
首次登录是否需改密 |
| is_deleted |
SMALLINT |
NOT NULL, DEFAULT 0 |
逻辑删除标记 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
| is_platform_admin |
BOOLEAN |
DEFAULT false |
是否平台管理员 |
索引:
uk_user_username:UNIQUE (username) WHERE is_deleted = FALSE
1.2 sys_role(角色表)
| 字段 |
类型 |
约束 |
说明 |
| role_id |
BIGSERIAL |
PK |
角色ID |
| tenant_id |
BIGINT |
|
租户ID |
| role_code |
VARCHAR(50) |
NOT NULL, UNIQUE |
角色编码 |
| role_name |
VARCHAR(50) |
NOT NULL |
角色名称 |
| status |
SMALLINT |
NOT NULL, DEFAULT 1 |
状态 |
| remark |
TEXT |
|
备注 |
| is_deleted |
SMALLINT |
NOT NULL, DEFAULT 0 |
逻辑删除标记 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
索引:
idx_sys_role_tenant:(tenant_id)
uk_role_code:UNIQUE (tenant_id, role_code) WHERE is_deleted = FALSE
1.3 sys_user_role(用户-角色关联表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
关联ID |
| tenant_id |
BIGINT |
|
租户ID |
| user_id |
BIGINT |
NOT NULL |
用户ID |
| role_id |
BIGINT |
NOT NULL |
角色ID |
| is_deleted |
SMALLINT |
NOT NULL, DEFAULT 0 |
逻辑删除标记 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
唯一约束:
UNIQUE (user_id, role_id)
1.4 sys_tenant_user(租户成员关联表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
关联ID |
| user_id |
BIGINT |
NOT NULL |
用户ID |
| tenant_id |
BIGINT |
NOT NULL |
租户ID |
| org_id |
BIGINT |
|
组织ID |
| status |
SMALLINT |
DEFAULT 1 |
状态 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除标记 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
索引:
uk_tenant_user:UNIQUE (user_id, tenant_id) WHERE is_deleted = 0
2. 权限/字典/参数(全局共享)
2.1 sys_permission(权限表)
| 字段 |
类型 |
约束 |
说明 |
| perm_id |
BIGSERIAL |
PK |
权限ID |
| parent_id |
BIGINT |
|
父级权限ID |
| name |
VARCHAR(100) |
NOT NULL |
权限名称 |
| code |
VARCHAR(100) |
NOT NULL, UNIQUE |
权限编码 |
| perm_type |
VARCHAR(20) |
NOT NULL |
权限类型 |
| level |
INTEGER |
NOT NULL |
层级 |
| path |
VARCHAR(255) |
|
路径 |
| component |
VARCHAR(255) |
|
组件 |
| icon |
VARCHAR(100) |
|
图标 |
| sort_order |
INTEGER |
NOT NULL, DEFAULT 0 |
排序 |
| is_visible |
SMALLINT |
NOT NULL, DEFAULT 1 |
是否可见 |
| status |
SMALLINT |
NOT NULL, DEFAULT 1 |
状态 |
| description |
TEXT |
|
描述 |
| meta |
JSONB |
|
扩展信息 |
| is_deleted |
SMALLINT |
NOT NULL, DEFAULT 0 |
逻辑删除标记 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
2.2 sys_dict_type(字典类型表)
| 字段 |
类型 |
约束 |
说明 |
| dict_type_id |
BIGSERIAL |
PK |
类型ID |
| type_code |
VARCHAR(50) |
NOT NULL, UNIQUE |
类型编码 |
| type_name |
VARCHAR(50) |
NOT NULL |
类型名称 |
| status |
SMALLINT |
DEFAULT 1 |
状态 |
| remark |
TEXT |
|
备注 |
| created_at |
TIMESTAMP |
NOT NULL, DEFAULT NOW() |
创建时间 |
| updated_at |
TIMESTAMP |
NOT NULL, DEFAULT NOW() |
更新时间 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除标记 |
初始化数据:
sys_common_status: 通用状态 (启用/禁用)
sys_permission_type: 权限类型 (目录/菜单/按钮)
sys_common_visibility: 可见性 (显示/隐藏)
sys_permission_level: 权限层级 (1, 2, 3)
sys_log_type: 日志类型 (LOGIN/OPERATION)
sys_param_type: 参数类型 (String/Number/Boolean/JSON)
sys_log_status: 操作状态 (成功/失败)
2.3 sys_dict_item(字典项表)
| 字段 |
类型 |
约束 |
说明 |
| dict_item_id |
BIGSERIAL |
PK |
字典项ID |
| type_code |
VARCHAR(50) |
NOT NULL |
字典类型编码 |
| item_label |
VARCHAR(100) |
NOT NULL |
展示文本 |
| item_value |
VARCHAR(100) |
NOT NULL |
存储值 |
| sort_order |
INT |
DEFAULT 0 |
排序 |
| status |
SMALLINT |
DEFAULT 1 |
状态 |
| created_at |
TIMESTAMP |
NOT NULL, DEFAULT NOW() |
创建时间 |
| updated_at |
TIMESTAMP |
NOT NULL, DEFAULT NOW() |
更新时间 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除标记 |
索引:
idx_dict_item_type:(type_code)
uk_dict_item_value:UNIQUE (type_code, item_value)
2.4 sys_param(系统参数表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
参数ID |
| param_key |
VARCHAR(100) |
NOT NULL, UNIQUE |
参数键 |
| param_value |
TEXT |
NOT NULL |
参数值 |
| param_type |
VARCHAR(20) |
NOT NULL |
参数类型 |
| is_system |
SMALLINT |
DEFAULT 0 |
是否系统内置 |
| status |
SMALLINT |
DEFAULT 1 |
状态 |
| description |
TEXT |
|
描述 |
| created_at |
TIMESTAMP |
NOT NULL, DEFAULT NOW() |
创建时间 |
3. 日志(租户隔离)
3.1 sys_log(系统日志表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
日志ID |
| tenant_id |
BIGINT |
NOT NULL, DEFAULT 0 |
租户ID |
| user_id |
BIGINT |
|
用户ID |
| username |
VARCHAR(50) |
|
用户名 |
| log_type |
VARCHAR(20) |
|
日志类型(如 LOGIN、OPERATION) |
| operation |
VARCHAR(100) |
NOT NULL |
操作描述 |
| method |
VARCHAR(200) |
|
方法 |
| params |
TEXT |
|
请求参数 |
| status |
SMALLINT |
DEFAULT 1 |
状态 |
| ip |
VARCHAR(50) |
|
IP |
| duration |
BIGINT |
|
耗时(ms) |
| created_at |
TIMESTAMP |
NOT NULL, DEFAULT NOW() |
创建时间 |
索引:
idx_log_tenant_type:(tenant_id, log_type, created_at)
4. 平台配置
4.1 sys_platform_config(平台管理表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGINT |
PK |
固定为 1 |
| project_name |
VARCHAR(128) |
NOT NULL |
项目名称 |
| logo_url |
VARCHAR(512) |
|
Logo URL |
| icon_url |
VARCHAR(512) |
|
Icon URL |
| login_bg_url |
VARCHAR(512) |
|
登录页背景 |
| icp_info |
VARCHAR(128) |
|
备案信息 |
| copyright_info |
VARCHAR(255) |
|
版权信息 |
| system_description |
TEXT |
|
系统描述 |
| created_at |
TIMESTAMP |
NOT NULL |
创建时间 |
| updated_at |
TIMESTAMP |
NOT NULL |
更新时间 |
5. 业务模块
5.1 biz_speakers(声纹发言人表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
主键ID |
| tenant_id |
BIGINT |
NOT NULL |
租户ID |
| user_id |
BIGINT |
|
关联系统用户ID |
| name |
VARCHAR(100) |
NOT NULL |
发言人姓名 |
| voice_path |
VARCHAR(512) |
|
原始文件路径 |
| voice_ext |
VARCHAR(10) |
|
文件后缀 |
| voice_size |
BIGINT |
|
文件大小 |
| status |
SMALLINT |
DEFAULT 1 |
状态 (1:已保存, 2:注册中, 3:已注册) |
| embedding |
VECTOR |
|
声纹特征向量 |
| remark |
TEXT |
|
备注 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除 |
索引:
idx_speaker_tenant: (tenant_id)
idx_speaker_user: (user_id) WHERE is_deleted = 0
5.2 biz_hot_words(热词管理表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
主键ID |
| tenant_id |
BIGINT |
NOT NULL |
租户ID |
| word |
VARCHAR(100) |
NOT NULL |
热词原文 |
| pinyin_list |
JSONB |
|
拼音数组 |
| match_strategy |
SMALLINT |
DEFAULT 1 |
匹配策略 (1:精确, 2:模糊) |
| category |
VARCHAR(50) |
|
类别 (人名、术语等) |
| weight |
INTEGER |
DEFAULT 10 |
权重 (1-100) |
| status |
SMALLINT |
DEFAULT 1 |
状态 (1:启用, 0:禁用) |
| is_synced |
SMALLINT |
DEFAULT 0 |
已同步第三方标记 |
| remark |
TEXT |
|
备注 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除 |
索引:
idx_hotword_tenant: (tenant_id)
idx_hotword_word: (word) WHERE is_deleted = 0
5.3 biz_prompt_templates(提示词模板表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
主键ID |
| tenant_id |
BIGINT |
NOT NULL |
租户ID |
| template_name |
VARCHAR(100) |
NOT NULL |
模板名称 |
| category |
VARCHAR(20) |
|
分类 (字典: biz_prompt_category) |
| is_system |
SMALLINT |
DEFAULT 0 |
是否预置 (1:是, 0:否) |
| creator_id |
BIGINT |
|
创建人ID |
| tags |
JSONB |
|
标签数组 |
| usage_count |
INTEGER |
DEFAULT 0 |
使用次数 |
| prompt_content |
TEXT |
NOT NULL |
提示词内容 |
| status |
SMALLINT |
DEFAULT 1 |
状态 (1:启用, 0:禁用) |
| remark |
VARCHAR(255) |
|
备注 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除 |
索引:
idx_prompt_tenant: (tenant_id)
idx_prompt_system: (is_system) WHERE is_deleted = 0
5.4 biz_ai_models(AI 模型管理表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
主键ID |
| tenant_id |
BIGINT |
NOT NULL |
租户ID |
| model_type |
VARCHAR(20) |
NOT NULL |
ASR (语音) 或 LLM (总结) |
| model_name |
VARCHAR(100) |
NOT NULL |
自定义名称 |
| provider |
VARCHAR(50) |
|
提供商 (Aliyun, OpenAI等) |
| base_url |
VARCHAR(255) |
|
基础请求地址 |
| model_code |
VARCHAR(100) |
|
模型代码 |
| ws_url |
VARCHAR(255) |
|
WebSocket 地址 (ASR) |
| temperature |
DECIMAL |
DEFAULT 0.7 |
随机性 (LLM) |
| media_config |
JSONB |
|
采样率、协议等 |
| is_default |
SMALLINT |
DEFAULT 0 |
默认模型标记 |
| status |
SMALLINT |
DEFAULT 1 |
启用状态 |
| created_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
创建时间 |
| updated_at |
TIMESTAMP(6) |
NOT NULL, DEFAULT now() |
更新时间 |
| is_deleted |
SMALLINT |
DEFAULT 0 |
逻辑删除 |
索引:
idx_aimodel_tenant: (tenant_id)
idx_aimodel_type: (model_type, is_default) WHERE is_deleted = 0
5.5 biz_meetings(会议主表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
主键ID |
| tenant_id |
BIGINT |
NOT NULL |
租户ID |
| title |
VARCHAR(200) |
NOT NULL |
会议标题 |
| asr_model_id |
BIGINT |
|
使用的 ASR 模型 |
| summary_model_id |
BIGINT |
|
使用的 LLM 模型 |
| prompt_content |
TEXT |
|
[快照] 发起任务时的提示词模板内容 |
| summary_content |
TEXT |
|
[固化] 最终生成的 Markdown 总结内容 |
| status |
SMALLINT |
DEFAULT 0 |
0:待处理, 1:识别中, 2:总结中, 3:已完成, 4:失败 |
5.6 biz_meeting_transcripts(转录明细表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
主键ID |
| meeting_id |
BIGINT |
NOT NULL |
关联会议ID |
| speaker_label |
VARCHAR(50) |
|
发言人标签 |
| content |
TEXT |
|
转录文字 |
| start_time |
INTEGER |
|
开始时间 (ms) |
5.7 biz_ai_tasks(AI 任务流水表)
| 字段 |
类型 |
约束 |
说明 |
| id |
BIGSERIAL |
PK |
主键ID |
| task_type |
VARCHAR(20) |
|
ASR / SUMMARY |
| request_data |
JSONB |
|
请求原始数据 |
| response_data |
JSONB |
|
响应原始数据 |
| status |
SMALLINT |
|
0:排队, 1:处理中, 2:成功, 3:失败 |