208 lines
8.2 KiB
Markdown
208 lines
8.2 KiB
Markdown
# Hertz 权限管理系统数据库说明文档
|
||
|
||
## 1. 数据库概述
|
||
|
||
- **数据库名称**: `hertz_springboot`
|
||
- **数据库类型**: MySQL
|
||
- **字符集**: utf8mb4
|
||
- **排序规则**: utf8mb4_general_ci (推荐)
|
||
|
||
> 说明:知识库(RAG)功能除了数据库表外,还依赖 Ollama 的向量化模型(Embedding)。首次使用前需在运行后端的机器执行 `ollama pull nomic-embed-text`,并保持 `application.yml` 中 `spring.ai.ollama.embedding.model` 与实际模型一致。
|
||
|
||
## 2. ER 图设计概要
|
||
|
||
系统采用 RBAC(用户-角色-权限)为核心,并扩展了监控、AI 对话、知识库等模块。主要表如下:
|
||
|
||
- **RBAC 权限模型**
|
||
- `sys_user`: 用户表
|
||
- `sys_role`: 角色表
|
||
- `sys_menu`: 菜单/权限表
|
||
- `sys_user_role`: 用户-角色关联表
|
||
- `sys_role_menu`: 角色-菜单关联表
|
||
- **监控模块**
|
||
- `sys_monitor_log`: 系统监控日志表
|
||
- **AI 助手模块**
|
||
- `ai_conversations`: 对话记录表
|
||
- `ai_messages`: 对话消息表
|
||
- **知识库模块(RAG)**
|
||
- `knowledge_base`: 知识库表
|
||
- `knowledge_document`: 知识库文档表(上传记录/存储路径/向量化状态)
|
||
|
||
## 3. 表结构详解
|
||
|
||
### 3.1 系统用户表 (sys_user)
|
||
|
||
存储系统的登录用户信息。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| username | varchar | 50 | NO | | 用户名 (唯一) |
|
||
| password | varchar | 100 | NO | | 加密密码 (BCrypt) |
|
||
| nickname | varchar | 50 | NO | | 用户昵称 |
|
||
| avatar_path | varchar | 255 | YES | NULL | 头像路径 |
|
||
| phone | varchar | 20 | YES | NULL | 手机号 |
|
||
| email | varchar | 100 | YES | NULL | 邮箱 |
|
||
| gender | tinyint | 1 | YES | 0 | 0-未知 1-男 2-女 |
|
||
| status | tinyint | 4 | YES | 1 | 0-禁用 1-启用 |
|
||
| created_at | datetime | | YES | CURRENT_TIMESTAMP | 创建时间 |
|
||
| updated_at | datetime | | YES | CURRENT_TIMESTAMP | 更新时间 |
|
||
|
||
### 3.2 系统角色表 (sys_role)
|
||
|
||
存储系统的角色信息。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| role_key | varchar | 50 | NO | | 角色标识 (唯一,如 ADMIN) |
|
||
| role_name | varchar | 50 | NO | | 角色名称 (如 管理员) |
|
||
| status | tinyint | 4 | YES | 1 | 0-禁用 1-启用 |
|
||
| created_at | datetime | | YES | CURRENT_TIMESTAMP | 创建时间 |
|
||
| updated_at | datetime | | YES | CURRENT_TIMESTAMP | 更新时间 |
|
||
|
||
### 3.3 系统菜单表 (sys_menu)
|
||
|
||
存储菜单和按钮权限信息,支持树形结构。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| parent_id | bigint | 20 | YES | 0 | 父菜单 ID (0为顶级) |
|
||
| type | varchar | 10 | NO | | 菜单类型: D-目录 M-菜单 B-按钮 |
|
||
| name | varchar | 50 | NO | | 菜单名称/按钮名称 |
|
||
| path | varchar | 200 | YES | NULL | 路由路径 (前端路由) |
|
||
| component | varchar | 200 | YES | NULL | 组件路径 (Vue组件) |
|
||
| perms | varchar | 100 | YES | NULL | 权限标识 (如 system:user:view) |
|
||
| icon | varchar | 100 | YES | NULL | 菜单图标 |
|
||
| sort | int | 11 | YES | 0 | 排序 (数值越小越靠前) |
|
||
| visible | tinyint | 4 | YES | 1 | 0-隐藏 1-显示 |
|
||
| status | tinyint | 4 | YES | 1 | 0-禁用 1-启用 |
|
||
| created_at | datetime | | YES | CURRENT_TIMESTAMP | 创建时间 |
|
||
| updated_at | datetime | | YES | CURRENT_TIMESTAMP | 更新时间 |
|
||
|
||
### 3.4 用户角色关联表 (sys_user_role)
|
||
|
||
用户与角色的多对多关系表。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| user_id | bigint | 20 | NO | | 用户 ID |
|
||
| role_id | bigint | 20 | NO | | 角色 ID |
|
||
|
||
### 3.5 角色菜单关联表 (sys_role_menu)
|
||
|
||
角色与菜单(权限)的多对多关系表。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| role_id | bigint | 20 | NO | | 角色 ID |
|
||
| menu_id | bigint | 20 | NO | | 菜单 ID |
|
||
|
||
### 3.6 系统监控日志表 (sys_monitor_log)
|
||
|
||
存储系统监控的日志信息。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| cpu_usage | double | | NO | | CPU使用率(%) |
|
||
| memory_usage | double | | NO | | 内存使用率(%) |
|
||
| memory_total | bigint | | NO | | 总内存(字节) |
|
||
| memory_used | bigint | | NO | | 已用内存(字节) |
|
||
| created_at | datetime | | NO | CURRENT_TIMESTAMP | 记录时间 |
|
||
|
||
### 3.7 对话记录表 (ai_conversations)
|
||
|
||
存储 AI 助手的对话会话记录。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| user_id | bigint | 20 | NO | | 用户 ID |
|
||
| title | varchar | 255 | NO | | 对话标题 |
|
||
| created_at | datetime | | NO | CURRENT_TIMESTAMP | 创建时间 |
|
||
| updated_at | datetime | | NO | CURRENT_TIMESTAMP | 更新时间 |
|
||
|
||
### 3.8 对话消息表 (ai_messages)
|
||
|
||
存储对话的具体消息内容。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| conversation_id | bigint | 20 | NO | | 所属对话 ID |
|
||
| role | enum | | NO | | 消息角色 (user/assistant) |
|
||
| content | text | | NO | | 消息内容 |
|
||
| created_at | datetime | | NO | CURRENT_TIMESTAMP | 创建时间 |
|
||
|
||
### 3.9 知识库表 (knowledge_base)
|
||
|
||
存储知识库的基本信息(名称、描述、创建时间等)。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| name | varchar | 255 | NO | | 知识库名称 |
|
||
| description | text | | YES | NULL | 知识库描述 |
|
||
| create_time | datetime | | YES | CURRENT_TIMESTAMP | 创建时间 |
|
||
| create_by | bigint | 20 | YES | NULL | 创建人用户 ID |
|
||
|
||
### 3.10 知识库文档表 (knowledge_document)
|
||
|
||
存储知识库文档上传记录与落盘信息,用于“可管理、可回溯、可重建向量”。
|
||
|
||
| 字段名 | 类型 | 长度 | 允许空 | 默认值 | 说明 |
|
||
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||
| **id** | bigint | 20 | NO | AUTO_INCREMENT | 主键 ID |
|
||
| kb_id | bigint | 20 | NO | | 所属知识库 ID |
|
||
| original_name | varchar | 512 | NO | | 原始文件名 |
|
||
| stored_name | varchar | 512 | NO | | 存储文件名(UUID) |
|
||
| stored_path | varchar | 1024 | NO | | 存储相对路径(位于 uploads 根目录下) |
|
||
| content_type | varchar | 255 | YES | NULL | MIME 类型 |
|
||
| size_bytes | bigint | 20 | NO | | 文件大小(字节) |
|
||
| sha256 | varchar | 64 | YES | NULL | 文件哈希(用于去重/审计) |
|
||
| status | varchar | 32 | NO | | 处理状态(PROCESSING/READY/FAILED) |
|
||
| chunk_count | int | 11 | YES | 0 | 分片数量 |
|
||
| error_message | varchar | 1024 | YES | NULL | 失败原因 |
|
||
| create_time | datetime | | YES | CURRENT_TIMESTAMP | 上传时间 |
|
||
|
||
## 4. 初始数据说明
|
||
|
||
系统初始化脚本 `db/init.sql` 会预置 RBAC 与 AI 对话相关表结构和初始数据。监控与知识库相关表请额外导入:
|
||
|
||
- `src/main/resources/schema/monitor_schema.sql`
|
||
- `src/main/resources/schema/knowledge_schema.sql`
|
||
|
||
1. **初始角色**:
|
||
- `ADMIN`: 超级管理员,拥有所有权限。
|
||
|
||
2. **初始菜单结构**:
|
||
- 仪表盘
|
||
- 系统管理
|
||
- 用户管理
|
||
- 角色管理
|
||
- 菜单管理
|
||
|
||
3. **初始用户**:
|
||
- `hertz`: 管理员账号,已绑定 ADMIN 角色。
|
||
- `demo`: 演示账号。
|
||
|
||
## 5. 数据字典与枚举
|
||
|
||
- **用户/角色/菜单状态 (status)**:
|
||
- `1`: 启用 (Normal)
|
||
- `0`: 禁用 (Disabled)
|
||
|
||
- **菜单类型 (type)**:
|
||
- `D`: 目录 (Directory) - 不对应具体页面,仅用于分组
|
||
- `M`: 菜单 (Menu) - 对应具体的前端页面
|
||
- `B`: 按钮 (Button) - 页面内的功能按钮,用于权限控制
|
||
|
||
- **性别 (gender)**:
|
||
- `0`: 未知
|
||
- `1`: 男
|
||
- `2`: 女
|