436 lines
17 KiB
Markdown
436 lines
17 KiB
Markdown
# 数据库设计文档
|
||
|
||
本数据库采用 `MySQL 5.7+`。
|
||
|
||
## 1. 表结构概览
|
||
|
||
- **users**: 用户信息表
|
||
- **roles**: 角色信息表
|
||
- **meetings**: 会议主表
|
||
- **attendees**: 参会人员关联表
|
||
- **tags**: 标签表
|
||
- **audio_files**: 会议音频文件表
|
||
- **attachments**: 会议附件表 (未来扩展)
|
||
- **transcript_tasks**: 语音转录任务表
|
||
- **transcript_segments**: 语音转录内容分段表
|
||
- **meeting_summaries**: AI 生成的会议纪要表(由llm_tasks替代)
|
||
- **llm_tasks**: AI总结任务表
|
||
- **prompts**: 提示词仓库表
|
||
- **knowledge_bases**: 知识库主表
|
||
- **knowledge_bases_task**: 知识库生成任务表
|
||
- **dict_data**: 字典/码表数据表
|
||
- **client_downloads**: 客户端下载管理表
|
||
- **terminals**: 专用终端设备表
|
||
|
||
---
|
||
|
||
## 2. 表结构详情
|
||
|
||
### 2.1. `users` - 用户表
|
||
|
||
存储用户信息和登录凭证。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `user_id` | INT | PRIMARY KEY, AUTO_INCREMENT | 用户唯一ID |
|
||
| `role_id` | INT | NOT NULL, FK | 角色ID (关联 `roles` 表) |
|
||
| `username` | VARCHAR(50) | UNIQUE, NOT NULL | 登录用户名 |
|
||
| `caption` | VARCHAR(50) | NOT NULL | 用户显示昵称 |
|
||
| `email` | VARCHAR(100) | UNIQUE, NOT NULL | 用户邮箱 |
|
||
| `password_hash` | VARCHAR(255) | NOT NULL | 哈希后的密码 |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 账户创建时间 |
|
||
|
||
### 2.1.1 'user_voiceprint' - 用户声纹表
|
||
|
||
| 字段名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| vp_id | INT | 主键,自增ID |
|
||
| user_id | INT | 用户ID,唯一索引 |
|
||
| file_path | VARCHAR(255) | 音频文件相对路径 |
|
||
| file_size | INT | 文件大小(字节) |
|
||
| duration_seconds | DECIMAL(5,2) | 音频时长(秒),如 10.25 |
|
||
| vector_data | TEXT | 声纹向量JSON数组,如 [0.123, 0.456, ...] |
|
||
| collected_at | TIMESTAMP | 采集时间 |
|
||
| updated_at | TIMESTAMP | 更新时间 |
|
||
|
||
### 2.2. `roles` - 角色表
|
||
|
||
存储用户角色信息。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `role_id` | INT | PRIMARY KEY, AUTO_INCREMENT | 角色唯一ID |
|
||
| `role_name` | VARCHAR(50) | UNIQUE, NOT NULL | 角色名称 (e.g., "admin", "user") |
|
||
|
||
### 2.3. `meetings` - 会议表
|
||
|
||
存储会议的核心元数据。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `meeting_id` | INT | PRIMARY KEY, AUTO_INCREMENT | 会议唯一ID |
|
||
| `user_id` | INT | FK | 会议创建者ID (关联 `users` 表) |
|
||
| `title` | VARCHAR(255) | NOT NULL | 会议标题 |
|
||
| `meeting_time` | TIMESTAMP | NULL | 会议召开时间 |
|
||
| `user_prompt` | TEXT | NULL | 用户输入的提示词 (重复)|
|
||
| `summary` | TEXT | NULL | 会议摘要 (Markdown格式) |
|
||
| `tags` | VARCHAR(1024) | NULL | 以逗号分隔的标签字符串 |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 记录创建时间 |
|
||
|
||
### 2.4. `attendees` - 参会人表
|
||
|
||
会议与用户的多对多关联表。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `attendee_id` | INT | PRIMARY KEY, AUTO_INCREMENT | 唯一ID |
|
||
| `meeting_id` | INT | FK | 会议ID (关联 `meetings` 表) |
|
||
| `user_id` | INT | FK | 用户ID (关联 `users` 表) |
|
||
| | | UNIQUE (`meeting_id`, `user_id`) | |
|
||
|
||
### 2.5. `tags` - 标签表
|
||
|
||
存储所有唯一的标签及其颜色,用于快速检索和维护。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `id` | INT | PRIMARY KEY, AUTO_INCREMENT | 标签唯一ID |
|
||
| `name` | VARCHAR(255) | UNIQUE, NOT NULL | 标签名称 |
|
||
| `color` | VARCHAR(7) | DEFAULT '#409EFF' | 标签颜色 (HEX) |
|
||
| `creator_id` INT NOT NULL, COMMENT '创建者用户ID (关联 `users` 表) ' |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||
### 2.6. `audio_files` - 音频文件表
|
||
|
||
存储上传的会议音频文件信息。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `audio_id` | INT | PRIMARY KEY, AUTO_INCREMENT | 音频文件唯一ID |
|
||
| `meeting_id` | INT | FK | 关联的会议ID |
|
||
| `file_name` | VARCHAR(255) | | 原始文件名 |
|
||
| `file_path` | VARCHAR(512) | NOT NULL | 文件存储相对路径 |
|
||
| `file_size` | BIGINT | NULL | 文件大小 (bytes) |
|
||
| `upload_time` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 上传时间 |
|
||
|
||
### 2.7. `attachments` - 会议附件表
|
||
|
||
存储会议相关的其他附件,如PPT、PDF等。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `attachment_id` | INT | PRIMARY KEY, AUTO_INCREMENT | 附件唯一ID |
|
||
| `meeting_id` | INT | FK | 关联的会议ID |
|
||
| `file_name` | VARCHAR(255) | NOT NULL | 原始文件名 |
|
||
| `file_path` | VARCHAR(512) | NOT NULL | 文件存储路径或URL |
|
||
| `file_type` | VARCHAR(100) | | 文件MIME类型 |
|
||
| `uploaded_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 上传时间 |
|
||
|
||
### 2.8. `transcript_tasks` - 转录任务表
|
||
|
||
记录语音转录任务的状态和元数据。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `task_id` | VARCHAR(100) | PRIMARY KEY | 业务任务唯一ID (UUID) |
|
||
| `paraformer_task_id`| VARCHAR(100) | NULL | 外部服务 (Dashscope) 的任务ID |
|
||
| `meeting_id` | INT | NOT NULL, FK | 关联的会议ID |
|
||
| `status` | ENUM(...) | DEFAULT 'pending' | 任务状态: 'pending', 'processing', 'completed', 'failed' |
|
||
| `progress` | INT | DEFAULT 0 | 任务进度百分比 (0-100) |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 任务创建时间 |
|
||
| `completed_at` | TIMESTAMP | NULL | 任务完成时间 |
|
||
| `error_message` | TEXT | NULL | 错误信息记录 |
|
||
|
||
### 2.9. `transcript_segments` - 转录内容分段表
|
||
|
||
存储转录后的文字内容,按句子和发言人分段。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `segment_id` | INT | PRIMARY KEY, AUTO_INCREMENT | 分段唯一ID |
|
||
| `meeting_id` | INT | FK | 关联的会议ID |
|
||
| `speaker_id` | INT | | AI识别的原始发言人ID (e.g., 0, 1, 2) |
|
||
| `speaker_tag` | VARCHAR(50) | NOT NULL | 用户可编辑的发言人标签 (e.g., "张三") |
|
||
| `start_time_ms` | INT | NOT NULL | 在音频中的开始时间 (毫秒) |
|
||
| `end_time_ms` | INT | NOT NULL | 在音频中的结束时间 (毫秒) |
|
||
| `text_content` | TEXT | NOT NULL | 转录的文本内容 |
|
||
|
||
### 2.10. `meeting_summaries` - 会议纪要表(作废)
|
||
|
||
存储由LLM生成的会议纪要。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `id` | INT | PRIMARY KEY, AUTO_INCREMENT | 纪要唯一ID |
|
||
| `meeting_id` | INT | FK | 关联的会议ID |
|
||
| `summary_content` | TEXT | NULL | 生成的纪要内容 |
|
||
| `user_prompt` | TEXT | NULL | 用户输入的额外提示 |
|
||
| `prompt_id` | INT | FK | 关联的提示词模版ID |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 生成时间 |
|
||
|
||
### 2.11. `llm_tasks` - AI总结任务表
|
||
|
||
记录异步生成AI总结的任务状态。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `task_id` | VARCHAR(100) | PRIMARY KEY | 业务任务唯一ID (UUID) |
|
||
| `meeting_id` | INT | NOT NULL, FK | 关联的会议ID |
|
||
| `prompt_id` | INT | NOT NULL, FK | 关联的提示词模版ID |
|
||
| `user_prompt` | TEXT | NULL | 用户输入的额外提示 |
|
||
| `status` | ENUM(...) | DEFAULT 'pending' | 任务状态: 'pending', 'processing', 'completed', 'failed' |
|
||
| `progress` | INT | DEFAULT 0 | 任务进度百分比 (0-100) |
|
||
| `result` | TEXT | NULL | 成功时存储生成的纪要内容 |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 任务创建时间 |
|
||
| `completed_at` | TIMESTAMP | NULL | 任务完成时间 |
|
||
| `error_message` | TEXT | NULL | 错误信息记录 |
|
||
|
||
### 2.13. `knowledge_bases` - 知识库表
|
||
|
||
存储用户生成和管理的知识库条目。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `kb_id` | INT | PRIMARY KEY, AUTO_INCREMENT | 知识库条目唯一ID |
|
||
| `title` | VARCHAR(255) | NOT NULL | 标题 |
|
||
| `user_prompt` | TEXT | NULL | 用户输入的提示词(重复) |
|
||
| `content` | TEXT | NULL | 生成的知识库内容 (Markdown格式) |
|
||
| `creator_id` | INT | NOT NULL, FK | 创建者用户ID (关联 `users` 表) |
|
||
| `is_shared` | BOOLEAN | NOT NULL, DEFAULT FALSE | 是否为共享知识库 (TRUE: 共享, FALSE: 个人) |
|
||
| `source_meeting_ids` | TEXT | NULL | 内容来源的会议ID列表 (逗号分隔) |
|
||
| `tags` | VARCHAR(255) | NULL | 逗号分隔的标签 |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||
| `updated_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 最后更新时间 |
|
||
|
||
### 2.14. `knowledge_base_tasks` - 知识库生成任务表
|
||
|
||
记录异步生成知识库内容的AI任务状态。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `task_id` | VARCHAR(100) | PRIMARY KEY | 业务任务唯一ID (UUID) |
|
||
| `user_id` | INT | NOT NULL, FK | 发起任务的用户ID (关联 `users` 表) |
|
||
| `kb_id` | INT | NOT NULL, FK | 关联的知识库条目ID (关联 `knowledge_bases` 表) |
|
||
| `prompt_id` | INT | NOT NULL, FK | 关联的提示词模版ID |
|
||
| `user_prompt` | TEXT | NULL | 用户输入的提示词 |
|
||
| `status` | ENUM('pending', 'processing', 'completed', 'failed') | NOT NULL, DEFAULT 'pending' | 任务状态 |
|
||
| `progress` | INT | DEFAULT 0 | 任务进度百分比 (0-100) |
|
||
| `error_message` | TEXT | NULL | 任务失败时的错误信息 |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 任务创建时间 |
|
||
| `updated_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 任务状态更新时间 |
|
||
| `completed_at` | TIMESTAMP | NULL | 任务完成时间 |
|
||
|
||
### 2.12. `prompts` - 提示词仓库表
|
||
|
||
存储系统中各种任务使用的大模型提示词模板。每个任务类型(会议任务、知识库任务)可以有多个提示词,但只能有一个默认且启用的提示词。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `id` | INT | AUTO_INCREMENT, PRIMARY KEY | 提示词唯一ID |
|
||
| `name` | VARCHAR(255) | NOT NULL | 提示词名称 |
|
||
| `task_type` | ENUM('MEETING_TASK', 'KNOWLEDGE_TASK') | NOT NULL | 任务类型:MEETING_TASK-会议任务, KNOWLEDGE_TASK-知识库任务 |
|
||
| `content` | TEXT | NOT NULL | 完整的提示词内容 |
|
||
| `is_default` | BOOLEAN | NOT NULL, DEFAULT FALSE | 是否为该任务类型的默认模板 |
|
||
| `is_active` | BOOLEAN | NOT NULL, DEFAULT TRUE | 是否启用(只有启用的提示词才能被使用) |
|
||
| `creator_id` | INT | NOT NULL, FK | 创建者用户ID (关联 `users` 表) |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||
|
||
**约束说明:**
|
||
- 每个 `task_type` 同一时间只能有一个 `is_default=TRUE` 的提示词
|
||
- 业务逻辑需确保:设置新默认提示词时,自动取消同类型其他提示词的默认状态
|
||
|
||
### 2.15. `prompt_config` - 提示词配置表(已废弃)
|
||
|
||
**该表已废弃,功能整合到 `prompts` 表的 `task_type` 和 `is_default` 字段。**
|
||
|
||
### 2.16. `dict_data` - 字典/码表数据表
|
||
|
||
存储系统中的码表数据,支持树形结构和扩展属性,用于管理客户端平台类型等配置数据。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `id` | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
|
||
| `dict_type` | VARCHAR(64) | NOT NULL, DEFAULT 'client_platform' | 字典类型(如 client_platform) |
|
||
| `dict_code` | VARCHAR(64) | NOT NULL | 业务编码(唯一Key,如 WIN、IOS、ANDROID) |
|
||
| `parent_code` | VARCHAR(64) | NOT NULL, DEFAULT 'ROOT' | 父级编码(ROOT为顶级,支持树形结构) |
|
||
| `tree_path` | VARCHAR(255) | NULL | 层级路径(辅助字段,如 0,1,10) |
|
||
| `label_cn` | VARCHAR(128) | NOT NULL | 中文名称 |
|
||
| `label_en` | VARCHAR(128) | NULL | 英文名称 |
|
||
| `sort_order` | INT | DEFAULT 0 | 排序权重 |
|
||
| `extension_attr` | JSON | NULL | 扩展属性(JSON格式,存储平台特有属性) |
|
||
| `is_default` | TINYINT | DEFAULT 0 | 是否默认选中(0: 否, 1: 是) |
|
||
| `status` | TINYINT | DEFAULT 1 | 状态(1: 正常, 0: 停用) |
|
||
| `create_time` | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||
| | | UNIQUE KEY (`dict_type`, `dict_code`) | 确保编码在同类型下唯一 |
|
||
|
||
**扩展属性示例(extension_attr):**
|
||
```json
|
||
{
|
||
"suffix": ".exe",
|
||
"arch_support": ["x86", "x64"],
|
||
"icon": "monitor"
|
||
}
|
||
```
|
||
|
||
**树形结构示例:**
|
||
- ROOT
|
||
- DESKTOP (桌面端)
|
||
- WIN (Windows)
|
||
- MAC (macOS)
|
||
- LINUX (Linux)
|
||
- MOBILE (移动端)
|
||
- IOS (苹果iOS)
|
||
- ANDROID (安卓)
|
||
- TERMINAL (专用终端)
|
||
- TERM_STD (通用终端)
|
||
- TERM_S100 (中兴终端)
|
||
|
||
### 2.17. `client_downloads` - 客户端下载管理表
|
||
|
||
存储各平台客户端版本信息,用于管理客户端下载和版本更新。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `id` | INT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
|
||
| `platform_code` | VARCHAR(64) | NOT NULL | 平台编码(关联 `dict_data.dict_code`) |
|
||
| `version` | VARCHAR(50) | NOT NULL | 版本号(如 1.0.0) |
|
||
| `version_code` | INT | NOT NULL | 版本号数值(用于版本比较) |
|
||
| `download_url` | VARCHAR(512) | NOT NULL | 下载链接 |
|
||
| `file_size` | BIGINT | NULL | 文件大小(bytes) |
|
||
| `release_notes` | TEXT | NULL | 更新说明 |
|
||
| `is_active` | BOOLEAN | NOT NULL, DEFAULT TRUE | 是否启用 |
|
||
| `is_latest` | BOOLEAN | NOT NULL, DEFAULT FALSE | 是否为最新版本 |
|
||
| `min_system_version` | VARCHAR(50) | NULL | 最低系统版本要求 |
|
||
| `created_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
|
||
| `updated_at` | TIMESTAMP | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
|
||
| `created_by` | INT | NULL, FK | 创建者用户ID(关联 `users` 表) |
|
||
| | | INDEX (`platform_code`) | 平台编码索引 |
|
||
|
||
**约束说明:**
|
||
- 同一 `platform_code` 同一时间只应有一个 `is_latest=TRUE` 的版本
|
||
- `platform_code` 关联 `dict_data` 表的 `dict_code` 字段(client_platform类型)
|
||
- 业务逻辑需确保:设置新最新版本时,自动取消同平台其他版本的最新状态
|
||
|
||
### 2.18. `terminals` - 专用终端设备表
|
||
|
||
存储专用终端设备信息(如录音笔、会议平板等),用于设备激活管理和状态监控。
|
||
|
||
| 字段名 | 类型 | 约束 | 描述 |
|
||
| :--- | :--- | :--- | :--- |
|
||
| `id` | INT | PRIMARY KEY, AUTO_INCREMENT | 主键ID |
|
||
| `imei` | VARCHAR(64) | NOT NULL, UNIQUE | IMEI号(设备唯一标识) |
|
||
| `terminal_name` | VARCHAR(100) | NULL | 终端名称/设备别名 |
|
||
| `terminal_type` | VARCHAR(50) | NOT NULL | 终端类型(关联 `dict_data.dict_code`) |
|
||
| `description` | VARCHAR(500) | NULL | 终端说明/备注 |
|
||
| `status` | TINYINT(1) | NOT NULL, DEFAULT 1 | 启用状态: 1-启用, 0-停用 |
|
||
| `is_activated` | TINYINT(1) | NOT NULL, DEFAULT 0 | 激活状态: 1-已激活, 0-未激活 |
|
||
| `activated_at` | DATETIME | NULL | 激活时间 |
|
||
| `firmware_version` | VARCHAR(50) | NULL | 当前固件版本 |
|
||
| `last_online_at` | DATETIME | NULL | 最后在线/心跳时间 |
|
||
| `ip_address` | VARCHAR(50) | NULL | 最近一次连接IP |
|
||
| `mac_address` | VARCHAR(64) | NULL | MAC地址 |
|
||
| `created_at` | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP | 录入时间 |
|
||
| `updated_at` | DATETIME | NOT NULL, DEFAULT CURRENT_TIMESTAMP ON UPDATE | 更新时间 |
|
||
| `created_by` | INT | NULL, FK | 录入人ID(关联 `users` 表) |
|
||
| | | KEY `idx_terminal_type` | 终端类型索引 |
|
||
| | | KEY `idx_status` | 状态索引 |
|
||
|
||
---
|
||
|
||
## 3. 关系图 (ERD)
|
||
|
||
```mermaid
|
||
erDiagram
|
||
users {
|
||
int user_id PK
|
||
varchar(50) username
|
||
varchar(50) caption
|
||
varchar(100) email
|
||
varchar(255) password_hash
|
||
int role_id FK
|
||
timestamp created_at
|
||
}
|
||
|
||
roles {
|
||
int role_id PK
|
||
varchar(50) role_name
|
||
}
|
||
|
||
meetings {
|
||
int meeting_id PK
|
||
int user_id FK
|
||
varchar(255) title
|
||
timestamp meeting_time
|
||
text summary
|
||
varchar(1024) tags
|
||
timestamp created_at
|
||
}
|
||
|
||
tags {
|
||
int id PK
|
||
varchar(255) name
|
||
varchar(7) color
|
||
}
|
||
|
||
attendees {
|
||
int attendee_id PK
|
||
int meeting_id FK
|
||
int user_id FK
|
||
}
|
||
|
||
audio_files {
|
||
int audio_id PK
|
||
int meeting_id FK
|
||
varchar(512) file_path
|
||
varchar(100) task_id
|
||
}
|
||
|
||
transcript_tasks {
|
||
varchar(100) task_id PK
|
||
int meeting_id FK
|
||
varchar(100) paraformer_task_id
|
||
enum status
|
||
int progress
|
||
}
|
||
|
||
transcript_segments {
|
||
int segment_id PK
|
||
int meeting_id FK
|
||
int speaker_id
|
||
varchar(50) speaker_tag
|
||
int start_time_ms
|
||
int end_time_ms
|
||
text text_content
|
||
}
|
||
|
||
meeting_summaries {
|
||
int id PK
|
||
int meeting_id FK
|
||
text summary_content
|
||
}
|
||
|
||
llm_tasks {
|
||
varchar(100) task_id PK
|
||
int meeting_id FK
|
||
enum status
|
||
int progress
|
||
}
|
||
|
||
dedicated_terminals {
|
||
int id PK
|
||
varchar(64) imei
|
||
varchar(50) terminal_type
|
||
tinyint status
|
||
tinyint is_activated
|
||
}
|
||
|
||
users ||--o{ meetings : "creates"
|
||
users ||--o{ attendees : "attends"
|
||
users }|..|| roles : "has role"
|
||
meetings ||--|{ attendees : "has"
|
||
meetings ||--|{ audio_files : "has"
|
||
meetings ||--|{ transcript_tasks : "has"
|
||
meetings ||--|{ transcript_segments : "has"
|
||
meetings ||--|{ meeting_summaries : "has"
|
||
meetings ||--|{ llm_tasks : "has"
|
||
|
||
``` |