Files
hertz_studio_springboot/数据库说明文档.md
2026-03-03 14:41:39 +08:00

208 lines
8.2 KiB
Markdown
Raw Permalink 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.
# 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`: 女