nex_basse/backend/docs/db_schema.md

324 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 数据库结构文档 (MySQL 5.7/8.0 兼容)
- 字符集:`utf8mb4`
- 排序规则:`utf8mb4_unicode_ci`
- 说明:本文件用于持续维护核心表结构与描述(每次变更请同步更新)。
## 1. 用户与角色
### 1.1 `sys_user` 用户表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| user_id | INT | PK, AUTO_INCREMENT | 用户ID |
| username | VARCHAR(50) | UNIQUE, NOT NULL | 登录名 |
| display_name | VARCHAR(50) | NOT NULL | 显示名 |
| email | VARCHAR(100) | UNIQUE | 邮箱 |
| phone | VARCHAR(30) | UNIQUE | 手机 |
| password_hash | VARCHAR(255) | NOT NULL | 密码哈希 |
| avatar | VARCHAR(255) | | 头像路径 |
| status | TINYINT(1) | NOT NULL | 状态1 启用 / 0 禁用 |
| is_deleted | TINYINT(1) | NOT NULL | 是否软删除 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
### 1.2 `sys_role` 角色表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| role_id | INT | PK, AUTO_INCREMENT | 角色ID |
| role_code | VARCHAR(50) | UNIQUE, NOT NULL | 角色编码 |
| role_name | VARCHAR(50) | NOT NULL | 角色名称 |
| status | TINYINT(1) | NOT NULL | 状态1 启用 / 0 禁用 |
| remark | TEXT | | 备注 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
### 1.3 `sys_user_role` 用户-角色关联表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| id | INT | PK, AUTO_INCREMENT | 关联ID |
| user_id | INT | INDEX, NOT NULL | 用户ID |
| role_id | INT | INDEX, NOT NULL | 角色ID |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
| | | UNIQUE(user_id, role_id) | 唯一约束 |
## 2. 权限
### 2.1 `sys_permission` 权限表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| perm_id | INT | PK, AUTO_INCREMENT | 权限ID |
| parent_id | INT | INDEX | 父级权限ID |
| name | VARCHAR(100) | NOT NULL | 权限名称 |
| code | VARCHAR(100) | UNIQUE, NOT NULL | 权限编码 |
| perm_type | VARCHAR(20) | NOT NULL | menu/button |
| level | INT | NOT NULL | 1/2/3 级 |
| path | VARCHAR(255) | | 前端路由 |
| icon | VARCHAR(100) | | 图标 |
| sort_order | INT | NOT NULL | 排序 |
| is_visible | TINYINT(1) | NOT NULL | 是否展示 |
| status | TINYINT(1) | NOT NULL | 1/0 |
| description | TEXT | | 描述 |
| meta | JSON | | 扩展属性 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
### 2.2 `sys_role_permission` 角色-权限关联表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| id | INT | PK, AUTO_INCREMENT | 关联ID |
| role_id | INT | INDEX, NOT NULL | 角色ID |
| perm_id | INT | INDEX, NOT NULL | 权限ID |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
| | | UNIQUE(role_id, perm_id) | 唯一约束 |
## 3. 码表
### 3.1 `sys_dict_type` 码表类型
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| dict_type_id | INT | PK, AUTO_INCREMENT | 类型ID |
| type_code | VARCHAR(50) | UNIQUE, NOT NULL | 类型编码 |
| type_name | VARCHAR(50) | NOT NULL | 类型名称 |
| status | TINYINT(1) | NOT NULL | 1/0 |
| remark | TEXT | | 备注 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
### 3.2 `sys_dict_item` 码表项
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| dict_item_id | INT | PK, AUTO_INCREMENT | 明细ID |
| type_code | VARCHAR(50) | INDEX, NOT NULL | 类型编码 |
| item_label | VARCHAR(100) | NOT NULL | 展示值 |
| item_value | VARCHAR(100) | NOT NULL | 存储值 |
| sort_order | INT | NOT NULL | 排序 |
| status | TINYINT(1) | NOT NULL | 1/0 |
| remark | TEXT | | 备注 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
| | | UNIQUE(type_code, item_value) | 唯一约束 |
## 4. 系统参数
### 4.1 `sys_param` 系统参数表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| param_id | INT | PK, AUTO_INCREMENT | 参数ID |
| param_key | VARCHAR(100) | UNIQUE, NOT NULL | 参数键 |
| param_value | TEXT | NOT NULL | 参数值 |
| param_type | VARCHAR(20) | NOT NULL | string/int/bool/json |
| status | TINYINT(1) | NOT NULL | 1/0 |
| is_system | TINYINT(1) | NOT NULL | 是否系统级 |
| description | TEXT | | 描述 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
## 5. 日志
### 5.1 `sys_log` 操作日志表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| id | BIGINT | PK, AUTO_INCREMENT | 日志ID |
| user_id | INT | INDEX | 操作用户ID |
| username | VARCHAR(50) | | 用户名 |
| operation_type | VARCHAR(50) | NOT NULL | 操作类型 |
| resource_type | VARCHAR(50) | NOT NULL | 资源类型 |
| resource_id | BIGINT | INDEX | 资源ID |
| detail | TEXT | | 操作详情(JSON) |
| ip_address | VARCHAR(50) | | IP地址 |
| user_agent | VARCHAR(500) | | 用户代理 |
| status | TINYINT | DEFAULT 1 | 状态: 1成功/0失败 |
| error_message | TEXT | | 错误信息 |
| created_at | DATETIME | NOT NULL | 操作时间 |
## 6. 业务 - 提示词管理
### 6.1 `biz_prompt_template` 提示词模板表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| id | INT | PK, AUTO_INCREMENT | 模板ID |
| name | VARCHAR(100) | NOT NULL | 模板名称 |
| category | VARCHAR(50) | NOT NULL | 分类 |
| content | TEXT | NOT NULL | 提示词内容 |
| description | VARCHAR(255) | | 描述 |
| user_id | INT | INDEX | 创建者ID (系统级为NULL) |
| is_system | TINYINT(1) | NOT NULL | 是否系统内置 |
| status | TINYINT(1) | NOT NULL | 全局状态1启用 / 0禁用 |
| sort_order | INT | NOT NULL | 默认排序 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
### 6.2 `biz_user_prompt_config` 用户提示词配置表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| id | INT | PK, AUTO_INCREMENT | 配置ID |
| user_id | INT | INDEX, NOT NULL | 用户ID |
| template_id | INT | INDEX, NOT NULL | 模板ID |
| is_active | TINYINT(1) | NOT NULL | 用户是否启用 |
| user_sort_order | INT | NOT NULL | 用户自定义排序 |
| updated_at | DATETIME | NOT NULL | 修改时间 |
| | | UNIQUE(user_id, template_id) | 唯一约束 |
## 7. 业务 - 会议管理
### 7.1 `biz_meeting` 会议主表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| meeting_id | INT | PK, AUTO_INCREMENT | 会议ID |
| user_id | INT | | 创建者ID |
| title | VARCHAR(255) | NOT NULL | 会议标题 |
| tags | VARCHAR(255) | | 标签(逗号分隔) |
| meeting_time | TIMESTAMP | | 会议时间 |
| access_password| VARCHAR(10) | | 访问密码 |
| status | VARCHAR(20) | DEFAULT 'draft' | 状态: draft, transcribing, summarizing, completed |
| summary | TEXT | | 最终总结内容 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 更新时间 |
### 7.2 `biz_meeting_attendees` 会议参会人表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| attendee_id | INT | PK, AUTO_INCREMENT | 参会ID |
| meeting_id | INT | INDEX | 会议ID |
| user_id | INT | | 系统用户ID |
### 7.3 `biz_meeting_audio` 会议音频表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| audio_id | INT | PK, AUTO_INCREMENT | 音频ID |
| meeting_id | INT | | 会议ID |
| file_path | VARCHAR(512) | NOT NULL | 文件存储路径 |
| file_name | VARCHAR(200) | | 原始文件名 |
| file_size | DECIMAL(10,0) | | 文件大小(字节) |
| duration | INT | DEFAULT 0 | 音频时长(秒) |
| processing_status| VARCHAR(20) | DEFAULT 'uploaded' | 处理状态 |
| upload_time | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 上传时间 |
| error_message | TEXT | | 错误信息 |
### 7.4 `biz_transcript_task` 转译任务表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| task_id | VARCHAR(255) | PK | 任务ID |
| meeting_id | INT | INDEX, NOT NULL | 会议ID |
| model_id | INT | | 模型配置ID (关联 biz_ai_model) |
| language | VARCHAR(10) | DEFAULT 'auto' | 识别语言 |
| status | ENUM | INDEX, DEFAULT 'pending' | pending/processing/completed/failed |
| progress | INT | DEFAULT 0 | 处理进度(0-100) |
| completed_at | TIMESTAMP | | 完成时间 |
| error_message | TEXT | | 错误信息 |
| created_at | TIMESTAMP | INDEX, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
### 7.5 `biz_transcript_segment` 转译片段表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| segment_id | INT | PK, AUTO_INCREMENT | 片段ID |
| meeting_id | INT | | 会议ID |
| audio_id | INT | | 音频ID |
| speaker_id | INT | | 发言人ID |
| speaker_tag | VARCHAR(50) | | 发言人标签(如: A, B) |
| start_time_ms | INT | NOT NULL | 开始时间(毫秒) |
| end_time_ms | INT | NOT NULL | 结束时间(毫秒) |
| text_content | TEXT | NOT NULL | 文本内容 |
### 7.6 `biz_summarize_task` 总结任务表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| task_id | VARCHAR(100) | PK | 任务ID |
| meeting_id | INT | INDEX, NOT NULL | 会议ID |
| prompt_id | INT | | 使用的提示词模板ID |
| model_id | INT | | 模型配置ID (关联 biz_ai_model) |
| user_prompt | TEXT | | 任务执行时的最终Prompt |
| status | VARCHAR(50) | INDEX, DEFAULT 'pending' | 任务状态 |
| progress | INT | DEFAULT 0 | 进度 |
| result | TEXT | | 总结结果 |
| error_message | TEXT | | 错误信息 |
| created_at | TIMESTAMP | INDEX, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| completed_at | TIMESTAMP | | 完成时间 |
### 7.7 `biz_ai_model` AI 模型配置表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| model_id | INT | PK, AUTO_INCREMENT | 模型配置ID |
| model_type | VARCHAR(20) | NOT NULL | asr/llm |
| provider | VARCHAR(50) | NOT NULL | 提供商 (Qwen, OpenAI等) |
| model_name | VARCHAR(100) | NOT NULL | 模型标识 |
| api_key | VARCHAR(255) | | API密钥 |
| base_url | VARCHAR(255) | | 基础URL |
| api_path | VARCHAR(100) | | 接口路径 |
| config | JSON | | 差异化参数(temp, top_p等) |
| is_default | TINYINT(1) | NOT NULL | 是否默认 |
| status | TINYINT(1) | NOT NULL | 启用状态 |
| created_at | TIMESTAMP | NOT NULL | 创建时间 |
| updated_at | TIMESTAMP | NOT NULL | 更新时间 |
## 7. 业务 - 会议管理
### 7.1 `biz_meeting` 会议主表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| meeting_id | INT | PK, AUTO_INCREMENT | 会议ID |
| user_id | INT | | 创建者ID |
| title | VARCHAR(255) | NOT NULL | 会议标题 |
| tags | VARCHAR(255) | | 标签(逗号分隔) |
| meeting_time | TIMESTAMP | | 会议时间 |
| access_password| VARCHAR(10) | | 访问密码 |
| summary | TEXT | | 最终总结内容 |
| created_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 更新时间 |
### 7.2 `biz_meeting_attendees` 会议参会人表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| attendee_id | INT | PK, AUTO_INCREMENT | 参会ID |
| meeting_id | INT | INDEX | 会议ID |
| user_id | INT | | 系统用户ID |
### 7.3 `biz_meeting_audio` 会议音频表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| audio_id | INT | PK, AUTO_INCREMENT | 音频ID |
| meeting_id | INT | | 会议ID |
| file_path | VARCHAR(512) | NOT NULL | 文件存储路径 |
| file_name | VARCHAR(200) | | 原始文件名 |
| file_size | DECIMAL(10,0) | | 文件大小(字节) |
| processing_status| VARCHAR(20) | DEFAULT 'uploaded' | 处理状态 |
| upload_time | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 上传时间 |
| error_message | TEXT | | 错误信息 |
### 7.4 `biz_transcript_task` 转译任务表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| task_id | VARCHAR(255) | PK | 任务ID |
| meeting_id | INT | INDEX, NOT NULL | 会议ID |
| status | ENUM | INDEX, DEFAULT 'pending' | pending/processing/completed/failed |
| progress | INT | DEFAULT 0 | 处理进度(0-100) |
| completed_at | TIMESTAMP | | 完成时间 |
| error_message | TEXT | | 错误信息 |
| created_at | TIMESTAMP | INDEX, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
### 7.5 `biz_transcript_segment` 转译片段表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| segment_id | INT | PK, AUTO_INCREMENT | 片段ID |
| meeting_id | INT | | 会议ID |
| speaker_id | INT | | 发言人ID |
| speaker_tag | VARCHAR(50) | | 发言人标签(如: A, B) |
| start_time_ms | INT | NOT NULL | 开始时间(毫秒) |
| end_time_ms | INT | NOT NULL | 结束时间(毫秒) |
| text_content | TEXT | NOT NULL | 文本内容 |
### 7.6 `biz_summarize_task` 总结任务表
| 字段 | 类型 | 约束 | 说明 |
| --- | --- | --- | --- |
| task_id | VARCHAR(100) | PK | 任务ID |
| meeting_id | INT | INDEX, NOT NULL | 会议ID |
| prompt_id | INT | | 使用的提示词模板ID |
| user_prompt | TEXT | | 任务执行时的最终Prompt |
| status | VARCHAR(50) | INDEX, DEFAULT 'pending' | 任务状态 |
| progress | INT | DEFAULT 0 | 进度 |
| result | TEXT | | 总结结果 |
| error_message | TEXT | | 错误信息 |
| created_at | TIMESTAMP | INDEX, DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| completed_at | TIMESTAMP | | 完成时间 |