init
This commit is contained in:
commit
1ab9f9c458
1319 files changed
+137505
No files matched your search
+201
@@ -0,0 +1,201 @@
|
||||
# RuoYi-Vue-Plus 项目文档中心
|
||||
|
||||
## 文档概述
|
||||
|
||||
本文档中心包含了 RuoYi-Vue-Plus 项目的完整技术文档,涵盖需求分析、系统设计、开发指南、测试规范、部署运维等各个方面。
|
||||
|
||||
## 📚 文档目录结构
|
||||
|
||||
### 🎯 [需求文档](requirements/)
|
||||
|
||||
存放项目的需求相关文档,明确项目功能和业务规则。
|
||||
|
||||
**主要内容**:
|
||||
|
||||
- 功能需求文档
|
||||
- 业务流程文档
|
||||
- 原型设计文档
|
||||
- 业务规则文档
|
||||
|
||||
**已有文档**:
|
||||
|
||||
- [后勤满意度调查系统需求说明](../需求文件夹/后勤满意度调查需求/高校后勤满意度调查系统需求说明.md)
|
||||
- [简化版报告厅预约系统设计说明](../需求文件夹/后勤报告厅预约需求/简化版报告厅预约系统设计说明.md)
|
||||
|
||||
### 🏗️ [设计文档](design/)
|
||||
|
||||
存放项目的设计相关文档,包括系统架构、数据库设计、接口设计等。
|
||||
|
||||
**主要内容**:
|
||||
|
||||
- 系统架构设计
|
||||
- 数据库设计文档
|
||||
- API 接口设计
|
||||
- 安全设计文档
|
||||
- 性能设计文档
|
||||
|
||||
### 💻 [开发文档](development/)
|
||||
|
||||
存放项目的开发相关文档,为开发人员提供详细的开发指南。
|
||||
|
||||
**主要内容**:
|
||||
|
||||
- 开发环境搭建
|
||||
- 开发规范和指南
|
||||
- 代码样例和模板
|
||||
- 功能开发指南
|
||||
- 问题记录和解决方案
|
||||
|
||||
### 🧪 [测试文档](testing/)
|
||||
|
||||
存放项目的测试相关文档,确保项目质量和稳定性。
|
||||
|
||||
**主要内容**:
|
||||
|
||||
- 测试计划文档
|
||||
- 测试用例文档
|
||||
- 测试报告
|
||||
- 自动化测试
|
||||
- 性能测试
|
||||
|
||||
### 🚀 [部署文档](deployment/)
|
||||
|
||||
存放项目的部署相关文档,指导项目的部署和运维。
|
||||
|
||||
**主要内容**:
|
||||
|
||||
- 环境配置文档
|
||||
- 容器化部署
|
||||
- 自动化部署
|
||||
- 监控和告警
|
||||
- 运维手册
|
||||
|
||||
### ⚙️ [中间件配置](middleware/)
|
||||
|
||||
存放项目使用的各种中间件配置文档和最佳实践。
|
||||
|
||||
**主要内容**:
|
||||
|
||||
- 数据库配置(MySQL、Redis 等)
|
||||
- 消息中间件配置
|
||||
- 反向代理和负载均衡
|
||||
- 监控组件配置
|
||||
- 存储服务配置
|
||||
|
||||
## 🔧 技术栈概览
|
||||
|
||||
### 后端技术栈
|
||||
|
||||
- **框架**: Spring Boot 3.4.6
|
||||
- **Java**: JDK 17/21
|
||||
- **ORM**: MyBatis-Plus 3.5.12
|
||||
- **权限**: Sa-Token 1.42.0 + JWT
|
||||
- **缓存**: Redis + Redisson 3.45.1
|
||||
- **数据库**: MySQL/Oracle/PostgreSQL/SQLServer
|
||||
- **任务调度**: SnailJob 1.5.0
|
||||
- **工作流**: Warm-Flow 1.7.3
|
||||
|
||||
### 前端技术栈
|
||||
|
||||
- **框架**: Vue 3 + TypeScript
|
||||
- **UI 组件**: Element Plus
|
||||
- **构建工具**: Vite
|
||||
- **状态管理**: Pinia
|
||||
|
||||
### 部署技术栈
|
||||
|
||||
- **容器化**: Docker + Docker Compose
|
||||
- **编排**: Kubernetes
|
||||
- **反向代理**: Nginx
|
||||
- **监控**: Prometheus + Grafana
|
||||
- **日志**: ELK Stack
|
||||
|
||||
## 📖 快速导航
|
||||
|
||||
### 🚀 新手入门
|
||||
|
||||
1. **环境搭建**: [开发环境搭建指南](development/README.md#开发环境搭建)
|
||||
2. **项目启动**: [快速开始](development/README.md#快速开始)
|
||||
3. **开发规范**: [开发规范和指南](development/README.md#开发规范和指南)
|
||||
|
||||
### 💼 业务开发
|
||||
|
||||
1. **需求分析**: [需求文档](requirements/README.md)
|
||||
2. **数据库设计**: [数据库设计文档](design/README.md#数据库设计文档)
|
||||
3. **接口开发**: [API 接口设计](design/README.md#接口设计文档)
|
||||
4. **前端开发**: [前端开发指南](development/README.md#功能开发指南)
|
||||
|
||||
### 🔧 运维部署
|
||||
|
||||
1. **部署方案**: [部署文档](deployment/README.md)
|
||||
2. **环境配置**: [中间件配置](middleware/README.md)
|
||||
3. **监控告警**: [监控配置](deployment/README.md#监控和告警)
|
||||
|
||||
### 🧪 质量保证
|
||||
|
||||
1. **测试规范**: [测试文档](testing/README.md)
|
||||
2. **代码质量**: [开发规范](development/README.md#开发规范和指南)
|
||||
3. **性能优化**: [性能优化指南](development/README.md#性能优化指南)
|
||||
|
||||
## 📋 重要规范
|
||||
|
||||
### 🔒 安全规范
|
||||
|
||||
- 所有接口必须进行权限校验
|
||||
- 敏感数据必须加密存储
|
||||
- 生产环境密码定期更换
|
||||
- API 接口启用加解密传输
|
||||
|
||||
### 📊 数据库规范
|
||||
|
||||
- 使用雪花 ID 作为主键
|
||||
- 所有业务表包含基础字段(id、tenant_id、create_by 等)
|
||||
- 多租户字段必须建索引
|
||||
- 遵循命名规范(下划线命名法)
|
||||
|
||||
### 🌐 接口规范
|
||||
|
||||
- 遵循 RESTful API 设计原则
|
||||
- 统一响应格式(code、msg、data)
|
||||
- 使用 SpringDoc 自动生成文档
|
||||
- 完整的参数校验和异常处理
|
||||
|
||||
### 🔄 代码变更规则
|
||||
|
||||
**每次代码调整必须同步更新以下文档**:
|
||||
|
||||
- API 文档:接口变更时更新 OpenAPI 文档
|
||||
- 数据库文档:表结构变更时更新 DDL 和文档
|
||||
- 配置文档:配置项变更时更新配置说明
|
||||
- 部署文档:部署流程变更时更新部署手册
|
||||
|
||||
## 📞 技术支持
|
||||
|
||||
### 🔗 官方资源
|
||||
|
||||
- **官方文档**: https://plus-doc.dromara.org
|
||||
- **源码仓库**: https://gitee.com/dromara/RuoYi-Vue-Plus
|
||||
- **问题反馈**: https://gitee.com/dromara/RuoYi-Vue-Plus/issues
|
||||
|
||||
### 📝 文档贡献
|
||||
|
||||
- 发现文档错误或缺失,请及时更新
|
||||
- 新功能开发完成后,必须更新相关文档
|
||||
- 重要经验和最佳实践,建议添加到相应文档中
|
||||
|
||||
### 📈 文档维护
|
||||
|
||||
- 文档版本与代码版本保持同步
|
||||
- 定期 review 文档内容的准确性
|
||||
- 过期文档及时标记或删除
|
||||
|
||||
## 🎯 版本信息
|
||||
|
||||
- **项目版本**: RuoYi-Vue-Plus 5.4.0
|
||||
- **文档版本**: v1.0
|
||||
- **最后更新**: 2025 年 1 月
|
||||
- **维护团队**: 技术开发团队
|
||||
|
||||
---
|
||||
|
||||
**注意**: 本文档中心会随着项目的发展持续更新,请及时关注最新版本。如有任何问题或建议,欢迎通过 Issue 或技术群进行反馈。
|
||||
@@ -0,0 +1,574 @@
|
||||
# 代码调整记录
|
||||
|
||||
> 本文件用于记录所有前端代码的调整历史,确保变更的可追溯性和团队协作的透明度。
|
||||
|
||||
## 📋 记录规范说明
|
||||
|
||||
### 记录格式模板
|
||||
|
||||
每次调整后请按以下格式记录:
|
||||
|
||||
```markdown
|
||||
## 调整记录 - YYYY-MM-DD HH:mm:ss
|
||||
|
||||
**调整时间**: YYYY-MM-DD HH:mm:ss
|
||||
**调整人**: [开发者姓名/Cursor AI 辅助]
|
||||
**调整目的**: [简述调整原因和目标]
|
||||
**涉及文件**:
|
||||
|
||||
- src/views/[module]/[file].vue
|
||||
- src/api/[module]/[file].ts
|
||||
- src/components/[ComponentName]/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 具体调整了哪些代码
|
||||
2. 修改了哪些功能
|
||||
3. 优化了哪些性能
|
||||
4. 修复了哪些问题
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||||
- CSS 变量使用: --art-\*变量系统
|
||||
- 其他重要技术决策
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [ ] 功能测试通过
|
||||
- [ ] 样式规范检查通过
|
||||
- [ ] TypeScript 类型检查通过
|
||||
- [ ] 响应式布局测试通过
|
||||
- [ ] 暗色主题兼容性测试通过
|
||||
|
||||
**备注**: 其他需要说明的内容
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
### 📝 记录要求
|
||||
|
||||
- **及时性**: 每次代码调整完成后立即记录
|
||||
- **完整性**: 包含所有必要信息字段
|
||||
- **准确性**: 详细描述实际的调整内容
|
||||
- **可追溯性**: 便于后续查看和维护
|
||||
|
||||
---
|
||||
|
||||
## 📅 调整记录历史
|
||||
|
||||
### 示例记录
|
||||
|
||||
## 调整记录 - 2024-01-20 14:30:00
|
||||
|
||||
**调整时间**: 2024-01-20 14:30:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 建立代码调整记录管理制度,确保项目变更的可追溯性
|
||||
**涉及文件**:
|
||||
|
||||
- docs/code-adjust-record.md (新建)
|
||||
- .cursorrules (更新)
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 创建了代码调整记录的标准模板
|
||||
2. 在.cursorrules 中添加了强制记录要求
|
||||
3. 建立了记录格式规范和管理制度
|
||||
4. 为后续的代码变更管理提供标准化流程
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 文件格式: Markdown
|
||||
- 遵循的规范: Plus UI 项目开发规范
|
||||
- 管理方式: 版本控制与文档管理结合
|
||||
- 强制性要求: 所有 Cursor AI 代码调整都必须记录
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 模板格式检查通过
|
||||
- [x] 文档结构清晰易读
|
||||
- [x] 符合团队协作要求
|
||||
- [x] .cursorrules 规范更新完成
|
||||
|
||||
**备注**: 这是第一条记录,用作模板示例。后续所有通过 Cursor AI 进行的代码调整都必须在此文件中留下记录。
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
以下为实际的代码调整记录,请按照上述模板格式添加新的记录
|
||||
新记录请添加在此行下方,保持时间倒序排列(最新的在前)
|
||||
-->
|
||||
|
||||
## 调整记录 - 2025-01-26 20:30:00
|
||||
|
||||
**调整时间**: 2025-01-26 20:30:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 优化问卷答题页面操作按钮的显示方式,统一使用图标显示并添加 tooltip 提示
|
||||
**涉及文件**:
|
||||
|
||||
- web/src/views/hq/answerSurvey/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. **移除按钮文字,统一使用图标**
|
||||
|
||||
- 答题按钮:移除"答题"文字,只保留 Edit 图标
|
||||
- 查看结果按钮:移除"查看结果"文字,只保留 Document 图标
|
||||
- 查看详情按钮:移除"查看详情"文字,只保留 View 图标
|
||||
|
||||
2. **添加 tooltip 提示系统**
|
||||
|
||||
- 为每个操作按钮添加 el-tooltip 组件
|
||||
- 鼠标悬停显示对应功能名称:"答题"、"查看结果"、"查看详情"
|
||||
- 设置 tooltip 位置为 top,确保最佳显示效果
|
||||
|
||||
3. **统一按钮尺寸和样式**
|
||||
|
||||
- 设置所有操作按钮为固定尺寸:32px × 32px
|
||||
- 移除按钮内边距,使用 flex 布局居中图标
|
||||
- 调整操作列宽度从 200px 缩减为 140px
|
||||
|
||||
4. **保持按钮功能和状态逻辑**
|
||||
- 进行中状态(1):显示答题按钮(warning 类型)
|
||||
- 已结束状态(2):显示查看结果按钮(info 类型)
|
||||
- 所有状态:显示查看详情按钮(primary 类型)
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||||
- Tooltip 组件: 使用 Element Plus 的 el-tooltip 组件,placement="top"
|
||||
- CSS 优化: 使用!important 确保按钮尺寸统一,防止样式被覆盖
|
||||
- 图标系统: 保持原有的 Edit、Document、View 图标
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 功能测试通过 - 所有按钮点击功能正常
|
||||
- [x] 样式规范检查通过 - 按钮尺寸统一,图标居中
|
||||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||||
- [x] 响应式布局测试通过 - 操作列宽度适配
|
||||
- [x] 用户体验提升 - 界面更简洁,tooltip 提示清晰
|
||||
|
||||
**备注**: 这次调整显著提升了表格的视觉效果,通过纯图标按钮减少了视觉噪音,同时通过 tooltip 保持了功能的可识别性。操作列宽度的缩减也为表格内容提供了更多空间。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2025-01-26 16:40:00
|
||||
|
||||
**调整时间**: 2025-01-26 16:40:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 优化答题按钮的视觉优先级,让答题功能更加突出
|
||||
**涉及文件**:
|
||||
|
||||
- web/src/views/hq/answerSurvey/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 将答题按钮类型从 `success` 改为 `warning`,使用更醒目的橙色
|
||||
2. 将答题按钮位置调整到第一位,优先于查看按钮显示
|
||||
3. 保持查看按钮为 `primary` 类型,作为次要操作按钮
|
||||
4. 通过颜色和位置的调整,突出答题的重要性和优先级
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||||
- 颜色调整: `type="warning"` 提供更醒目的橙色背景
|
||||
- 布局调整: 将答题按钮放在第一位,符合操作优先级
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 功能测试通过 - 按钮点击功能正常
|
||||
- [x] 样式规范检查通过 - 按钮颜色醒目突出
|
||||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||||
- [x] 用户体验测试通过 - 答题按钮更容易识别
|
||||
- [x] 视觉优先级测试通过 - 主要操作更加突出
|
||||
|
||||
**备注**: 这次调整明确了操作按钮的优先级,答题作为核心功能使用醒目的橙色并放在首位,而查看作为辅助功能使用蓝色并放在次位,提升了用户的操作体验和效率。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2025-01-26 16:35:00
|
||||
|
||||
**调整时间**: 2025-01-26 16:35:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 优化问卷列表操作按钮布局和文本,提升用户体验
|
||||
**涉及文件**:
|
||||
|
||||
- web/src/views/hq/answerSurvey/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 修改操作列按钮文本:"查看题目" 改为 "查看","开始答题" 改为 "答题"
|
||||
2. 添加 `action-buttons` 容器包裹操作按钮,使用 Flexbox 布局确保按钮在一行显示
|
||||
3. 调整操作列宽度从 200px 减少到 160px,更好地适应缩短后的按钮文本
|
||||
4. 添加 CSS 样式 `.action-buttons`,设置 `display: flex`、`gap: 8px` 等属性
|
||||
5. 设置按钮居中对齐和禁止换行,确保界面整洁美观
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||||
- 布局优化: 使用 Flexbox 确保按钮水平排列
|
||||
- 样式调整: `gap: 8px` 按钮间距,`white-space: nowrap` 禁止换行
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 功能测试通过 - 按钮点击功能正常
|
||||
- [x] 样式规范检查通过 - 按钮保持在一行显示
|
||||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||||
- [x] 响应式布局测试通过 - 表格列宽度适配
|
||||
- [x] 用户体验提升 - 按钮文本简洁,布局紧凑
|
||||
|
||||
**备注**: 这次调整简化了按钮文本并优化了布局,使操作列更加紧凑,提升了表格的整体视觉效果和用户操作体验。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2025-01-26 16:30:00
|
||||
|
||||
**调整时间**: 2025-01-26 16:30:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 统一问卷弹窗中开始时间和结束时间字段的宽度,与其他表单字段保持一致
|
||||
**涉及文件**:
|
||||
|
||||
- web/src/views/hq/satSurvey/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 为问卷编辑弹窗中的开始时间日期选择器添加 `style="width: 100%"` 属性
|
||||
2. 为问卷编辑弹窗中的结束时间日期选择器添加 `style="width: 100%"` 属性
|
||||
3. 同时优化了代码格式,将单行属性改为多行格式,提高代码可读性
|
||||
4. 确保所有表单字段在视觉上保持统一的宽度和对齐
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||||
- 样式调整: 使用 `style="width: 100%"` 确保日期选择器占满容器宽度
|
||||
- 代码优化: 多行属性格式提高可维护性
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 功能测试通过 - 日期选择器正常工作
|
||||
- [x] 样式规范检查通过 - 字段宽度统一一致
|
||||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||||
- [x] 响应式布局测试通过 - 弹窗内字段对齐美观
|
||||
- [x] 用户体验提升 - 表单字段视觉统一
|
||||
|
||||
**备注**: 这个调整解决了表单字段宽度不一致的视觉问题,提升了用户界面的专业性和一致性。日期选择器现在与其他输入字段保持相同的宽度。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2025-01-26 16:25:00
|
||||
|
||||
**调整时间**: 2025-01-26 16:25:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 在.cursorrules 文件中加入代码与文档同步更新的强制规则
|
||||
**涉及文件**:
|
||||
|
||||
- .cursorrules (添加新规则)
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 在"项目文档管理规范"部分添加了"核心原则:代码与文档同步更新"
|
||||
2. 明确了强制规则:每次代码调整完成后,必须同步更新相应的项目文档
|
||||
3. 扩充了强制更新规则列表,新增功能文档和设计文档的更新要求
|
||||
4. 添加了详细的"文档同步更新清单",分别针对前端、后端、移动端的不同更新要求
|
||||
5. 建立了完整的"文档更新工作流程",确保文档更新的系统性和完整性
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 规则强化: 将文档同步更新上升为强制性要求
|
||||
- 分类管理: 按照前端、后端、移动端分别制定文档更新清单
|
||||
- 流程规范: 建立 5 步文档更新工作流程
|
||||
- 检查机制: 提供 checkbox 清单确保文档更新的完整性
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 新规则添加完成
|
||||
- [x] 文档更新清单完整
|
||||
- [x] 工作流程清晰明确
|
||||
- [x] 涵盖所有开发场景
|
||||
- [x] 确保文档永远保持最新状态
|
||||
|
||||
**备注**: 这个新规则确保了项目文档与代码的高度同步,避免了文档滞后的问题,为项目的长期维护提供了重要保障。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2025-01-26 16:15:00
|
||||
|
||||
**调整时间**: 2025-01-26 16:15:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 重新组织.cursorrules 文件结构,按照项目实际情况分为四个主要部分
|
||||
**涉及文件**:
|
||||
|
||||
- .cursorrules (重新组织)
|
||||
- docs/代码调整记录.md (重命名为 docs/code-adjust-record.md)
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 重新组织.cursorrules 文件,分为四个主要部分:
|
||||
- 第一部分:项目文档管理规范 (docs 中的文件) 及代码调整记录管理
|
||||
- 第二部分:Web 前端开发规范 (web/)
|
||||
- 第三部分:后端开发规范 (backend/)
|
||||
- 第四部分:移动端开发规范 (mobile/)
|
||||
2. 将"代码调整记录.md"重命名为"code-adjust-record.md"
|
||||
3. 更新项目结构说明,明确指出各目录的用途
|
||||
4. 强化代码调整记录的管理要求,确保每次代码变更都有记录
|
||||
5. 为移动端添加了完整的开发规范
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 文档组织: 按照实际项目结构(backend/, web/, mobile/, docs/)进行重新组织
|
||||
- 规范分类: 将前端、后端、移动端规范独立管理,便于维护
|
||||
- 记录管理: 统一代码调整记录文件命名和格式
|
||||
- 强制要求: 所有代码调整都必须在 docs/code-adjust-record.md 中记录
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] .cursorrules 文件结构调整完成
|
||||
- [x] 代码调整记录文件重命名成功
|
||||
- [x] 四个部分的规范内容完整
|
||||
- [x] 文档结构清晰易读
|
||||
- [x] 符合项目实际开发需求
|
||||
|
||||
**备注**: 这次调整让.cursorrules 文件更加符合项目的实际结构,便于不同技术栈的开发人员快速找到对应的规范。同时统一了代码调整记录的管理方式。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2025-01-26 10:15:00
|
||||
|
||||
**调整时间**: 2025-01-26 10:15:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 创建根目录统一的 .gitignore 文件,融合前端和后端的忽略规则
|
||||
**涉及文件**:
|
||||
|
||||
- .gitignore (新建/重写)
|
||||
- web/.gitignore (参考)
|
||||
- backend/.gitignore (参考)
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 分析了 web 和 backend 目录下现有的 .gitignore 文件内容
|
||||
2. 创建了一个统一的根目录 .gitignore 文件,包含以下分类:
|
||||
- 操作系统相关文件 (.DS_Store, Thumbs.db 等)
|
||||
- IDE 和编辑器配置文件 (.idea/, .vscode/ 等)
|
||||
- 前端相关忽略 (node_modules/, dist/, 锁定文件等)
|
||||
- 后端相关忽略 (target/, .gradle/, Maven 相关文件)
|
||||
- 环境配置文件 (.env 系列, 数据库配置)
|
||||
- 其他常见忽略项 (压缩包, 备份文件, 证书等)
|
||||
3. 使用路径前缀区分不同模块的特定忽略项 (web/, backend/, mobile/)
|
||||
4. 添加了详细的注释说明每个分类的用途
|
||||
5. 保持了原有 .gitignore 文件的核心规则,避免遗漏重要忽略项
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 文件格式: Git ignore 规则文件
|
||||
- 覆盖范围: 整个项目的前端、后端、移动端和文档
|
||||
- 路径策略: 使用相对路径前缀确保规则准确性
|
||||
- 安全考虑: 包含敏感配置文件的忽略规则
|
||||
- 兼容性: 支持 Vue 3 + TypeScript 前端和 Spring Boot 后端
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 文件创建成功
|
||||
- [x] Git ignore 语法正确
|
||||
- [x] 涵盖前端所有必要忽略项
|
||||
- [x] 涵盖后端所有必要忽略项
|
||||
- [x] 包含安全相关配置的忽略规则
|
||||
- [x] 注释清晰,便于维护
|
||||
|
||||
**备注**: 这个统一的 .gitignore 文件整合了前端 Vue 项目、后端 Spring Boot 项目以及移动端项目的所有忽略需求,提供了完整的版本控制支持。原有的 web/.gitignore 和 backend/.gitignore 文件仍然保留,但根目录的这个文件会作为主要的忽略规则文件。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2024-12-28 16:50:00
|
||||
|
||||
**调整时间**: 2024-12-28 16:50:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 优化问卷弹窗中的按钮布局,让确定和取消按钮相邻排列
|
||||
**涉及文件**:
|
||||
|
||||
- src/views/hq/satSurvey/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 修改问卷编辑弹窗的 footer 布局,使用`dialog-footer-right`类替代`dialog-footer`
|
||||
2. 修改题目管理弹窗的 footer 布局,统一使用右对齐样式
|
||||
3. 新增 CSS 样式`.dialog-footer-right`,实现按钮右对齐且相邻排列
|
||||
4. 移除题目管理弹窗 footer 的冗余样式,简化 CSS 结构
|
||||
5. 保持题目选择器弹窗的原有布局(因其有特殊的左右分栏需求)
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||||
- CSS 布局优化: 使用`justify-content: flex-end`实现右对齐
|
||||
- 按钮间距: 统一使用`gap: 12px`保证合理间距
|
||||
- 布局兼容性: 保持不同弹窗的布局需求
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 功能测试通过 - 问卷编辑弹窗按钮布局优化
|
||||
- [x] 样式规范检查通过 - 按钮靠右且相邻排列
|
||||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||||
- [x] 响应式布局测试通过 - 不同屏幕尺寸下表现正常
|
||||
- [x] 用户体验提升 - 操作按钮更加紧凑易用
|
||||
|
||||
**备注**: 此次调整解决了原有按钮分别靠左右两端导致距离过远的问题,提升了用户操作的便利性。题目选择器弹窗保持原有布局,因为其左侧需要显示统计信息。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2024-12-28 16:45:00
|
||||
|
||||
**调整时间**: 2024-12-28 16:45:00
|
||||
**调整人**: 开发者/Cursor AI 辅助
|
||||
**调整目的**: 简化问卷编辑弹窗表单,隐藏不必要的状态相关字段
|
||||
**涉及文件**:
|
||||
|
||||
- src/views/hq/satSurvey/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 隐藏问卷编辑弹窗中的"是否匿名"表单项
|
||||
2. 隐藏问卷编辑弹窗中的"是否发布"表单项
|
||||
3. 隐藏问卷编辑弹窗中的"状态"表单项
|
||||
4. 使用 HTML 注释方式隐藏这些字段,便于后续恢复
|
||||
5. 简化用户操作流程,将状态控制逻辑交由系统自动管理
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用的技术栈: Vue 3.5.13 + TypeScript 5.8.3 + Element Plus 2.9.8
|
||||
- 遵循的设计规范: Art Design Pro 轮廓式按钮系统
|
||||
- 表单简化: 移除业务状态相关的用户输入字段
|
||||
- 保留字段的数据绑定: form.isAnonymous, form.isPublished, form.status 仍可在代码中使用
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 功能测试通过 - 弹窗正常打开且表单简化
|
||||
- [x] 样式规范检查通过 - 布局保持美观
|
||||
- [x] TypeScript 类型检查通过 - 无类型错误
|
||||
- [x] 表单提交测试通过 - 隐藏字段不影响提交逻辑
|
||||
- [x] 用户体验优化 - 表单更加简洁易用
|
||||
|
||||
**备注**: 隐藏的字段可以在后续需要时通过取消注释快速恢复。这样的调整使得问卷创建流程更加简洁,状态管理逻辑由系统后台自动处理,减少用户的操作复杂度。
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2025-01-10 16:35:00
|
||||
|
||||
**调整时间**: 2025-01-10 16:35:00
|
||||
**调整人**: Cursor AI 辅助
|
||||
**调整目的**: 优化问卷答题页面的数据权限控制和状态处理,实现按用户角色显示不同问卷和根据问卷状态显示不同操作
|
||||
**涉及文件**:
|
||||
|
||||
- web/src/views/hq/answerSurvey/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. 修改数据权限控制逻辑
|
||||
- 超级管理员可查看所有已发布问卷
|
||||
- 学生角色可查看目标群体为学生(1)和全体(3)的已发布问卷
|
||||
- 教师角色可查看目标群体为教职工(2)和全体(3)的已发布问卷
|
||||
2. 扩展问卷状态支持
|
||||
- 修改查询条件支持显示进行中(1)和已结束(2)状态的问卷
|
||||
- 移除对单一状态的硬编码限制
|
||||
3. 优化操作按钮显示
|
||||
- 进行中状态问卷显示"答题"按钮
|
||||
- 已结束状态问卷显示"查看结果"按钮
|
||||
- 所有状态都显示"查看详情"按钮
|
||||
4. 新增功能函数
|
||||
- 添加 handleViewResult 函数处理已结束问卷的结果查看
|
||||
- 调整表格操作列宽度以适应新的按钮布局
|
||||
5. **权限控制 bug 修复**
|
||||
- 发现后端 API 不支持 targetGroupIn 和 statusIn 参数过滤
|
||||
- 实现前端临时权限过滤方案,在获取数据后进行客户端过滤
|
||||
- 添加详细的调试日志输出,便于排查权限问题
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用的技术栈: Vue 3 + TypeScript + Element Plus
|
||||
- 遵循的设计规范: Art Design Pro UI 规范
|
||||
- 前端临时权限过滤:通过数组 filter 方法实现目标群体和状态过滤
|
||||
- 响应式按钮显示通过 v-if 指令根据问卷状态控制
|
||||
- 添加全面的调试日志系统,便于问题定位
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 功能测试通过 - 学生角色无法看到教职工问卷
|
||||
- [ ] 代码规范检查通过
|
||||
- [ ] 类型检查通过
|
||||
- [ ] 兼容性测试通过
|
||||
|
||||
**备注**:
|
||||
|
||||
- 角色权限映射:student 对应学生角色,teacher 对应教师角色
|
||||
- 状态码映射:0=草稿,1=进行中,2=已结束
|
||||
- 目标群体码映射:1=学生,2=教职工,3=全体
|
||||
- **⚠️ 重要**:当前使用前端临时权限过滤方案,后续需要修改后端 API 支持 targetGroupIn 和 statusIn 参数
|
||||
- TODO: 需要实现具体的答题页面路由(/hq/survey-answer/{id})和结果查看页面路由(/hq/survey-result/{id})
|
||||
- TODO: 后端需要在 HqSatSurveyController 中添加对 targetGroupIn 和 statusIn 参数的支持
|
||||
|
||||
---
|
||||
|
||||
## 调整记录 - 2025-01-10 17:15:00
|
||||
|
||||
**调整时间**: 2025-01-10 17:15:00
|
||||
**调整人**: Cursor AI 辅助
|
||||
**调整目的**: 实现后端数据权限过滤功能,替换前端临时过滤方案,提升性能和安全性
|
||||
**涉及文件**:
|
||||
|
||||
- backend/ruoyi-admin/src/main/java/org/dromara/zhxy/domain/bo/HqSatSurveyBo.java
|
||||
- backend/ruoyi-admin/src/main/java/org/dromara/zhxy/controller/HqSatSurveyController.java
|
||||
- backend/ruoyi-admin/src/main/java/org/dromara/zhxy/service/impl/HqSatSurveyServiceImpl.java
|
||||
- web/src/views/hq/answerSurvey/index.vue
|
||||
|
||||
**调整内容详述**:
|
||||
|
||||
1. **后端 Bo 类扩展**
|
||||
- 在 HqSatSurveyBo 中添加 targetGroupIn 和 statusIn 字段
|
||||
- 支持 List<String>类型的 IN 查询参数
|
||||
2. **Controller 层参数处理**
|
||||
- 在 list 方法中添加 params 参数解析逻辑
|
||||
- 将前端传递的 targetGroupIn 和 statusIn 参数设置到 Bo 对象
|
||||
3. **Service 层查询优化**
|
||||
- 在 buildQueryWrapper 方法中添加 IN 查询条件
|
||||
- 使用 CollUtil.isNotEmpty 进行空值检查
|
||||
- 通过 LambdaQueryWrapper.in()实现数据库级过滤
|
||||
4. **前端代码重构**
|
||||
- 移除前端临时权限过滤逻辑
|
||||
- 恢复使用 params 参数传递过滤条件
|
||||
- 保留调试日志系统便于问题排查
|
||||
|
||||
**技术细节**:
|
||||
|
||||
- 使用 MyBatis-Plus 的 LambdaQueryWrapper.in()方法实现数据库级 IN 查询
|
||||
- 通过 params 参数传递复杂查询条件,避免 URL 参数限制
|
||||
- 权限过滤在 SQL 层面执行,支持大数据量场景
|
||||
- 分页功能正常工作,只对符合权限的数据进行分页
|
||||
|
||||
**性能优化效果**:
|
||||
|
||||
- **数据库级过滤**: 减少无效数据传输,提升查询性能
|
||||
- **内存使用优化**: 避免前端加载大量无权限数据
|
||||
- **网络传输优化**: 只传输用户有权限查看的数据
|
||||
- **分页精确性**: 分页基于过滤后的真实数据量
|
||||
|
||||
**测试验证**:
|
||||
|
||||
- [x] 功能测试通过 - 学生角色只能查看学生和全体问卷
|
||||
- [x] 性能测试通过 - 数据库级过滤,无前端性能问题
|
||||
- [x] 权限测试通过 - 教师角色只能查看教职工和全体问卷
|
||||
- [x] 分页测试通过 - 分页基于过滤后数据正常工作
|
||||
|
||||
**备注**:
|
||||
|
||||
- 已完全替换前端临时过滤方案,提升了系统性能和安全性
|
||||
- 后端权限过滤支持大数据量场景,无性能瓶颈
|
||||
- 调试日志保留,便于后续问题排查和系统监控
|
||||
- SQL 示例:`SELECT * FROM hq_sat_survey WHERE target_group IN ('1','3') AND status IN ('1','2')`
|
||||
|
||||
---
|
||||
|
||||
## 后端权限过滤参数支持 - ✅ 已完成
|
||||
@@ -0,0 +1,316 @@
|
||||
# 部署文档目录
|
||||
|
||||
## 目录说明
|
||||
|
||||
此目录用于存放项目的部署相关文档,包括环境配置、部署脚本、运维手册等。
|
||||
|
||||
## 1. 环境配置文档
|
||||
|
||||
### 开发环境
|
||||
|
||||
- **开发环境搭建指南.md**:本地开发环境搭建详细步骤
|
||||
- **开发环境配置清单.md**:开发环境所需软件和版本
|
||||
- **开发环境故障排查.md**:常见开发环境问题解决
|
||||
|
||||
### 测试环境
|
||||
|
||||
- **测试环境部署指南.md**:测试环境部署步骤
|
||||
- **测试环境配置文件.md**:测试环境配置参数
|
||||
- **测试数据初始化.md**:测试数据准备和初始化
|
||||
|
||||
### 生产环境
|
||||
|
||||
- **生产环境部署指南.md**:生产环境部署详细步骤
|
||||
- **生产环境配置优化.md**:生产环境配置优化方案
|
||||
- **生产环境安全配置.md**:生产环境安全配置要求
|
||||
|
||||
## 2. 容器化部署
|
||||
|
||||
### Docker 部署
|
||||
|
||||
- **Docker 镜像构建.md**:Docker 镜像构建指南
|
||||
- **Docker Compose 部署.md**:使用 Docker Compose 部署
|
||||
- **Docker 网络配置.md**:Docker 网络和存储配置
|
||||
- **Docker 镜像优化.md**:Docker 镜像优化策略
|
||||
|
||||
### Kubernetes 部署
|
||||
|
||||
- **K8s 集群搭建.md**:Kubernetes 集群搭建
|
||||
- **K8s 应用部署.md**:应用在 K8s 中的部署
|
||||
- **K8s 配置管理.md**:ConfigMap 和 Secret 管理
|
||||
- **K8s 监控配置.md**:K8s 集群监控配置
|
||||
|
||||
### 部署脚本示例:
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml 示例
|
||||
version: "3.8"
|
||||
services:
|
||||
app:
|
||||
build: .
|
||||
ports:
|
||||
- "8080:8080"
|
||||
environment:
|
||||
- SPRING_PROFILES_ACTIVE=prod
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
|
||||
mysql:
|
||||
image: mysql:8.0
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
MYSQL_DATABASE: ruoyi
|
||||
volumes:
|
||||
- mysql_data:/var/lib/mysql
|
||||
|
||||
redis:
|
||||
image: redis:7.0
|
||||
command: redis-server --requirepass password
|
||||
|
||||
volumes:
|
||||
mysql_data:
|
||||
```
|
||||
|
||||
## 3. 自动化部署
|
||||
|
||||
### CI/CD 配置
|
||||
|
||||
- **Jenkins 部署流水线.md**:Jenkins 自动化部署配置
|
||||
- **GitLab CI 部署.md**:GitLab CI/CD 配置
|
||||
- **GitHub Actions 部署.md**:GitHub Actions 自动化部署
|
||||
|
||||
### 部署脚本
|
||||
|
||||
- **自动化部署脚本.md**:shell 脚本自动化部署
|
||||
- **滚动更新脚本.md**:应用滚动更新脚本
|
||||
- **回滚脚本.md**:快速回滚脚本
|
||||
- **健康检查脚本.md**:部署后健康检查
|
||||
|
||||
### 流水线示例:
|
||||
|
||||
```yaml
|
||||
# .gitlab-ci.yml 示例
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
- deploy
|
||||
|
||||
build:
|
||||
stage: build
|
||||
script:
|
||||
- mvn clean package -DskipTests
|
||||
artifacts:
|
||||
paths:
|
||||
- target/*.jar
|
||||
|
||||
test:
|
||||
stage: test
|
||||
script:
|
||||
- mvn test
|
||||
|
||||
deploy:
|
||||
stage: deploy
|
||||
script:
|
||||
- docker build -t app:$CI_COMMIT_SHA .
|
||||
- docker push app:$CI_COMMIT_SHA
|
||||
- kubectl set image deployment/app app=app:$CI_COMMIT_SHA
|
||||
only:
|
||||
- main
|
||||
```
|
||||
|
||||
## 4. 数据库部署
|
||||
|
||||
### 数据库安装配置
|
||||
|
||||
- **MySQL 安装配置.md**:MySQL 数据库安装和配置
|
||||
- **Redis 安装配置.md**:Redis 缓存安装和配置
|
||||
- **数据库集群配置.md**:数据库集群配置
|
||||
|
||||
### 数据库迁移
|
||||
|
||||
- **数据库初始化.md**:数据库初始化脚本
|
||||
- **数据迁移指南.md**:数据库迁移步骤
|
||||
- **数据备份恢复.md**:数据备份和恢复策略
|
||||
|
||||
### 数据库优化
|
||||
|
||||
- **MySQL 性能优化.md**:MySQL 性能调优
|
||||
- **Redis 优化配置.md**:Redis 性能优化
|
||||
- **数据库监控.md**:数据库监控和告警
|
||||
|
||||
## 5. 负载均衡和反向代理
|
||||
|
||||
### Nginx 配置
|
||||
|
||||
- **Nginx 安装配置.md**:Nginx 安装和基础配置
|
||||
- **负载均衡配置.md**:Nginx 负载均衡配置
|
||||
- **SSL 证书配置.md**:HTTPS 证书配置
|
||||
- **静态资源优化.md**:静态资源缓存和压缩
|
||||
|
||||
### 高可用配置
|
||||
|
||||
- **Keepalived 配置.md**:高可用负载均衡配置
|
||||
- **HAProxy 配置.md**:HAProxy 负载均衡配置
|
||||
- **故障转移配置.md**:自动故障转移配置
|
||||
|
||||
## 6. 监控和告警
|
||||
|
||||
### 监控系统
|
||||
|
||||
- **Prometheus 监控.md**:Prometheus 监控配置
|
||||
- **Grafana 仪表板.md**:Grafana 监控仪表板
|
||||
- **ELK 日志系统.md**:ELK 日志收集和分析
|
||||
- **APM 监控.md**:应用性能监控
|
||||
|
||||
### 告警配置
|
||||
|
||||
- **告警规则配置.md**:监控告警规则配置
|
||||
- **邮件告警配置.md**:邮件告警配置
|
||||
- **钉钉告警配置.md**:钉钉群告警配置
|
||||
- **告警处理流程.md**:告警处理流程和规范
|
||||
|
||||
## 7. 安全配置
|
||||
|
||||
### 安全加固
|
||||
|
||||
- **系统安全加固.md**:操作系统安全加固
|
||||
- **应用安全配置.md**:应用层安全配置
|
||||
- **网络安全配置.md**:网络安全和防火墙配置
|
||||
- **数据安全配置.md**:数据加密和访问控制
|
||||
|
||||
### 证书管理
|
||||
|
||||
- **SSL 证书管理.md**:SSL 证书申请和管理
|
||||
- **证书自动更新.md**:证书自动更新配置
|
||||
- **证书监控告警.md**:证书过期监控告警
|
||||
|
||||
## 8. 备份和恢复
|
||||
|
||||
### 备份策略
|
||||
|
||||
- **数据备份策略.md**:数据库备份策略
|
||||
- **文件备份策略.md**:应用文件备份策略
|
||||
- **配置备份策略.md**:配置文件备份策略
|
||||
- **备份验证流程.md**:备份有效性验证
|
||||
|
||||
### 灾难恢复
|
||||
|
||||
- **灾难恢复计划.md**:灾难恢复预案
|
||||
- **数据恢复步骤.md**:数据恢复详细步骤
|
||||
- **应用恢复步骤.md**:应用服务恢复步骤
|
||||
- **恢复测试计划.md**:定期恢复测试计划
|
||||
|
||||
## 9. 性能调优
|
||||
|
||||
### 应用性能调优
|
||||
|
||||
- **JVM 参数调优.md**:Java 虚拟机参数调优
|
||||
- **连接池优化.md**:数据库连接池优化
|
||||
- **缓存优化.md**:Redis 缓存优化策略
|
||||
- **GC 调优.md**:垃圾回收器调优
|
||||
|
||||
### 系统性能调优
|
||||
|
||||
- **操作系统调优.md**:Linux 系统性能调优
|
||||
- **网络调优.md**:网络参数调优
|
||||
- **存储调优.md**:磁盘 I/O 性能调优
|
||||
|
||||
## 10. 运维手册
|
||||
|
||||
### 日常运维
|
||||
|
||||
- **日常巡检清单.md**:系统日常巡检项目
|
||||
- **性能监控指标.md**:关键性能指标监控
|
||||
- **日志分析手册.md**:系统日志分析方法
|
||||
- **故障排查手册.md**:常见故障排查步骤
|
||||
|
||||
### 应急处理
|
||||
|
||||
- **应急响应流程.md**:系统故障应急响应流程
|
||||
- **故障处理预案.md**:各类故障处理预案
|
||||
- **服务降级方案.md**:系统负载过高时的降级方案
|
||||
- **数据恢复预案.md**:数据丢失或损坏恢复预案
|
||||
|
||||
### 变更管理
|
||||
|
||||
- **变更申请流程.md**:系统变更申请流程
|
||||
- **变更风险评估.md**:变更风险评估标准
|
||||
- **变更回滚计划.md**:变更失败回滚计划
|
||||
- **变更后验证.md**:变更后系统验证清单
|
||||
|
||||
## 11. 环境清单
|
||||
|
||||
### 软件版本清单
|
||||
|
||||
```
|
||||
操作系统: CentOS 7+ / Ubuntu 18.04+
|
||||
Java: OpenJDK 17/21
|
||||
Maven: 3.6+
|
||||
Node.js: 16+
|
||||
MySQL: 8.0+
|
||||
Redis: 6.0+
|
||||
Nginx: 1.18+
|
||||
Docker: 20.10+
|
||||
```
|
||||
|
||||
### 硬件配置建议
|
||||
|
||||
```
|
||||
开发环境:
|
||||
CPU: 4核+
|
||||
内存: 8GB+
|
||||
存储: 100GB+
|
||||
|
||||
测试环境:
|
||||
CPU: 8核+
|
||||
内存: 16GB+
|
||||
存储: 500GB+
|
||||
|
||||
生产环境:
|
||||
CPU: 16核+
|
||||
内存: 32GB+
|
||||
存储: 1TB+
|
||||
网络: 1Gbps+
|
||||
```
|
||||
|
||||
### 端口规划
|
||||
|
||||
```
|
||||
应用服务: 8080
|
||||
数据库: 3306
|
||||
Redis: 6379
|
||||
Nginx: 80, 443
|
||||
监控: 9090, 3000
|
||||
```
|
||||
|
||||
## 12. 部署检查清单
|
||||
|
||||
### 部署前检查
|
||||
|
||||
- [ ] 服务器资源充足
|
||||
- [ ] 网络连通性正常
|
||||
- [ ] 域名解析配置
|
||||
- [ ] SSL 证书准备
|
||||
- [ ] 数据库初始化
|
||||
- [ ] 配置文件检查
|
||||
- [ ] 备份计划确认
|
||||
|
||||
### 部署后验证
|
||||
|
||||
- [ ] 应用启动正常
|
||||
- [ ] 健康检查通过
|
||||
- [ ] 核心功能验证
|
||||
- [ ] 性能指标正常
|
||||
- [ ] 日志输出正常
|
||||
- [ ] 监控告警正常
|
||||
- [ ] 备份任务正常
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有密码和密钥必须加密存储
|
||||
2. 生产环境配置需要经过安全审核
|
||||
3. 部署过程需要详细记录和备份
|
||||
4. 关键操作需要双人确认
|
||||
5. 部署后需要进行全面的功能验证
|
||||
6. 必须有完整的回滚方案
|
||||
@@ -0,0 +1,113 @@
|
||||
# 设计文档目录
|
||||
|
||||
## 目录说明
|
||||
|
||||
此目录用于存放项目的设计相关文档,包括系统设计、数据库设计、接口设计等。
|
||||
|
||||
## 1. 系统设计文档
|
||||
|
||||
`系统设计文档`:整体系统架构设计和模块设计
|
||||
|
||||
### 文档结构:
|
||||
- **系统架构设计.md**:整体架构设计方案
|
||||
- **模块设计文档.md**:各功能模块详细设计
|
||||
- **技术选型说明.md**:技术栈选择和说明
|
||||
- **部署架构设计.md**:部署架构和环境设计
|
||||
|
||||
## 2. 数据库设计文档
|
||||
|
||||
`数据库设计文档`:数据库结构设计和字段说明
|
||||
|
||||
### 设计文档:
|
||||
- **数据库设计说明.md**:数据库整体设计说明
|
||||
- **ER图设计文档.md**:实体关系图设计
|
||||
- **表结构设计.md**:详细表结构和字段说明
|
||||
- **数据字典.md**:数据字典和编码规范
|
||||
|
||||
### SQL脚本:
|
||||
- DDL/ - 数据定义语言脚本
|
||||
- create_tables.sql - 建表脚本
|
||||
- alter_tables.sql - 修改表结构脚本
|
||||
- indexes.sql - 索引创建脚本
|
||||
- DML/ - 数据操作语言脚本
|
||||
- init_data.sql - 初始化数据脚本
|
||||
- dict_data.sql - 字典数据脚本
|
||||
- test_data.sql - 测试数据脚本
|
||||
|
||||
## 3. 接口设计文档
|
||||
|
||||
`接口设计文档`:API接口设计和数据格式定义
|
||||
|
||||
### 设计文档:
|
||||
- **API接口设计规范.md**:接口设计规范和约定
|
||||
- **接口文档模板.md**:标准接口文档模板
|
||||
- **数据格式规范.md**:请求响应数据格式规范
|
||||
- **错误码定义.md**:统一错误码定义
|
||||
|
||||
### 模块接口:
|
||||
- system/ - 系统管理模块接口
|
||||
- auth/ - 认证授权模块接口
|
||||
- tenant/ - 多租户模块接口
|
||||
- workflow/ - 工作流模块接口
|
||||
- custom/ - 自定义业务模块接口
|
||||
|
||||
## 4. 安全设计文档
|
||||
|
||||
`安全设计文档`:系统安全设计和防护方案
|
||||
|
||||
### 设计文档:
|
||||
- **权限设计方案.md**:权限模型和访问控制
|
||||
- **数据安全设计.md**:数据加密和脱敏方案
|
||||
- **接口安全设计.md**:接口安全防护方案
|
||||
- **审计日志设计.md**:操作审计和日志设计
|
||||
|
||||
## 5. 性能设计文档
|
||||
|
||||
`性能设计文档`:系统性能优化设计
|
||||
|
||||
### 设计文档:
|
||||
- **缓存设计方案.md**:缓存策略和实现方案
|
||||
- **数据库优化设计.md**:数据库性能优化设计
|
||||
- **分布式设计方案.md**:分布式架构设计
|
||||
- **监控设计方案.md**:性能监控和告警设计
|
||||
|
||||
## 文档管理规范
|
||||
|
||||
### 设计原则
|
||||
- **可扩展性**:设计支持功能扩展和技术升级
|
||||
- **可维护性**:清晰的模块划分和接口定义
|
||||
- **可测试性**:支持单元测试和集成测试
|
||||
- **安全性**:全面的安全防护设计
|
||||
- **性能优化**:合理的性能优化策略
|
||||
|
||||
### 文档规范
|
||||
- 统一使用Markdown格式
|
||||
- 包含完整的设计说明和实现方案
|
||||
- 提供清晰的图表和示例
|
||||
- 定期更新和维护文档
|
||||
|
||||
### 版本控制
|
||||
- 重大设计变更需要版本升级
|
||||
- 保留设计变更历史记录
|
||||
- 设计文档与代码版本同步
|
||||
|
||||
## 设计评审
|
||||
|
||||
### 评审流程
|
||||
1. 设计文档编写完成
|
||||
2. 技术团队内部评审
|
||||
3. 架构师确认设计方案
|
||||
4. 项目负责人最终审批
|
||||
|
||||
### 评审要点
|
||||
- 设计方案的合理性和可行性
|
||||
- 技术选型的适当性
|
||||
- 性能和安全考虑
|
||||
- 可扩展性和维护性
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有重要设计决策都需要文档记录
|
||||
2. 设计变更需要评估影响范围
|
||||
3. 设计文档需要与实际实现保持同步
|
||||
4. 定期review设计文档的有效性
|
||||
@@ -0,0 +1,125 @@
|
||||
# 数据库设计目录
|
||||
|
||||
## 目录说明
|
||||
|
||||
此目录用于存放项目的数据库设计相关文档和脚本文件。
|
||||
|
||||
## 📁 目录结构
|
||||
|
||||
```
|
||||
database/
|
||||
├── README.md # 本说明文件
|
||||
├── hzdyjs_xg.sql # 完整数据库模型 (当前系统的完整表结构)
|
||||
├── database_msg.md # 数据库环境配置信息
|
||||
├── 数据库设计说明.md # 整体数据库设计文档
|
||||
├── ER图设计文档.md # 实体关系图设计
|
||||
├── 表结构设计.md # 详细表结构和字段说明
|
||||
├── 数据字典.md # 数据字典和编码规范
|
||||
├── DDL/ # 数据定义语言脚本
|
||||
│ ├── system/ # 系统核心表
|
||||
│ │ ├── sys_tables.sql # 系统管理表
|
||||
│ │ ├── auth_tables.sql # 权限认证表
|
||||
│ │ └── tenant_tables.sql # 多租户表
|
||||
│ ├── business/ # 业务模块表
|
||||
│ │ ├── hq_tables.sql # 后勤管理相关表
|
||||
│ │ └── custom_tables.sql # 自定义业务表
|
||||
│ ├── indexes.sql # 索引创建脚本
|
||||
│ └── constraints.sql # 约束创建脚本
|
||||
├── DML/ # 数据操作语言脚本
|
||||
│ ├── init_data.sql # 初始化数据脚本
|
||||
│ ├── dict_data.sql # 字典数据脚本
|
||||
│ ├── menu_data.sql # 菜单权限数据
|
||||
│ └── test_data.sql # 测试数据脚本
|
||||
├── models/ # 数据模型文件
|
||||
│ ├── erd/ # ER图文件
|
||||
│ │ ├── system_erd.drawio # 系统模块ER图
|
||||
│ │ ├── business_erd.drawio # 业务模块ER图
|
||||
│ │ └── complete_erd.png # 完整ER图导出
|
||||
│ └── schema/ # 数据库schema文件
|
||||
│ ├── mysql_schema.sql # MySQL数据库schema
|
||||
│ ├── oracle_schema.sql # Oracle数据库schema
|
||||
│ └── postgres_schema.sql # PostgreSQL数据库schema
|
||||
└── migration/ # 数据库迁移脚本
|
||||
├── v5.0_to_v5.1/ # 版本升级脚本
|
||||
├── v5.1_to_v5.2/
|
||||
└── rollback/ # 回滚脚本
|
||||
```
|
||||
|
||||
## 🎯 不同类型数据模型的存放建议
|
||||
|
||||
### 0. **当前完整数据库模型**
|
||||
|
||||
- **主模型文件**: `docs/design/database/hzdyjs_xg.sql`
|
||||
- **内容**: 当前系统的完整数据库表结构,包含所有业务表和系统表
|
||||
- **说明**: 包含宿舍管理 (bed*\*, dormitory*\_)、工作流 (flow\_\_) 等业务模块
|
||||
- **环境配置**: `docs/design/database/database_msg.md` 包含开发环境数据库连接信息
|
||||
|
||||
### 1. **系统核心数据模型**
|
||||
|
||||
- **位置**: `docs/design/database/DDL/system/`
|
||||
- **内容**: 系统管理、权限认证、多租户等核心表结构
|
||||
- **示例**: `sys_user`, `sys_role`, `sys_menu`, `sys_tenant`
|
||||
|
||||
### 2. **业务模块数据模型**
|
||||
|
||||
- **位置**: `docs/design/database/DDL/business/`
|
||||
- **内容**: 具体业务功能相关的表结构
|
||||
- **示例**: 后勤管理、报告厅预约、满意度调查等
|
||||
|
||||
### 3. **初始化和测试数据**
|
||||
|
||||
- **位置**: `docs/design/database/DML/`
|
||||
- **内容**: 系统初始化数据、字典数据、测试数据等
|
||||
|
||||
### 4. **ER 图和设计文档**
|
||||
|
||||
- **位置**: `docs/design/database/models/`
|
||||
- **内容**: 数据库设计图表、关系图、设计说明等
|
||||
|
||||
### 5. **版本升级脚本**
|
||||
|
||||
- **位置**: `docs/design/database/migration/`
|
||||
- **内容**: 数据库版本升级脚本、数据迁移脚本等
|
||||
|
||||
## 🔄 与现有目录的关联
|
||||
|
||||
### 现有 SQL 脚本位置
|
||||
|
||||
- **当前完整模型**: `docs/design/database/hzdyjs_xg.sql` → 当前系统的完整数据库模型 (3638 行)
|
||||
- **环境配置**: `docs/design/database/database_msg.md` → 开发环境数据库连接信息
|
||||
- **框架主脚本**: `script/sql/ry_vue_5.X.sql` → 参考并拆分到对应模块
|
||||
- **更新脚本**: `script/sql/update/` → 整理到 migration 目录
|
||||
- **业务脚本**: `docs/requirements/*/` → 移动到 business 目录
|
||||
|
||||
### 同步规则
|
||||
|
||||
1. **新表设计**: 先在`docs/design/database/`中设计,再更新到`script/sql/`
|
||||
2. **表结构变更**: 同时更新设计文档和升级脚本
|
||||
- **必须同步更新**: `docs/design/database/hzdyjs_xg.sql` 中的表结构
|
||||
- **环境配置变更**: 及时更新 `docs/design/database/database_msg.md`
|
||||
3. **文档维护**: 每次数据库变更都要更新相关设计文档
|
||||
|
||||
## 📝 文件命名规范
|
||||
|
||||
### DDL 脚本命名
|
||||
|
||||
- **系统表**: `sys_*.sql` (如: sys_user.sql)
|
||||
- **业务表**: `模块前缀_*.sql` (如: hq_survey.sql)
|
||||
- **索引脚本**: `idx_表名.sql` (如: idx_sys_user.sql)
|
||||
|
||||
### 文档命名
|
||||
|
||||
- **设计文档**: 使用中文描述性名称
|
||||
- **ER 图文件**: `模块名_erd.drawio`
|
||||
- **导出图片**: `模块名_erd.png`
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
1. **版本控制**: 所有 DDL 变更都要记录版本和变更原因
|
||||
2. **多数据库支持**: 考虑 MySQL、Oracle、PostgreSQL 的兼容性
|
||||
3. **命名规范**: 遵循框架统一的命名规范(下划线命名法)
|
||||
4. **文档同步**: 表结构变更必须同时更新设计文档
|
||||
- **关键文件**: `hzdyjs_xg.sql` 必须保持最新的完整表结构
|
||||
- **环境安全**: `database_msg.md` 中的密码信息注意安全保护
|
||||
5. **备份策略**: 重要脚本变更前要备份现有版本
|
||||
6. **当前系统参考**: 新增表结构应参考 `hzdyjs_xg.sql` 中现有表的设计规范
|
||||
@@ -0,0 +1,5 @@
|
||||
# 研发环境的数据库信息
|
||||
|
||||
url: jdbc:mysql://47.99.164.66:3306/hzdyjs_xg
|
||||
username: root
|
||||
password: hn02le.34lkdLKD
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,384 @@
|
||||
# 开发文档目录
|
||||
|
||||
## 目录说明
|
||||
|
||||
此目录用于存放项目的开发相关文档,包括开发指南、代码样例、问题记录等。
|
||||
|
||||
## 1. 开发环境搭建
|
||||
|
||||
### 环境准备
|
||||
|
||||
- **开发环境搭建指南.md**:完整的开发环境搭建步骤
|
||||
- **IDE 配置指南.md**:IntelliJ IDEA 开发环境配置
|
||||
- **Maven 配置.md**:Maven 环境配置和私服配置
|
||||
- **Git 配置.md**:Git 版本控制配置
|
||||
|
||||
### 工具安装
|
||||
|
||||
- **JDK 安装配置.md**:Java 开发环境安装
|
||||
- **Node.js 安装配置.md**:前端开发环境安装
|
||||
- **数据库安装.md**:MySQL 和 Redis 安装配置
|
||||
- **开发工具推荐.md**:推荐的开发工具和插件
|
||||
|
||||
### 环境配置示例:
|
||||
|
||||
```bash
|
||||
# 开发环境启动脚本示例
|
||||
#!/bin/bash
|
||||
|
||||
# 启动MySQL
|
||||
sudo systemctl start mysql
|
||||
|
||||
# 启动Redis
|
||||
sudo systemctl start redis
|
||||
|
||||
# 启动后端应用
|
||||
cd ruoyi-admin
|
||||
mvn spring-boot:run -Dspring-boot.run.profiles=dev
|
||||
|
||||
# 启动前端应用
|
||||
cd ../plus-ui
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## 2. 开发规范和指南
|
||||
|
||||
### 代码规范
|
||||
|
||||
- **Java 代码规范.md**:Java 代码编写规范
|
||||
- **前端代码规范.md**:Vue3+TypeScript 代码规范
|
||||
- **数据库设计规范.md**:数据库表设计规范
|
||||
- **API 接口规范.md**:RESTful API 设计规范
|
||||
|
||||
### 命名规范
|
||||
|
||||
- **包命名规范.md**:Java 包命名规范
|
||||
- **类和方法命名.md**:类和方法命名规范
|
||||
- **数据库命名规范.md**:表和字段命名规范
|
||||
- **前端命名规范.md**:组件和方法命名规范
|
||||
|
||||
### Git 规范
|
||||
|
||||
- **Git 分支规范.md**:Git 分支管理规范
|
||||
- **提交信息规范.md**:Git 提交信息格式规范
|
||||
- **代码审查流程.md**:Code Review 流程和标准
|
||||
|
||||
## 3. 架构设计指南
|
||||
|
||||
### 系统架构
|
||||
|
||||
- **整体架构设计.md**:系统整体架构设计说明
|
||||
- **模块化设计.md**:模块化架构设计原则
|
||||
- **分层架构设计.md**:分层架构设计和职责划分
|
||||
- **微服务架构.md**:微服务架构设计指南
|
||||
|
||||
### 设计模式
|
||||
|
||||
- **常用设计模式.md**:项目中使用的设计模式
|
||||
- **Spring 设计模式.md**:Spring 框架中的设计模式
|
||||
- **业务设计模式.md**:业务层常用设计模式
|
||||
|
||||
### 架构示例:
|
||||
|
||||
```java
|
||||
// 标准Controller示例
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/users")
|
||||
@Tag(name = "用户管理", description = "用户管理相关接口")
|
||||
public class UserController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private IUserService userService;
|
||||
|
||||
@SaCheckPermission("system:user:list")
|
||||
@GetMapping
|
||||
@Operation(summary = "查询用户列表", description = "分页查询用户信息")
|
||||
public R<PageResult<UserVO>> list(@Valid UserQueryDTO queryDTO) {
|
||||
return R.ok(userService.queryPageList(queryDTO));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 4. 功能开发指南
|
||||
|
||||
### 新功能开发流程
|
||||
|
||||
- **功能开发流程.md**:从需求到上线的完整流程
|
||||
- **业务模块开发.md**:新业务模块开发步骤
|
||||
- **接口开发指南.md**:API 接口开发步骤
|
||||
- **前端页面开发.md**:前端页面开发步骤
|
||||
|
||||
### 数据库开发
|
||||
|
||||
- **数据库设计流程.md**:数据库表设计流程
|
||||
- **SQL 编写规范.md**:SQL 语句编写规范
|
||||
- **数据迁移指南.md**:数据库迁移指南
|
||||
- **性能优化指南.md**:SQL 性能优化指南
|
||||
|
||||
### 缓存开发
|
||||
|
||||
- **Redis 使用指南.md**:Redis 缓存使用指南
|
||||
- **缓存策略设计.md**:缓存策略设计原则
|
||||
- **分布式锁使用.md**:分布式锁使用指南
|
||||
|
||||
## 5. 代码样例和模板
|
||||
|
||||
### 后端代码模板
|
||||
|
||||
- **Controller 模板.md**:标准 Controller 代码模板
|
||||
- **Service 模板.md**:标准 Service 代码模板
|
||||
- **Mapper 模板.md**:标准 Mapper 代码模板
|
||||
- **Entity 模板.md**:标准实体类代码模板
|
||||
|
||||
### 前端代码模板
|
||||
|
||||
- **Vue 组件模板.md**:标准 Vue 组件模板
|
||||
- **API 调用模板.md**:API 接口调用模板
|
||||
- **表单组件模板.md**:表单组件开发模板
|
||||
- **表格组件模板.md**:表格组件开发模板
|
||||
|
||||
### 配置文件模板
|
||||
|
||||
- **application.yml 模板.md**:应用配置模板
|
||||
- **logback 配置模板.md**:日志配置模板
|
||||
- **Dockerfile 模板.md**:Docker 镜像构建模板
|
||||
|
||||
### Service 层代码示例:
|
||||
|
||||
```java
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class UserServiceImpl implements IUserService {
|
||||
|
||||
@Autowired
|
||||
private UserMapper userMapper;
|
||||
|
||||
@Override
|
||||
@DataPermission(deptAlias = "d", userAlias = "u")
|
||||
public PageResult<UserVO> queryPageList(UserQueryDTO queryDTO) {
|
||||
LambdaQueryWrapper<SysUser> lqw = buildQueryWrapper(queryDTO);
|
||||
Page<UserVO> result = userMapper.selectVoPage(queryDTO.toPage(), lqw);
|
||||
return PageResult.build(result);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<SysUser> buildQueryWrapper(UserQueryDTO queryDTO) {
|
||||
return Wrappers.<SysUser>lambdaQuery()
|
||||
.like(StringUtils.isNotBlank(queryDTO.getUserName()),
|
||||
SysUser::getUserName, queryDTO.getUserName())
|
||||
.eq(StringUtils.isNotBlank(queryDTO.getStatus()),
|
||||
SysUser::getStatus, queryDTO.getStatus())
|
||||
.between(queryDTO.getCreateTime() != null && queryDTO.getCreateTime().length == 2,
|
||||
SysUser::getCreateTime,
|
||||
queryDTO.getCreateTime()[0], queryDTO.getCreateTime()[1]);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 6. 第三方集成指南
|
||||
|
||||
### 权限认证集成
|
||||
|
||||
- **Sa-Token 集成.md**:Sa-Token 权限框架集成
|
||||
- **JWT 配置.md**:JWT 令牌配置和使用
|
||||
- **第三方登录.md**:第三方登录集成指南
|
||||
- **单点登录.md**:SSO 单点登录配置
|
||||
|
||||
### 消息服务集成
|
||||
|
||||
- **短信服务集成.md**:短信服务集成指南
|
||||
- **邮件服务集成.md**:邮件服务集成指南
|
||||
- **消息中间件.md**:消息队列集成指南
|
||||
|
||||
### 存储服务集成
|
||||
|
||||
- **文件存储集成.md**:MinIO 文件存储集成
|
||||
- **云存储集成.md**:阿里云 OSS 等云存储集成
|
||||
- **图片处理.md**:图片上传和处理
|
||||
|
||||
## 7. 测试开发指南
|
||||
|
||||
### 单元测试
|
||||
|
||||
- **单元测试编写.md**:单元测试编写指南
|
||||
- **Mock 测试.md**:Mock 对象使用指南
|
||||
- **测试用例设计.md**:测试用例设计原则
|
||||
- **测试覆盖率.md**:测试覆盖率要求和检查
|
||||
|
||||
### 集成测试
|
||||
|
||||
- **集成测试编写.md**:集成测试编写指南
|
||||
- **数据库测试.md**:数据库操作测试
|
||||
- **API 测试.md**:API 接口测试
|
||||
|
||||
### 测试示例:
|
||||
|
||||
```java
|
||||
@SpringBootTest
|
||||
@Transactional
|
||||
@Rollback
|
||||
class UserServiceTest {
|
||||
|
||||
@Autowired
|
||||
private IUserService userService;
|
||||
|
||||
@Test
|
||||
@DisplayName("测试用户查询功能")
|
||||
void testQueryUser() {
|
||||
// Given
|
||||
UserQueryDTO queryDTO = new UserQueryDTO();
|
||||
queryDTO.setUserName("admin");
|
||||
|
||||
// When
|
||||
PageResult<UserVO> result = userService.queryPageList(queryDTO);
|
||||
|
||||
// Then
|
||||
assertThat(result).isNotNull();
|
||||
assertThat(result.getRecords()).isNotEmpty();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 8. 性能优化指南
|
||||
|
||||
### 代码优化
|
||||
|
||||
- **算法优化.md**:常见算法优化技巧
|
||||
- **集合框架优化.md**:Java 集合使用优化
|
||||
- **字符串优化.md**:字符串操作优化
|
||||
- **反射优化.md**:反射操作优化
|
||||
|
||||
### 数据库优化
|
||||
|
||||
- **查询优化.md**:SQL 查询优化指南
|
||||
- **索引优化.md**:数据库索引优化
|
||||
- **连接池优化.md**:数据库连接池优化
|
||||
- **分页优化.md**:大数据量分页优化
|
||||
|
||||
### 缓存优化
|
||||
|
||||
- **缓存设计.md**:缓存设计最佳实践
|
||||
- **缓存穿透.md**:缓存穿透问题解决
|
||||
- **缓存雪崩.md**:缓存雪崩问题解决
|
||||
- **缓存击穿.md**:缓存击穿问题解决
|
||||
|
||||
## 9. 问题记录和解决方案
|
||||
|
||||
### 常见问题
|
||||
|
||||
- **启动问题.md**:应用启动常见问题
|
||||
- **配置问题.md**:配置相关常见问题
|
||||
- **数据库问题.md**:数据库连接和操作问题
|
||||
- **缓存问题.md**:Redis 缓存相关问题
|
||||
|
||||
### 框架问题
|
||||
|
||||
- **Spring Boot 问题.md**:Spring Boot 框架问题
|
||||
- **MyBatis Plus 问题.md**:MyBatis Plus 相关问题
|
||||
- **Sa-Token 问题.md**:Sa-Token 权限框架问题
|
||||
- **前端框架问题.md**:Vue3 相关问题
|
||||
|
||||
### 部署问题
|
||||
|
||||
- **Docker 问题.md**:Docker 部署相关问题
|
||||
- **Nginx 问题.md**:Nginx 配置相关问题
|
||||
- **SSL 证书问题.md**:SSL 证书配置问题
|
||||
|
||||
## 10. 版本升级指南
|
||||
|
||||
### 框架升级
|
||||
|
||||
- **Spring Boot 升级.md**:Spring Boot 版本升级指南
|
||||
- **Java 版本升级.md**:Java 版本升级指南
|
||||
- **依赖升级.md**:第三方依赖升级指南
|
||||
|
||||
### 数据库升级
|
||||
|
||||
- **MySQL 升级.md**:MySQL 版本升级指南
|
||||
- **Redis 升级.md**:Redis 版本升级指南
|
||||
- **数据迁移.md**:数据库结构迁移指南
|
||||
|
||||
### 兼容性处理
|
||||
|
||||
- **向后兼容.md**:向后兼容性处理
|
||||
- **接口兼容.md**:API 接口兼容性处理
|
||||
- **数据兼容.md**:数据格式兼容性处理
|
||||
|
||||
## 11. 开发工具和插件
|
||||
|
||||
### IDEA 插件推荐
|
||||
|
||||
```
|
||||
必装插件:
|
||||
- Lombok
|
||||
- MyBatis Plus
|
||||
- Alibaba Java规约检查
|
||||
- SonarLint
|
||||
- GitToolBox
|
||||
- Rainbow Brackets
|
||||
- Translation
|
||||
|
||||
可选插件:
|
||||
- JRebel (热部署)
|
||||
- Sequence Diagram (时序图)
|
||||
- RestfulTool (接口测试)
|
||||
- Database Navigator (数据库)
|
||||
```
|
||||
|
||||
### 开发工具推荐
|
||||
|
||||
- **数据库工具**: Navicat Premium / DataGrip
|
||||
- **Redis 工具**: RedisDesktopManager / AnotherRedisDesktopManager
|
||||
- **API 工具**: Postman / Insomnia
|
||||
- **Git 工具**: SourceTree / GitKraken
|
||||
- **文档工具**: Typora / Mark Text
|
||||
|
||||
### 代码质量工具
|
||||
|
||||
- **静态分析**: SonarQube
|
||||
- **代码格式**: Google Java Format
|
||||
- **依赖检查**: OWASP Dependency Check
|
||||
- **测试覆盖**: JaCoCo
|
||||
|
||||
## 12. 快速开始
|
||||
|
||||
### 项目初始化
|
||||
|
||||
```bash
|
||||
# 1. 克隆项目
|
||||
git clone https://gitee.com/dromara/RuoYi-Vue-Plus.git
|
||||
|
||||
# 2. 导入数据库
|
||||
mysql -u root -p < script/sql/ry_vue_5.X.sql
|
||||
|
||||
# 3. 修改配置
|
||||
# 编辑 ruoyi-admin/src/main/resources/application-dev.yml
|
||||
# 修改数据库连接信息
|
||||
|
||||
# 4. 启动后端
|
||||
cd ruoyi-admin
|
||||
mvn spring-boot:run
|
||||
|
||||
# 5. 启动前端
|
||||
cd plus-ui
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 新模块开发步骤
|
||||
|
||||
1. **需求分析**: 明确功能需求和技术要求
|
||||
2. **数据库设计**: 设计表结构和关系
|
||||
3. **代码生成**: 使用代码生成器生成基础代码
|
||||
4. **业务开发**: 实现具体业务逻辑
|
||||
5. **前端开发**: 开发前端页面和交互
|
||||
6. **测试验证**: 编写测试用例并验证
|
||||
7. **文档更新**: 更新相关文档
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 开发前必须阅读框架文档和开发规范
|
||||
2. 新功能开发需要编写对应的测试用例
|
||||
3. 代码提交前需要通过代码规范检查
|
||||
4. 重要功能变更需要进行 Code Review
|
||||
5. 及时更新开发文档和接口文档
|
||||
6. 遵循安全编码规范,避免安全漏洞
|
||||
@@ -0,0 +1,220 @@
|
||||
# 中间件配置文档
|
||||
|
||||
## 目录说明
|
||||
|
||||
此目录用于存放项目使用的各种中间件配置文档和最佳实践。
|
||||
|
||||
## 1. 数据库配置
|
||||
|
||||
### MySQL配置
|
||||
- **mysql-config.md**:MySQL数据库配置和优化
|
||||
- **mysql-cluster.md**:MySQL集群部署方案
|
||||
- **mysql-backup.md**:MySQL备份和恢复策略
|
||||
- **mysql-monitor.md**:MySQL监控和性能调优
|
||||
|
||||
### 多数据库支持
|
||||
- **oracle-config.md**:Oracle数据库配置
|
||||
- **postgresql-config.md**:PostgreSQL数据库配置
|
||||
- **sqlserver-config.md**:SQL Server数据库配置
|
||||
|
||||
### 配置示例:
|
||||
```yaml
|
||||
# MySQL开发环境配置示例
|
||||
spring:
|
||||
datasource:
|
||||
dynamic:
|
||||
primary: master
|
||||
datasource:
|
||||
master:
|
||||
url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8
|
||||
username: root
|
||||
password: password
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
```
|
||||
|
||||
## 2. Redis配置
|
||||
|
||||
### Redis部署
|
||||
- **redis-standalone.md**:Redis单机部署配置
|
||||
- **redis-cluster.md**:Redis集群部署配置
|
||||
- **redis-sentinel.md**:Redis哨兵模式配置
|
||||
- **redis-optimize.md**:Redis性能优化
|
||||
|
||||
### Redisson配置
|
||||
- **redisson-config.md**:Redisson客户端配置
|
||||
- **redisson-lock.md**:分布式锁配置
|
||||
- **redisson-cache.md**:缓存配置
|
||||
|
||||
### 配置示例:
|
||||
```yaml
|
||||
# Redis配置示例
|
||||
spring:
|
||||
data:
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
database: 0
|
||||
password: password
|
||||
timeout: 10s
|
||||
```
|
||||
|
||||
## 3. 消息中间件配置
|
||||
|
||||
### RabbitMQ配置
|
||||
- **rabbitmq-install.md**:RabbitMQ安装和配置
|
||||
- **rabbitmq-cluster.md**:RabbitMQ集群配置
|
||||
- **rabbitmq-monitor.md**:RabbitMQ监控配置
|
||||
|
||||
### RocketMQ配置
|
||||
- **rocketmq-install.md**:RocketMQ安装和配置
|
||||
- **rocketmq-cluster.md**:RocketMQ集群配置
|
||||
|
||||
### Kafka配置
|
||||
- **kafka-install.md**:Kafka安装和配置
|
||||
- **kafka-cluster.md**:Kafka集群配置
|
||||
|
||||
## 4. 监控组件配置
|
||||
|
||||
### Spring Boot Admin
|
||||
- **spring-boot-admin.md**:服务监控配置
|
||||
- **admin-security.md**:监控安全配置
|
||||
|
||||
### Prometheus + Grafana
|
||||
- **prometheus-config.md**:Prometheus监控配置
|
||||
- **grafana-dashboard.md**:Grafana仪表板配置
|
||||
|
||||
### ELK Stack
|
||||
- **elasticsearch-config.md**:Elasticsearch配置
|
||||
- **logstash-config.md**:Logstash日志收集配置
|
||||
- **kibana-config.md**:Kibana日志分析配置
|
||||
|
||||
## 5. 反向代理和负载均衡
|
||||
|
||||
### Nginx配置
|
||||
- **nginx-install.md**:Nginx安装和基础配置
|
||||
- **nginx-load-balance.md**:负载均衡配置
|
||||
- **nginx-ssl.md**:SSL证书配置
|
||||
- **nginx-cache.md**:静态资源缓存配置
|
||||
|
||||
### 配置示例:
|
||||
```nginx
|
||||
# Nginx负载均衡配置示例
|
||||
upstream backend {
|
||||
server 127.0.0.1:8080 weight=1;
|
||||
server 127.0.0.1:8081 weight=1;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.com;
|
||||
|
||||
location / {
|
||||
proxy_pass http://backend;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 6. 存储服务配置
|
||||
|
||||
### MinIO配置
|
||||
- **minio-install.md**:MinIO安装和配置
|
||||
- **minio-cluster.md**:MinIO集群配置
|
||||
- **minio-backup.md**:MinIO备份策略
|
||||
|
||||
### 其他存储
|
||||
- **aliyun-oss.md**:阿里云OSS配置
|
||||
- **qiniu-cloud.md**:七牛云存储配置
|
||||
- **tencent-cos.md**:腾讯云COS配置
|
||||
|
||||
## 7. 短信和邮件服务
|
||||
|
||||
### 短信服务配置
|
||||
- **aliyun-sms.md**:阿里云短信服务配置
|
||||
- **tencent-sms.md**:腾讯云短信服务配置
|
||||
- **sms4j-config.md**:短信融合包配置
|
||||
|
||||
### 邮件服务配置
|
||||
- **email-config.md**:邮件服务配置
|
||||
- **email-template.md**:邮件模板配置
|
||||
|
||||
## 8. 安全组件配置
|
||||
|
||||
### Sa-Token配置
|
||||
- **satoken-config.md**:Sa-Token权限配置
|
||||
- **satoken-jwt.md**:JWT配置
|
||||
- **satoken-sso.md**:单点登录配置
|
||||
|
||||
### 第三方认证
|
||||
- **oauth2-config.md**:OAuth2认证配置
|
||||
- **ldap-config.md**:LDAP认证配置
|
||||
|
||||
## 环境配置
|
||||
|
||||
### 开发环境
|
||||
- **dev-environment.md**:开发环境搭建指南
|
||||
- **docker-compose-dev.yml**:开发环境Docker配置
|
||||
|
||||
### 测试环境
|
||||
- **test-environment.md**:测试环境配置
|
||||
- **docker-compose-test.yml**:测试环境Docker配置
|
||||
|
||||
### 生产环境
|
||||
- **prod-environment.md**:生产环境配置
|
||||
- **docker-compose-prod.yml**:生产环境Docker配置
|
||||
- **k8s-deployment.md**:Kubernetes部署配置
|
||||
|
||||
## 配置管理规范
|
||||
|
||||
### 配置原则
|
||||
1. **环境隔离**:不同环境使用不同配置
|
||||
2. **安全优先**:敏感信息加密存储
|
||||
3. **版本控制**:配置变更进行版本管理
|
||||
4. **监控告警**:关键配置项设置监控
|
||||
|
||||
### 配置规范
|
||||
- 使用配置中心统一管理
|
||||
- 敏感信息不直接写在配置文件中
|
||||
- 配置变更需要审核流程
|
||||
- 定期备份配置文件
|
||||
|
||||
### 密码管理
|
||||
- 数据库密码定期更换
|
||||
- Redis密码必须设置
|
||||
- 中间件默认密码必须修改
|
||||
- 生产环境密码复杂度要求
|
||||
|
||||
## 性能调优
|
||||
|
||||
### JVM调优
|
||||
- **jvm-config.md**:JVM参数配置和调优
|
||||
- **gc-config.md**:垃圾回收器配置
|
||||
|
||||
### 数据库调优
|
||||
- 连接池参数优化
|
||||
- SQL语句性能优化
|
||||
- 索引设计优化
|
||||
|
||||
### 缓存调优
|
||||
- Redis内存使用优化
|
||||
- 缓存过期策略优化
|
||||
- 缓存穿透防护
|
||||
|
||||
## 故障排查
|
||||
|
||||
### 常见问题
|
||||
- **common-issues.md**:常见问题和解决方案
|
||||
- **troubleshooting.md**:故障排查手册
|
||||
- **performance-issues.md**:性能问题排查
|
||||
|
||||
### 日志分析
|
||||
- **log-analysis.md**:日志分析方法
|
||||
- **error-handling.md**:错误处理规范
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有中间件密码必须设置且定期更换
|
||||
2. 生产环境配置需要经过安全审核
|
||||
3. 配置变更需要备份和回滚方案
|
||||
4. 关键中间件需要设置监控和告警
|
||||
@@ -0,0 +1,557 @@
|
||||
# MySQL 数据库配置指南
|
||||
|
||||
## 概述
|
||||
|
||||
本文档详细说明了 RuoYi-Vue-Plus 项目中 MySQL 数据库的安装、配置和优化方案。
|
||||
|
||||
## 1. MySQL 安装
|
||||
|
||||
### 1.1 Docker 安装(推荐)
|
||||
|
||||
```bash
|
||||
# 拉取MySQL 8.0镜像
|
||||
docker pull mysql:8.0
|
||||
|
||||
# 创建MySQL容器
|
||||
docker run -d \
|
||||
--name mysql-ruoyi \
|
||||
-p 3306:3306 \
|
||||
-e MYSQL_ROOT_PASSWORD=your_password \
|
||||
-e MYSQL_DATABASE=ruoyi \
|
||||
-e MYSQL_USER=ruoyi \
|
||||
-e MYSQL_PASSWORD=ruoyi_password \
|
||||
-v mysql_data:/var/lib/mysql \
|
||||
mysql:8.0 \
|
||||
--character-set-server=utf8mb4 \
|
||||
--collation-server=utf8mb4_unicode_ci
|
||||
```
|
||||
|
||||
### 1.2 传统安装
|
||||
|
||||
#### CentOS/RHEL 安装
|
||||
|
||||
```bash
|
||||
# 下载MySQL官方Yum Repository
|
||||
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
|
||||
|
||||
# 安装MySQL Yum Repository
|
||||
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
|
||||
|
||||
# 安装MySQL
|
||||
sudo yum install mysql-community-server
|
||||
|
||||
# 启动MySQL服务
|
||||
sudo systemctl start mysqld
|
||||
sudo systemctl enable mysqld
|
||||
```
|
||||
|
||||
#### Ubuntu/Debian 安装
|
||||
|
||||
```bash
|
||||
# 更新包索引
|
||||
sudo apt update
|
||||
|
||||
# 安装MySQL服务器
|
||||
sudo apt install mysql-server
|
||||
|
||||
# 启动MySQL服务
|
||||
sudo systemctl start mysql
|
||||
sudo systemctl enable mysql
|
||||
```
|
||||
|
||||
## 2. 数据库配置
|
||||
|
||||
### 2.1 基础配置
|
||||
|
||||
#### 修改 root 密码
|
||||
|
||||
```sql
|
||||
-- 登录MySQL
|
||||
mysql -u root -p
|
||||
|
||||
-- 修改root密码
|
||||
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
|
||||
|
||||
-- 刷新权限
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
#### 创建业务数据库和用户
|
||||
|
||||
```sql
|
||||
-- 创建数据库
|
||||
CREATE DATABASE ruoyi DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 创建用户
|
||||
CREATE USER 'ruoyi'@'%' IDENTIFIED BY 'ruoyi_password';
|
||||
|
||||
-- 授权
|
||||
GRANT ALL PRIVILEGES ON ruoyi.* TO 'ruoyi'@'%';
|
||||
|
||||
-- 刷新权限
|
||||
FLUSH PRIVILEGES;
|
||||
```
|
||||
|
||||
### 2.2 配置文件 (my.cnf)
|
||||
|
||||
#### 基础配置
|
||||
|
||||
```ini
|
||||
[mysqld]
|
||||
# 基本设置
|
||||
port = 3306
|
||||
socket = /tmp/mysql.sock
|
||||
basedir = /usr/local/mysql
|
||||
datadir = /usr/local/mysql/data
|
||||
pid-file = /usr/local/mysql/data/mysql.pid
|
||||
user = mysql
|
||||
bind-address = 0.0.0.0
|
||||
|
||||
# 字符集设置
|
||||
character-set-server = utf8mb4
|
||||
collation-server = utf8mb4_unicode_ci
|
||||
init_connect = 'SET NAMES utf8mb4'
|
||||
|
||||
# SQL模式设置
|
||||
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||
|
||||
# 时区设置
|
||||
default-time-zone = '+8:00'
|
||||
|
||||
# 表名大小写敏感
|
||||
lower_case_table_names = 1
|
||||
|
||||
# 日志设置
|
||||
log-error = /var/log/mysql/error.log
|
||||
slow_query_log = 1
|
||||
slow_query_log_file = /var/log/mysql/slow.log
|
||||
long_query_time = 2
|
||||
log_queries_not_using_indexes = 1
|
||||
|
||||
# 连接设置
|
||||
max_connections = 1000
|
||||
max_connect_errors = 100000
|
||||
max_allowed_packet = 64M
|
||||
interactive_timeout = 600
|
||||
wait_timeout = 600
|
||||
|
||||
# 缓冲区设置
|
||||
innodb_buffer_pool_size = 2G
|
||||
innodb_buffer_pool_instances = 8
|
||||
innodb_log_file_size = 256M
|
||||
innodb_log_buffer_size = 16M
|
||||
innodb_flush_log_at_trx_commit = 1
|
||||
innodb_flush_method = O_DIRECT
|
||||
|
||||
# 其他优化
|
||||
innodb_file_per_table = 1
|
||||
innodb_open_files = 500
|
||||
innodb_io_capacity = 1000
|
||||
innodb_read_io_threads = 8
|
||||
innodb_write_io_threads = 8
|
||||
|
||||
[mysql]
|
||||
default-character-set = utf8mb4
|
||||
|
||||
[client]
|
||||
default-character-set = utf8mb4
|
||||
```
|
||||
|
||||
## 3. 应用配置
|
||||
|
||||
### 3.1 开发环境配置
|
||||
|
||||
```yaml
|
||||
# application-dev.yml
|
||||
spring:
|
||||
datasource:
|
||||
dynamic:
|
||||
primary: master
|
||||
strict: true
|
||||
datasource:
|
||||
master:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ruoyi
|
||||
password: ruoyi_password
|
||||
hikari:
|
||||
maximum-pool-size: 20
|
||||
minimum-idle: 10
|
||||
connection-timeout: 30000
|
||||
validation-timeout: 5000
|
||||
idle-timeout: 600000
|
||||
max-lifetime: 1800000
|
||||
keepalive-time: 30000
|
||||
```
|
||||
|
||||
### 3.2 生产环境配置
|
||||
|
||||
```yaml
|
||||
# application-prod.yml
|
||||
spring:
|
||||
datasource:
|
||||
dynamic:
|
||||
primary: master
|
||||
strict: true
|
||||
datasource:
|
||||
master:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://mysql-server:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: ${DB_USERNAME:ruoyi}
|
||||
password: ${DB_PASSWORD:encrypted_password}
|
||||
hikari:
|
||||
maximum-pool-size: 50
|
||||
minimum-idle: 20
|
||||
connection-timeout: 30000
|
||||
validation-timeout: 5000
|
||||
idle-timeout: 600000
|
||||
max-lifetime: 1800000
|
||||
keepalive-time: 30000
|
||||
connection-test-query: SELECT 1
|
||||
```
|
||||
|
||||
## 4. 性能优化
|
||||
|
||||
### 4.1 参数优化
|
||||
|
||||
#### 内存相关参数
|
||||
|
||||
```ini
|
||||
# InnoDB缓冲池大小(建议设置为可用内存的70-80%)
|
||||
innodb_buffer_pool_size = 4G
|
||||
|
||||
# 缓冲池实例数(建议设置为CPU核心数)
|
||||
innodb_buffer_pool_instances = 8
|
||||
|
||||
# 查询缓存(MySQL 8.0已移除)
|
||||
# query_cache_size = 0
|
||||
# query_cache_type = 0
|
||||
|
||||
# 排序缓冲区
|
||||
sort_buffer_size = 2M
|
||||
|
||||
# 连接缓冲区
|
||||
read_buffer_size = 2M
|
||||
read_rnd_buffer_size = 8M
|
||||
|
||||
# 临时表缓冲区
|
||||
tmp_table_size = 128M
|
||||
max_heap_table_size = 128M
|
||||
```
|
||||
|
||||
#### I/O 相关参数
|
||||
|
||||
```ini
|
||||
# InnoDB I/O容量
|
||||
innodb_io_capacity = 2000
|
||||
innodb_io_capacity_max = 4000
|
||||
|
||||
# InnoDB读写线程数
|
||||
innodb_read_io_threads = 16
|
||||
innodb_write_io_threads = 16
|
||||
|
||||
# InnoDB刷盘策略
|
||||
innodb_flush_method = O_DIRECT
|
||||
innodb_flush_log_at_trx_commit = 1
|
||||
|
||||
# 并发插入
|
||||
concurrent_insert = 2
|
||||
```
|
||||
|
||||
### 4.2 索引优化
|
||||
|
||||
#### 索引设计原则
|
||||
|
||||
1. **主键索引**: 使用雪花 ID,保证唯一性和有序性
|
||||
2. **外键索引**: 所有外键字段必须建立索引
|
||||
3. **复合索引**: 根据查询条件建立复合索引
|
||||
4. **覆盖索引**: 优先使用覆盖索引减少回表
|
||||
|
||||
#### 常用索引示例
|
||||
|
||||
```sql
|
||||
-- 租户索引(必须)
|
||||
CREATE INDEX idx_tenant_id ON sys_user(tenant_id);
|
||||
|
||||
-- 复合索引
|
||||
CREATE INDEX idx_user_status_dept ON sys_user(status, dept_id, create_time);
|
||||
|
||||
-- 唯一索引
|
||||
CREATE UNIQUE INDEX uk_user_name_tenant ON sys_user(user_name, tenant_id);
|
||||
```
|
||||
|
||||
### 4.3 查询优化
|
||||
|
||||
#### SQL 优化建议
|
||||
|
||||
1. **避免 SELECT \***: 只查询需要的字段
|
||||
2. **使用 LIMIT**: 大数据量查询使用 LIMIT 分页
|
||||
3. **避免子查询**: 使用 JOIN 替代子查询
|
||||
4. **使用 EXPLAIN**: 分析查询执行计划
|
||||
|
||||
#### 分页查询优化
|
||||
|
||||
```sql
|
||||
-- 传统分页(性能差)
|
||||
SELECT * FROM sys_user ORDER BY id LIMIT 10000, 10;
|
||||
|
||||
-- 优化分页(使用覆盖索引)
|
||||
SELECT u.* FROM sys_user u
|
||||
INNER JOIN (
|
||||
SELECT id FROM sys_user ORDER BY id LIMIT 10000, 10
|
||||
) tmp ON u.id = tmp.id;
|
||||
|
||||
-- 游标分页(推荐)
|
||||
SELECT * FROM sys_user WHERE id > 10000 ORDER BY id LIMIT 10;
|
||||
```
|
||||
|
||||
## 5. 监控和维护
|
||||
|
||||
### 5.1 性能监控
|
||||
|
||||
#### 关键监控指标
|
||||
|
||||
```sql
|
||||
-- 连接数监控
|
||||
SHOW STATUS LIKE 'Threads_connected';
|
||||
SHOW STATUS LIKE 'Max_used_connections';
|
||||
|
||||
-- 查询性能监控
|
||||
SHOW STATUS LIKE 'Slow_queries';
|
||||
SHOW STATUS LIKE 'Questions';
|
||||
|
||||
-- InnoDB监控
|
||||
SHOW STATUS LIKE 'Innodb_buffer_pool_read_requests';
|
||||
SHOW STATUS LIKE 'Innodb_buffer_pool_reads';
|
||||
|
||||
-- 锁监控
|
||||
SHOW STATUS LIKE 'Table_locks_waited';
|
||||
SHOW STATUS LIKE 'Innodb_deadlocks';
|
||||
```
|
||||
|
||||
#### 慢查询分析
|
||||
|
||||
```bash
|
||||
# 分析慢查询日志
|
||||
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
|
||||
|
||||
# 实时监控慢查询
|
||||
mysql -e "SHOW FULL PROCESSLIST" | grep -v "Sleep"
|
||||
```
|
||||
|
||||
### 5.2 备份策略
|
||||
|
||||
#### 物理备份(推荐)
|
||||
|
||||
```bash
|
||||
# 使用xtrabackup进行热备份
|
||||
xtrabackup --backup --target-dir=/backup/mysql/$(date +%Y%m%d_%H%M%S)
|
||||
|
||||
# 备份脚本示例
|
||||
#!/bin/bash
|
||||
BACKUP_DIR="/backup/mysql"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_PATH="$BACKUP_DIR/$DATE"
|
||||
|
||||
# 创建备份目录
|
||||
mkdir -p $BACKUP_PATH
|
||||
|
||||
# 执行备份
|
||||
xtrabackup --backup --target-dir=$BACKUP_PATH
|
||||
|
||||
# 压缩备份
|
||||
tar -czf $BACKUP_PATH.tar.gz -C $BACKUP_DIR $DATE
|
||||
|
||||
# 删除原备份目录
|
||||
rm -rf $BACKUP_PATH
|
||||
|
||||
# 删除7天前的备份
|
||||
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
|
||||
```
|
||||
|
||||
#### 逻辑备份
|
||||
|
||||
```bash
|
||||
# 使用mysqldump备份
|
||||
mysqldump -u root -p --single-transaction --routines --triggers \
|
||||
--events --databases ruoyi > ruoyi_$(date +%Y%m%d_%H%M%S).sql
|
||||
|
||||
# 恢复数据
|
||||
mysql -u root -p ruoyi < ruoyi_20250101_120000.sql
|
||||
```
|
||||
|
||||
## 6. 安全配置
|
||||
|
||||
### 6.1 用户权限管理
|
||||
|
||||
#### 最小权限原则
|
||||
|
||||
```sql
|
||||
-- 应用用户只授予必要权限
|
||||
CREATE USER 'app_user'@'%' IDENTIFIED BY 'strong_password';
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON ruoyi.* TO 'app_user'@'%';
|
||||
|
||||
-- 只读用户
|
||||
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'readonly_password';
|
||||
GRANT SELECT ON ruoyi.* TO 'readonly_user'@'%';
|
||||
|
||||
-- 备份用户
|
||||
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'backup_password';
|
||||
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'backup_user'@'localhost';
|
||||
```
|
||||
|
||||
### 6.2 网络安全
|
||||
|
||||
#### 防火墙配置
|
||||
|
||||
```bash
|
||||
# 只允许特定IP访问MySQL
|
||||
iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT
|
||||
iptables -A INPUT -p tcp --dport 3306 -j DROP
|
||||
```
|
||||
|
||||
#### SSL 配置
|
||||
|
||||
```ini
|
||||
# my.cnf SSL配置
|
||||
[mysqld]
|
||||
ssl-ca=/etc/mysql/ssl/ca-cert.pem
|
||||
ssl-cert=/etc/mysql/ssl/server-cert.pem
|
||||
ssl-key=/etc/mysql/ssl/server-key.pem
|
||||
require_secure_transport=ON
|
||||
```
|
||||
|
||||
## 7. 故障排查
|
||||
|
||||
### 7.1 常见问题
|
||||
|
||||
#### 连接问题
|
||||
|
||||
```bash
|
||||
# 检查MySQL服务状态
|
||||
systemctl status mysql
|
||||
|
||||
# 检查端口监听
|
||||
netstat -tlnp | grep 3306
|
||||
|
||||
# 检查连接数
|
||||
mysql -e "SHOW STATUS LIKE 'Threads_connected'"
|
||||
```
|
||||
|
||||
#### 性能问题
|
||||
|
||||
```sql
|
||||
-- 查看当前运行的查询
|
||||
SHOW FULL PROCESSLIST;
|
||||
|
||||
-- 查看锁等待
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
|
||||
-- 查看表锁
|
||||
SHOW OPEN TABLES WHERE In_use > 0;
|
||||
```
|
||||
|
||||
### 7.2 日志分析
|
||||
|
||||
#### 错误日志分析
|
||||
|
||||
```bash
|
||||
# 查看错误日志
|
||||
tail -f /var/log/mysql/error.log
|
||||
|
||||
# 检查常见错误
|
||||
grep -i "error\|warning" /var/log/mysql/error.log
|
||||
```
|
||||
|
||||
#### 慢查询日志分析
|
||||
|
||||
```bash
|
||||
# 启用慢查询日志
|
||||
SET GLOBAL slow_query_log = 'ON';
|
||||
SET GLOBAL long_query_time = 1;
|
||||
|
||||
# 分析慢查询
|
||||
pt-query-digest /var/log/mysql/slow.log
|
||||
```
|
||||
|
||||
## 8. 高可用配置
|
||||
|
||||
### 8.1 主从复制
|
||||
|
||||
#### 主库配置
|
||||
|
||||
```ini
|
||||
# my.cnf 主库配置
|
||||
[mysqld]
|
||||
server-id = 1
|
||||
log-bin = mysql-bin
|
||||
binlog-format = ROW
|
||||
expire_logs_days = 7
|
||||
```
|
||||
|
||||
#### 从库配置
|
||||
|
||||
```ini
|
||||
# my.cnf 从库配置
|
||||
[mysqld]
|
||||
server-id = 2
|
||||
relay-log = mysql-relay-bin
|
||||
read-only = 1
|
||||
```
|
||||
|
||||
### 8.2 集群方案
|
||||
|
||||
#### MySQL Group Replication
|
||||
|
||||
```sql
|
||||
-- 安装Group Replication插件
|
||||
INSTALL PLUGIN group_replication SONAME 'group_replication.so';
|
||||
|
||||
-- 配置Group Replication
|
||||
SET GLOBAL group_replication_group_name="550fa9ee-a1f8-4b6d-9bfe-c03c12cd1c72";
|
||||
SET GLOBAL group_replication_start_on_boot=off;
|
||||
SET GLOBAL group_replication_local_address="node1:33061";
|
||||
SET GLOBAL group_replication_group_seeds="node1:33061,node2:33061,node3:33061";
|
||||
```
|
||||
|
||||
## 9. 版本升级
|
||||
|
||||
### 9.1 升级准备
|
||||
|
||||
1. **备份数据**: 升级前完整备份
|
||||
2. **测试环境验证**: 在测试环境先进行升级测试
|
||||
3. **应用兼容性**: 检查应用与新版本的兼容性
|
||||
4. **回滚计划**: 准备回滚方案
|
||||
|
||||
### 9.2 升级步骤
|
||||
|
||||
```bash
|
||||
# 1. 停止应用服务
|
||||
systemctl stop app-service
|
||||
|
||||
# 2. 备份数据
|
||||
mysqldump --all-databases > backup_before_upgrade.sql
|
||||
|
||||
# 3. 升级MySQL
|
||||
yum update mysql-community-server
|
||||
|
||||
# 4. 启动MySQL
|
||||
systemctl start mysqld
|
||||
|
||||
# 5. 运行升级脚本
|
||||
mysql_upgrade -u root -p
|
||||
|
||||
# 6. 启动应用服务
|
||||
systemctl start app-service
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **密码安全**: 生产环境使用强密码,定期更换
|
||||
2. **权限控制**: 遵循最小权限原则,不要使用 root 用户连接应用
|
||||
3. **定期备份**: 建立完善的备份策略,定期测试恢复
|
||||
4. **监控告警**: 设置关键指标监控和告警
|
||||
5. **性能调优**: 根据实际业务负载调整参数
|
||||
6. **安全更新**: 及时安装安全补丁和更新
|
||||
@@ -0,0 +1,73 @@
|
||||
# 需求文档目录
|
||||
|
||||
## 目录说明
|
||||
|
||||
此目录用于存放项目的需求相关文档,包括:
|
||||
|
||||
## 1. 功能需求文档
|
||||
|
||||
`功能需求文档`:详细的功能需求描述,明确系统应该具备的功能
|
||||
|
||||
### 已有需求文档:
|
||||
|
||||
- **后勤满意度调查系统需求说明.md**:完整的满意度调查系统需求描述
|
||||
- **简化版报告厅预约系统设计说明.md**:报告厅预约系统的简化设计方案
|
||||
|
||||
## 2. 业务流程文档
|
||||
|
||||
`业务流程文档`:描述系统的业务流程和操作规范
|
||||
|
||||
### 待添加文档:
|
||||
|
||||
- 用户管理业务流程
|
||||
- 权限管理业务流程
|
||||
- 多租户管理业务流程
|
||||
- 工作流业务流程
|
||||
|
||||
## 3. 原型设计文档
|
||||
|
||||
`原型设计文档`:UI 原型和交互设计文档
|
||||
|
||||
### 目录结构:
|
||||
|
||||
- mockups/ - 原型设计文件
|
||||
- wireframes/ - 线框图
|
||||
- user-stories/ - 用户故事
|
||||
|
||||
## 4. 业务规则文档
|
||||
|
||||
`业务规则文档`:详细的业务规则和约束条件
|
||||
|
||||
### 待添加文档:
|
||||
|
||||
- 数据权限规则
|
||||
- 多租户规则
|
||||
- 审核流程规则
|
||||
|
||||
## 文档管理规范
|
||||
|
||||
### 文档命名规范
|
||||
|
||||
- 使用中文描述性名称
|
||||
- 按模块分组存放
|
||||
- 版本控制格式:v1.0、v1.1 等
|
||||
|
||||
### 文档内容规范
|
||||
|
||||
- 明确的需求描述
|
||||
- 详细的业务流程
|
||||
- 清晰的验收标准
|
||||
- 完整的用例描述
|
||||
|
||||
### 更新维护
|
||||
|
||||
- 需求变更时及时更新文档
|
||||
- 保留历史版本记录
|
||||
- 定期 review 文档内容
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有需求变更必须更新相关文档
|
||||
2. 新功能开发前必须先编写需求文档
|
||||
3. 需求文档需要经过需求方确认
|
||||
4. 文档格式统一使用 Markdown
|
||||
@@ -0,0 +1,54 @@
|
||||
-- =============================================
|
||||
-- 简化版报告厅预约系统数据库表设计
|
||||
-- =============================================
|
||||
-- =============================================
|
||||
-- 简化版报告厅预约系统数据库表设计
|
||||
-- =============================================
|
||||
|
||||
-- 1. 报告厅信息表
|
||||
DROP TABLE IF EXISTS `hq_hall_info`;
|
||||
CREATE TABLE `hq_hall_info` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`hall_name` varchar(100) NOT NULL COMMENT '报告厅名称',
|
||||
`hall_image` text DEFAULT NULL COMMENT '报告厅图片url',
|
||||
`hall_status` char(1) NOT NULL DEFAULT '1' COMMENT '报告厅状态:0-不可用,1-正常',
|
||||
`hall_description` text COMMENT '报告厅描述',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_hall_status` (`hall_status`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='报告厅信息表';
|
||||
|
||||
-- 2. 报告厅预约表
|
||||
DROP TABLE IF EXISTS `hq_hall_reservation`;
|
||||
CREATE TABLE `hq_hall_reservation` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`hall_id` bigint(20) NOT NULL COMMENT '报告厅ID',
|
||||
`hall_name` varchar(100) NOT NULL COMMENT '报告厅名称',
|
||||
`start_time` datetime NOT NULL COMMENT '开始时间',
|
||||
`end_time` datetime NOT NULL COMMENT '结束时间',
|
||||
`reservation_purpose` varchar(200) NOT NULL COMMENT '预约用途',
|
||||
`applicant_id` bigint(20) NOT NULL COMMENT '申请人id',
|
||||
`applicant_name` varchar(50) NOT NULL COMMENT '申请人姓名',
|
||||
`applicant_phone` varchar(20) DEFAULT NULL COMMENT '申请人电话',
|
||||
`status` char(1) NOT NULL DEFAULT '0' COMMENT '预约状态:0-待审核,1-预约成功,2-预约失败',
|
||||
`audit_by` bigint(20) DEFAULT NULL COMMENT '审核人id',
|
||||
`audit_name` varchar(50) DEFAULT NULL COMMENT '审核人姓名',
|
||||
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||||
`audit_remark` varchar(500) DEFAULT NULL COMMENT '审核备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_hall_id` (`hall_id`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='报告厅预约表';
|
||||
@@ -0,0 +1,94 @@
|
||||
# 简化版报告厅预约系统数据模型设计
|
||||
|
||||
## 设计目标
|
||||
|
||||
根据您的需求,设计一个简单实用的报告厅预约系统,包含报告厅管理、预约申请和审核功能。
|
||||
|
||||
## 数据表设计
|
||||
|
||||
### 1. 报告厅信息表 (`hall_info`)
|
||||
|
||||
**主要功能**: 管理报告厅基本信息
|
||||
|
||||
**字段说明**:
|
||||
|
||||
- **标准字段**: 按要求包含 `id`、`tenant_id`、`create_dept`、`create_by`、`create_time`、`update_by`、`update_time`
|
||||
- **业务字段**:
|
||||
- `hall_name`: 报告厅名称
|
||||
- `hall_image`: 报告厅图片 URL(多个图片用逗号分隔)
|
||||
- `hall_status`: 报告厅状态(0-不可用,1-可用)
|
||||
- `hall_description`: 报告厅描述
|
||||
|
||||
### 2. 报告厅预约表 (`hall_reservation`)
|
||||
|
||||
**主要功能**: 管理预约申请和审核流程
|
||||
|
||||
**字段说明**:
|
||||
|
||||
- **标准字段**: 按要求包含 `id`、`tenant_id`、`create_dept`、`create_by`、`create_time`、`update_by`、`update_time`
|
||||
- **预约信息**:
|
||||
- `hall_id`: 关联报告厅 ID
|
||||
- `reservation_date`: 预约日期
|
||||
- `start_time`、`end_time`: 预约时间段
|
||||
- `reservation_purpose`: 预约用途
|
||||
- `applicant_name`、`applicant_phone`: 申请人信息
|
||||
- **审核信息**:
|
||||
- `status`: 预约状态(0-待审核,1-预约成功,2-预约失败)
|
||||
- `audit_by`: 审核人 id
|
||||
- `audit_name`: 审核人
|
||||
- `audit_time`: 审核时间
|
||||
- `audit_remark`: 审核备注
|
||||
|
||||
## 核心功能流程
|
||||
|
||||
### 1. 报告厅管理
|
||||
|
||||
- 添加/编辑报告厅信息(名称、图片、描述)
|
||||
- 设置报告厅状态(可用/不可用)
|
||||
- 查看报告厅列表
|
||||
|
||||
### 2. 预约申请
|
||||
|
||||
- 用户选择可用的报告厅
|
||||
- 填写预约信息(日期、时间、用途、联系方式)
|
||||
- 提交后状态为"待审核"
|
||||
|
||||
### 3. 预约审核
|
||||
|
||||
- 管理员查看待审核的预约申请
|
||||
- 点击通过:状态改为"预约成功"
|
||||
- 点击驳回:状态改为"预约失败",可填写审核备注
|
||||
|
||||
## 设计特点
|
||||
|
||||
### 简化原则
|
||||
|
||||
- 只包含核心必需字段,避免复杂功能
|
||||
- 一个预约对应一次审核,不支持多级审核
|
||||
- 状态简单明确,便于业务理解
|
||||
|
||||
### 扩展性考虑
|
||||
|
||||
- 预留了租户字段,支持多租户
|
||||
- 审核备注字段支持记录审核原因
|
||||
- 外键约束保证数据完整性
|
||||
|
||||
### 数据完整性
|
||||
|
||||
- 主键自增,保证唯一性
|
||||
- 外键约束确保预约表与报告厅表的关联
|
||||
- 必填字段设置 NOT NULL 约束
|
||||
- 合理的索引设计提高查询效率
|
||||
|
||||
## 示例数据
|
||||
|
||||
文件中包含了示例数据,展示了:
|
||||
|
||||
- 3 个不同状态的报告厅
|
||||
- 3 个不同审核状态的预约记录
|
||||
|
||||
## 使用说明
|
||||
|
||||
1. 执行 `simple_hall_reservation_schema.sql` 创建数据表
|
||||
2. 示例数据会自动插入,便于测试
|
||||
3. 可根据实际需求调整字段长度和约束
|
||||
@@ -0,0 +1,244 @@
|
||||
-- ==========================================================================
|
||||
-- 高校后勤满意度调查系统数据库表结构
|
||||
-- 创建时间:2025年1月
|
||||
-- 说明:基于需求文档设计的完整数据模型
|
||||
-- ==========================================================================
|
||||
|
||||
-- 1. 题目分类表
|
||||
DROP TABLE IF EXISTS `hq_sat_category`;
|
||||
CREATE TABLE `hq_sat_category` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`category_code` varchar(50) NOT NULL COMMENT '分类编码',
|
||||
`category_name` varchar(100) NOT NULL COMMENT '分类名称',
|
||||
`category_desc` varchar(500) DEFAULT NULL COMMENT '分类描述',
|
||||
`sort_order` int(11) DEFAULT '0' COMMENT '排序',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_category_code` (`category_code`, `tenant_id`, `deleted`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='题目分类表';
|
||||
|
||||
-- 2. 评分选项表
|
||||
DROP TABLE IF EXISTS `hq_sat_option`;
|
||||
CREATE TABLE `hq_sat_option` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`option_text` varchar(50) NOT NULL COMMENT '选项文本',
|
||||
`option_value` int(11) NOT NULL COMMENT '选项分值',
|
||||
`sort_order` int(11) DEFAULT '0' COMMENT '排序',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_sort_order` (`sort_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评分选项表';
|
||||
|
||||
-- 3. 题库表
|
||||
DROP TABLE IF EXISTS `hq_sat_question`;
|
||||
CREATE TABLE `hq_sat_question` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`question_title` varchar(200) NOT NULL COMMENT '题目标题',
|
||||
`question_content` text COMMENT '题目内容(支持富文本)',
|
||||
`category_id` bigint(20) NOT NULL COMMENT '所属分类ID',
|
||||
`question_type` char(1) DEFAULT '1' COMMENT '题目类型(1单选题 2多选题 3问答题)',
|
||||
`is_required` tinyint(1) DEFAULT '1' COMMENT '是否必填(0否 1是)',
|
||||
`sort_order` int(11) DEFAULT '0' COMMENT '排序',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_category_id` (`category_id`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='题库表';
|
||||
|
||||
-- 4. 问卷表
|
||||
DROP TABLE IF EXISTS `hq_sat_survey`;
|
||||
CREATE TABLE `hq_sat_survey` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`survey_code` varchar(50) NOT NULL COMMENT '问卷编号',
|
||||
`survey_title` varchar(200) NOT NULL COMMENT '问卷标题',
|
||||
`survey_desc` varchar(1000) DEFAULT NULL COMMENT '问卷描述',
|
||||
`survey_instruction` text COMMENT '填写说明',
|
||||
`target_group` varchar(100) NOT NULL COMMENT '目标群体(1学生 2教职工 3全体)',
|
||||
`start_time` datetime NOT NULL COMMENT '开始时间',
|
||||
`end_time` datetime NOT NULL COMMENT '结束时间',
|
||||
`max_submit_times` int(11) DEFAULT '1' COMMENT '最大提交次数(0不限制)',
|
||||
`is_anonymous` tinyint(1) DEFAULT '0' COMMENT '是否匿名(0否 1是)',
|
||||
`is_published` tinyint(1) DEFAULT '0' COMMENT '是否发布(0否 1是)',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0草稿 1进行中 2已结束)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_survey_code` (`survey_code`, `tenant_id`, `deleted`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_target_group` (`target_group`),
|
||||
KEY `idx_time_range` (`start_time`, `end_time`),
|
||||
KEY `idx_status` (`status`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问卷表';
|
||||
|
||||
-- 5. 问卷题目关联表
|
||||
DROP TABLE IF EXISTS `hq_sat_survey_question`;
|
||||
CREATE TABLE `hq_sat_survey_question` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`survey_id` bigint(20) NOT NULL COMMENT '问卷ID',
|
||||
`question_id` bigint(20) NOT NULL COMMENT '题目ID',
|
||||
`sort_order` int(11) DEFAULT '0' COMMENT '题目顺序',
|
||||
`weight` decimal(5,2) DEFAULT '1.00' COMMENT '题目权重',
|
||||
`is_required` tinyint(1) DEFAULT '1' COMMENT '是否必填(0否 1是)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_survey_question` (`survey_id`, `question_id`, `deleted`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_survey_id` (`survey_id`),
|
||||
KEY `idx_question_id` (`question_id`),
|
||||
KEY `idx_sort_order` (`sort_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='问卷题目关联表';
|
||||
|
||||
-- 6. 答题记录表
|
||||
DROP TABLE IF EXISTS `hq_sat_record`;
|
||||
CREATE TABLE `hq_sat_record` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`survey_id` bigint(20) NOT NULL COMMENT '问卷ID',
|
||||
`user_id` bigint(20) DEFAULT NULL COMMENT '答题用户ID(匿名时为NULL)',
|
||||
`user_type` char(1) NOT NULL COMMENT '用户类型(1学生 2教职工)',
|
||||
`user_dept` varchar(100) DEFAULT NULL COMMENT '用户部门(匿名时为NULL)',
|
||||
`submit_time` datetime NOT NULL COMMENT '提交时间',
|
||||
`total_score` decimal(10,2) DEFAULT '0.00' COMMENT '总分',
|
||||
`avg_score` decimal(5,2) DEFAULT '0.00' COMMENT '平均分',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_survey_id` (`survey_id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_user_type` (`user_type`),
|
||||
KEY `idx_submit_time` (`submit_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='答题记录表';
|
||||
|
||||
-- 7. 答题详情表
|
||||
DROP TABLE IF EXISTS `hq_sat_detail`;
|
||||
CREATE TABLE `hq_sat_detail` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||
`tenant_id` varchar(20) NOT NULL COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`record_id` bigint(20) NOT NULL COMMENT '答题记录ID',
|
||||
`question_id` bigint(20) NOT NULL COMMENT '题目ID',
|
||||
`answer_score` int(11) DEFAULT '0' COMMENT '答案分数',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_record_question` (`record_id`, `question_id`, `deleted`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_record_id` (`record_id`),
|
||||
KEY `idx_question_id` (`question_id`),
|
||||
KEY `idx_answer_score` (`answer_score`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='答题详情表';
|
||||
|
||||
|
||||
-- ==========================================================================
|
||||
-- 初始化数据
|
||||
-- ==========================================================================
|
||||
|
||||
-- 初始化题目分类数据
|
||||
INSERT INTO `hq_sat_category` (`tenant_id`, `category_code`, `category_name`, `category_desc`, `sort_order`, `status`, `create_time`) VALUES
|
||||
('000000', 'BEDROOM', '寝室服务', '宿舍设施、卫生清洁、安全管理等相关服务', 1, '0', NOW()),
|
||||
('000000', 'CANTEEN', '食堂服务', '菜品质量、价格、卫生环境等相关服务', 2, '0', NOW()),
|
||||
('000000', 'ENVIRONMENT', '环境服务', '校园绿化、道路维护、垃圾处理等相关服务', 3, '0', NOW()),
|
||||
('000000', 'MAINTENANCE', '维修服务', '设备维修、响应时间、服务态度等相关服务', 4, '0', NOW()),
|
||||
('000000', 'SECURITY', '保安服务', '校园安全、门禁管理、巡逻质量等相关服务', 5, '0', NOW()),
|
||||
('000000', 'OTHER', '其他服务', '其他后勤相关服务', 6, '0', NOW());
|
||||
|
||||
-- 初始化评分选项数据
|
||||
INSERT INTO `hq_sat_option` (`tenant_id`, `option_text`, `option_value`, `sort_order`, `status`, `create_time`) VALUES
|
||||
('000000', '非常满意', 5, 1, '0', NOW()),
|
||||
('000000', '满意', 3, 2, '0', NOW()),
|
||||
('000000', '一般', 1, 3, '0', NOW()),
|
||||
('000000', '不满意', 0, 4, '0', NOW());
|
||||
|
||||
-- ==========================================================================
|
||||
-- 索引优化建议
|
||||
-- ==========================================================================
|
||||
|
||||
-- 为提高查询性能,建议根据实际使用情况添加以下组合索引:
|
||||
|
||||
-- 问卷查询相关
|
||||
-- ALTER TABLE hq_sat_survey ADD INDEX idx_time_status (start_time, end_time, status);
|
||||
-- ALTER TABLE hq_sat_survey ADD INDEX idx_target_published (target_group, is_published);
|
||||
|
||||
-- 答题记录查询相关
|
||||
-- ALTER TABLE hq_sat_record ADD INDEX idx_survey_user (survey_id, user_id, status);
|
||||
-- ALTER TABLE hq_sat_record ADD INDEX idx_survey_time (survey_id, submit_time);
|
||||
|
||||
-- 统计分析相关
|
||||
-- ALTER TABLE hq_sat_detail ADD INDEX idx_question_score (question_id, answer_score);
|
||||
-- ALTER TABLE hq_sat_statistics ADD INDEX idx_survey_category (survey_id, category_id, user_type);
|
||||
|
||||
-- ==========================================================================
|
||||
-- 视图创建建议
|
||||
-- ==========================================================================
|
||||
|
||||
-- 创建问卷概览视图
|
||||
-- CREATE VIEW v_hq_sat_survey_overview AS
|
||||
-- SELECT
|
||||
-- s.id, s.survey_title, s.target_group, s.start_time, s.end_time, s.status,
|
||||
-- s.total_questions, s.total_participants, s.total_submissions,
|
||||
-- ROUND(s.total_submissions * 100.0 / NULLIF(s.total_participants, 0), 2) AS completion_rate
|
||||
-- FROM hq_sat_survey s
|
||||
-- WHERE s.deleted = 0;
|
||||
|
||||
-- 创建分类满意度统计视图
|
||||
-- CREATE VIEW v_hq_sat_category_satisfaction AS
|
||||
-- SELECT
|
||||
-- st.survey_id, c.category_name, st.user_type,
|
||||
-- st.total_count, st.avg_score,
|
||||
-- ROUND(st.score_5_count * 100.0 / NULLIF(st.total_count, 0), 2) AS very_satisfied_rate,
|
||||
-- ROUND((st.score_5_count + st.score_3_count) * 100.0 / NULLIF(st.total_count, 0), 2) AS satisfied_rate
|
||||
-- FROM hq_sat_statistics st
|
||||
-- LEFT JOIN hq_sat_category c ON st.category_id = c.id
|
||||
-- WHERE st.deleted = 0 AND st.category_id IS NOT NULL;
|
||||
@@ -0,0 +1,327 @@
|
||||
# 高校后勤满意度调查系统需求说明
|
||||
|
||||
## 1. 项目概述
|
||||
|
||||
### 1.1 项目背景
|
||||
|
||||
为了持续改善高校后勤服务质量,提升师生满意度,需要建立一套完整的后勤满意度调查系统。该系统能够对各类后勤服务进行科学、规范的满意度调查,并为后勤管理决策提供数据支撑。
|
||||
|
||||
### 1.2 项目目标
|
||||
|
||||
- 建立统一的后勤满意度调查平台
|
||||
- 实现问题题库的标准化管理
|
||||
- 支持灵活的问卷组合和分发机制
|
||||
- 提供完整的调查数据分析和报告功能
|
||||
|
||||
## 2. 系统功能需求
|
||||
|
||||
### 2.1 题库管理功能
|
||||
|
||||
#### 2.1.1 题目分类管理
|
||||
|
||||
- **功能描述**:对满意度调查题目进行分类管理
|
||||
- **分类维度**:
|
||||
- 寝室服务(宿舍设施、卫生清洁、安全管理等)
|
||||
- 食堂服务(菜品质量、价格、卫生环境等)
|
||||
- 环境服务(校园绿化、道路维护、垃圾处理等)
|
||||
- 维修服务(设备维修、响应时间、服务态度等)
|
||||
- 保安服务(校园安全、门禁管理、巡逻质量等)
|
||||
- 其他服务(可扩展分类)
|
||||
|
||||
#### 2.1.2 题目内容管理
|
||||
|
||||
- **功能描述**:统一管理调查题目的内容和选项
|
||||
- **题目结构**:
|
||||
- 题目编号(自动生成)
|
||||
- 题目内容(必填,支持富文本)
|
||||
- 所属分类(必选)
|
||||
- 题目状态(启用/禁用)
|
||||
- 创建时间和创建人
|
||||
- 修改时间和修改人
|
||||
|
||||
#### 2.1.3 评分标准管理
|
||||
|
||||
- **统一评分标准**:
|
||||
- 非常满意:5 分
|
||||
- 满意:3 分
|
||||
- 一般:1 分
|
||||
- 不满意:0 分
|
||||
- **功能要求**:
|
||||
- 系统统一使用该评分标准
|
||||
- 支持评分标准的配置和修改
|
||||
- 历史数据保持评分标准的一致性
|
||||
|
||||
### 2.2 问卷管理功能
|
||||
|
||||
#### 2.2.1 问卷创建
|
||||
|
||||
- **功能描述**:从题库中自由选择题目组合成调查问卷
|
||||
- **创建流程**:
|
||||
1. 填写问卷基本信息(名称、描述、目标群体等)
|
||||
2. 从题库中按分类选择题目
|
||||
3. 设置题目顺序和权重
|
||||
4. 配置问卷有效期
|
||||
5. 预览问卷效果
|
||||
6. 保存问卷
|
||||
|
||||
#### 2.2.2 问卷配置
|
||||
|
||||
- **基本信息配置**:
|
||||
|
||||
- 问卷名称(必填)
|
||||
- 问卷描述(可选)
|
||||
- 调查说明(可选)
|
||||
- 创建人信息
|
||||
- 创建时间
|
||||
|
||||
- **目标群体配置**:
|
||||
|
||||
- 学生群体(本科生、研究生、博士生等)
|
||||
- 教职工群体(教师、行政人员、工勤人员等)
|
||||
- 支持多群体同时选择
|
||||
|
||||
- **有效期配置**:
|
||||
- 开始时间(必填)
|
||||
- 结束时间(必填)
|
||||
- 超过有效期自动停止收集
|
||||
|
||||
#### 2.2.3 问卷分发管理
|
||||
|
||||
- **分发方式**:
|
||||
|
||||
- 按用户群体推送
|
||||
- 生成问卷链接分享
|
||||
- 系统内消息通知
|
||||
- 邮件推送(可选)
|
||||
|
||||
- **分发控制**:
|
||||
- 设置参与人员范围
|
||||
- 控制填写次数(一人一次/允许多次)
|
||||
- 匿名填写设置
|
||||
- 实时监控填写进度
|
||||
|
||||
### 2.3 调查填写功能
|
||||
|
||||
#### 2.3.1 用户身份验证
|
||||
|
||||
- **登录验证**:通过统一身份认证系统登录
|
||||
- **身份识别**:自动识别用户类型(学生/教职工)
|
||||
- **权限控制**:仅允许目标群体填写对应问卷
|
||||
|
||||
#### 2.3.2 问卷填写界面
|
||||
|
||||
- **界面要求**:
|
||||
|
||||
- 简洁清晰的用户界面
|
||||
- 响应式设计,支持移动端
|
||||
- 题目分页显示,避免页面过长
|
||||
- 实时保存,防止数据丢失
|
||||
|
||||
- **填写体验**:
|
||||
- 显示填写进度
|
||||
- 支持暂存和继续填写
|
||||
- 必填题目验证
|
||||
- 提交前确认机制
|
||||
|
||||
#### 2.3.3 有效期控制
|
||||
|
||||
- **时间检查**:
|
||||
|
||||
- 填写前检查问卷有效期
|
||||
- 填写过程中实时监控有效期
|
||||
- 超时自动提示并禁止提交
|
||||
|
||||
- **用户提示**:
|
||||
- 清晰显示问卷有效期信息
|
||||
- 临近截止时间提醒
|
||||
- 超时后显示相应提示信息
|
||||
|
||||
### 2.4 数据统计分析功能
|
||||
|
||||
#### 2.4.1 基础统计
|
||||
|
||||
- **参与情况统计**:
|
||||
|
||||
- 问卷发放数量
|
||||
- 实际填写数量
|
||||
- 填写完成率
|
||||
- 各群体参与情况
|
||||
|
||||
- **分数统计**:
|
||||
|
||||
- 总体满意度得分
|
||||
- 各分类满意度得分
|
||||
- 各题目满意度得分
|
||||
- 满意度排名分析
|
||||
|
||||
- **问题类别统计分析**:
|
||||
- 按寝室服务类别统计平均分值
|
||||
- 按食堂服务类别统计平均分值
|
||||
- 按环境服务类别统计平均分值
|
||||
- 按维修服务类别统计平均分值
|
||||
- 按保安服务类别统计平均分值
|
||||
- 按其他服务类别统计平均分值
|
||||
- 各类别满意度排行榜
|
||||
- 类别间满意度对比分析
|
||||
|
||||
#### 2.4.2 数据分析
|
||||
|
||||
- **趋势分析**:
|
||||
|
||||
- 满意度变化趋势
|
||||
- 同期对比分析
|
||||
- 各服务类别对比分析
|
||||
|
||||
- **群体分析**:
|
||||
|
||||
- 学生群体满意度分析
|
||||
- 教职工群体满意度分析
|
||||
- 不同群体满意度对比
|
||||
|
||||
- **问题类别深度分析**:
|
||||
- 各类别满意度分值分布图
|
||||
- 类别满意度变化趋势对比
|
||||
- 不同群体对各类别的满意度差异
|
||||
- 问题类别的改进优先级排序
|
||||
- 各类别内部题目满意度排名
|
||||
|
||||
#### 2.4.3 报告生成
|
||||
|
||||
- **统计报告**:
|
||||
|
||||
- 自动生成调查统计报告
|
||||
- 支持多种图表展示
|
||||
- 导出 Word/PDF 格式报告
|
||||
|
||||
- **问题分析**:
|
||||
|
||||
- 低满意度问题识别
|
||||
- 改进建议生成
|
||||
- 问题追踪记录
|
||||
|
||||
- **类别专项报告**:
|
||||
- 生成各问题类别的专项分析报告
|
||||
- 类别满意度排行榜报告
|
||||
- 各类别改进建议和行动计划
|
||||
- 类别间对比分析报告
|
||||
- 支持按类别导出专项报告
|
||||
|
||||
## 3. 系统非功能需求
|
||||
|
||||
### 3.1 性能要求
|
||||
|
||||
- **响应时间**:页面加载时间不超过 3 秒
|
||||
- **并发处理**:支持 1000 人同时在线填写
|
||||
- **数据处理**:大量问卷数据的快速统计分析
|
||||
|
||||
### 3.2 安全要求
|
||||
|
||||
- **数据安全**:调查数据加密存储
|
||||
- **访问控制**:基于角色的权限管理
|
||||
- **隐私保护**:支持匿名调查模式
|
||||
|
||||
### 3.3 可用性要求
|
||||
|
||||
- **系统可用性**:7×24 小时稳定运行
|
||||
- **界面友好**:简洁直观的操作界面
|
||||
- **多端适配**:支持 PC 端和移动端访问
|
||||
|
||||
### 3.4 扩展性要求
|
||||
|
||||
- **题目扩展**:支持新增题目分类和评分标准
|
||||
- **功能扩展**:预留其他调查类型的扩展接口
|
||||
- **数据扩展**:支持大数据量的存储和处理
|
||||
|
||||
## 4. 系统架构设计
|
||||
|
||||
### 4.1 技术架构
|
||||
|
||||
- **前端技术**:Vue 3 + Element Plus + TypeScript
|
||||
- **后端技术**:Spring Boot + MyBatis Plus + MySQL
|
||||
- **缓存技术**:Redis
|
||||
- **认证授权**:Sa-Token
|
||||
|
||||
### 4.2 数据库设计要点
|
||||
|
||||
#### 4.2.1 核心表结构
|
||||
|
||||
- **题库表(hq_question)**:存储调查题目信息
|
||||
- **分类表(hq_category)**:存储题目分类信息
|
||||
- **问卷表(hq_survey)**:存储问卷基本信息
|
||||
- **问卷题目关联表(hq_survey_question)**:问卷与题目的关联关系
|
||||
- **答题记录表(hq_answer_record)**:存储用户答题记录
|
||||
- **答题详情表(hq_answer_detail)**:存储具体答题内容
|
||||
|
||||
#### 4.2.2 字段设计规范
|
||||
|
||||
- 所有表包含基础字段:id、create_time、update_time、create_by、update_by
|
||||
- 支持逻辑删除:deleted 字段
|
||||
- 关键字段添加索引,提升查询性能
|
||||
|
||||
### 4.3 接口设计规范
|
||||
|
||||
- 遵循 RESTful API 设计规范
|
||||
- 统一的响应格式和错误码
|
||||
- 完整的接口文档(Swagger)
|
||||
- 接口权限控制和参数校验
|
||||
|
||||
## 5. 开发计划
|
||||
|
||||
### 5.1 开发阶段
|
||||
|
||||
1. **第一阶段**:题库管理和问卷管理功能开发
|
||||
2. **第二阶段**:调查填写和有效期控制功能开发
|
||||
3. **第三阶段**:数据统计分析和报告生成功能开发
|
||||
4. **第四阶段**:系统测试和优化
|
||||
|
||||
### 5.2 预期时间
|
||||
|
||||
- **开发周期**:预计 4-6 周
|
||||
- **测试周期**:预计 1-2 周
|
||||
- **部署上线**:预计 1 周
|
||||
|
||||
## 6. 验收标准
|
||||
|
||||
### 6.1 功能验收
|
||||
|
||||
- 所有功能模块正常运行
|
||||
- 用户操作流程完整顺畅
|
||||
- 数据统计分析准确无误
|
||||
|
||||
### 6.2 性能验收
|
||||
|
||||
- 满足性能要求指标
|
||||
- 并发测试通过
|
||||
- 稳定性测试通过
|
||||
|
||||
### 6.3 安全验收
|
||||
|
||||
- 权限控制有效
|
||||
- 数据安全可靠
|
||||
- 隐私保护到位
|
||||
|
||||
## 7. 后期维护
|
||||
|
||||
### 7.1 功能优化
|
||||
|
||||
- 根据使用反馈持续优化用户体验
|
||||
- 扩展更多调查类型和分析维度
|
||||
- 增加移动端专属功能
|
||||
|
||||
### 7.2 数据管理
|
||||
|
||||
- 定期备份调查数据
|
||||
- 历史数据归档管理
|
||||
- 数据清理和优化
|
||||
|
||||
### 7.3 系统升级
|
||||
|
||||
- 定期更新系统版本
|
||||
- 修复安全漏洞
|
||||
- 优化系统性能
|
||||
|
||||
---
|
||||
|
||||
**文档版本**:v1.0
|
||||
**创建日期**:2025 年 1 月
|
||||
**更新日期**:2025 年 1 月
|
||||
@@ -0,0 +1,277 @@
|
||||
# 测试文档目录
|
||||
|
||||
## 目录说明
|
||||
|
||||
此目录用于存放项目的测试相关文档,包括测试计划、测试用例、测试报告等。
|
||||
|
||||
## 1. 测试计划文档
|
||||
|
||||
`测试计划文档`:整体测试策略和计划安排
|
||||
|
||||
### 测试计划:
|
||||
|
||||
- **总体测试计划.md**:项目整体测试策略和计划
|
||||
- **单元测试计划.md**:单元测试计划和覆盖率要求
|
||||
- **集成测试计划.md**:模块集成测试计划
|
||||
- **系统测试计划.md**:系统功能测试计划
|
||||
- **性能测试计划.md**:系统性能测试计划
|
||||
- **安全测试计划.md**:安全性测试计划
|
||||
|
||||
## 2. 测试用例文档
|
||||
|
||||
`测试用例文档`:详细的测试用例设计和执行步骤
|
||||
|
||||
### 功能测试用例:
|
||||
|
||||
- **用户管理测试用例.md**:用户管理模块测试用例
|
||||
- **权限管理测试用例.md**:权限管理模块测试用例
|
||||
- **多租户测试用例.md**:多租户功能测试用例
|
||||
- **工作流测试用例.md**:工作流模块测试用例
|
||||
- **系统管理测试用例.md**:系统管理模块测试用例
|
||||
|
||||
### 接口测试用例:
|
||||
|
||||
- **API 接口测试用例.md**:REST API 接口测试
|
||||
- **认证授权接口测试.md**:认证授权接口测试
|
||||
- **数据权限接口测试.md**:数据权限接口测试
|
||||
- **文件上传接口测试.md**:文件操作接口测试
|
||||
|
||||
### 性能测试用例:
|
||||
|
||||
- **并发测试用例.md**:并发访问测试用例
|
||||
- **压力测试用例.md**:系统压力测试用例
|
||||
- **稳定性测试用例.md**:长期稳定性测试
|
||||
|
||||
## 3. 自动化测试
|
||||
|
||||
### 单元测试
|
||||
|
||||
- **单元测试规范.md**:单元测试编写规范
|
||||
- **测试覆盖率要求.md**:代码覆盖率要求和标准
|
||||
- **Mock 测试指南.md**:Mock 对象使用指南
|
||||
|
||||
### 集成测试
|
||||
|
||||
- **集成测试框架.md**:集成测试框架和工具
|
||||
- **数据库测试.md**:数据库操作测试
|
||||
- **Redis 测试.md**:缓存功能测试
|
||||
|
||||
### 接口自动化测试
|
||||
|
||||
- **Postman 测试.md**:Postman 自动化测试
|
||||
- **接口测试脚本.md**:自动化测试脚本
|
||||
- **持续集成测试.md**:CI/CD 中的自动化测试
|
||||
|
||||
## 4. 测试环境
|
||||
|
||||
### 测试环境配置
|
||||
|
||||
- **测试环境搭建.md**:测试环境搭建指南
|
||||
- **测试数据准备.md**:测试数据准备和管理
|
||||
- **环境重置脚本.md**:测试环境重置脚本
|
||||
|
||||
### 测试工具
|
||||
|
||||
- **测试工具清单.md**:测试工具和版本清单
|
||||
- **工具配置指南.md**:测试工具配置说明
|
||||
- **工具使用手册.md**:测试工具使用手册
|
||||
|
||||
## 5. 测试报告
|
||||
|
||||
### 测试执行报告
|
||||
|
||||
- **单元测试报告.md**:单元测试执行结果
|
||||
- **集成测试报告.md**:集成测试执行结果
|
||||
- **系统测试报告.md**:系统测试执行结果
|
||||
- **性能测试报告.md**:性能测试结果分析
|
||||
|
||||
### 缺陷管理
|
||||
|
||||
- **缺陷报告模板.md**:标准缺陷报告模板
|
||||
- **缺陷分类标准.md**:缺陷严重程度分类
|
||||
- **缺陷修复流程.md**:缺陷修复和验证流程
|
||||
|
||||
### 测试总结
|
||||
|
||||
- **测试总结报告.md**:测试阶段总结报告
|
||||
- **质量评估报告.md**:软件质量评估报告
|
||||
- **改进建议.md**:测试过程改进建议
|
||||
|
||||
## 6. 专项测试
|
||||
|
||||
### 安全测试
|
||||
|
||||
- **安全测试清单.md**:安全测试检查清单
|
||||
- **漏洞扫描报告.md**:安全漏洞扫描结果
|
||||
- **渗透测试报告.md**:渗透测试结果
|
||||
|
||||
### 兼容性测试
|
||||
|
||||
- **浏览器兼容性.md**:前端浏览器兼容性测试
|
||||
- **数据库兼容性.md**:多数据库兼容性测试
|
||||
- **操作系统兼容性.md**:操作系统兼容性测试
|
||||
|
||||
### 可用性测试
|
||||
|
||||
- **用户体验测试.md**:用户界面和体验测试
|
||||
- **可访问性测试.md**:系统可访问性测试
|
||||
- **响应式测试.md**:移动端响应式测试
|
||||
|
||||
## 7. 测试指标和标准
|
||||
|
||||
### 质量指标
|
||||
|
||||
```
|
||||
代码覆盖率: ≥ 80%
|
||||
接口测试覆盖率: 100%
|
||||
关键业务功能测试覆盖率: 100%
|
||||
缺陷修复率: ≥ 95%
|
||||
回归测试通过率: 100%
|
||||
```
|
||||
|
||||
### 性能指标
|
||||
|
||||
```
|
||||
响应时间:
|
||||
- 页面加载时间 ≤ 3秒
|
||||
- API接口响应时间 ≤ 1秒
|
||||
- 数据库查询响应时间 ≤ 500ms
|
||||
|
||||
并发性能:
|
||||
- 支持1000用户同时在线
|
||||
- 支持100用户并发操作
|
||||
- 系统资源使用率 ≤ 80%
|
||||
```
|
||||
|
||||
### 稳定性指标
|
||||
|
||||
```
|
||||
系统可用性: ≥ 99.5%
|
||||
故障恢复时间: ≤ 30分钟
|
||||
内存泄漏: 无
|
||||
长期运行稳定性: 7×24小时无故障
|
||||
```
|
||||
|
||||
## 8. 测试最佳实践
|
||||
|
||||
### 测试原则
|
||||
|
||||
1. **早期测试**:在开发初期就开始测试活动
|
||||
2. **全面覆盖**:功能、性能、安全全方位测试
|
||||
3. **自动化优先**:优先使用自动化测试工具
|
||||
4. **持续改进**:根据测试结果持续改进
|
||||
|
||||
### 测试流程
|
||||
|
||||
1. **需求分析**:分析测试需求和测试范围
|
||||
2. **测试设计**:设计测试用例和测试数据
|
||||
3. **测试执行**:按计划执行测试用例
|
||||
4. **缺陷管理**:记录、跟踪、验证缺陷
|
||||
5. **测试报告**:生成测试报告和总结
|
||||
|
||||
### 代码质量
|
||||
|
||||
- 所有新功能必须编写单元测试
|
||||
- 关键业务逻辑必须有集成测试
|
||||
- 接口变更必须更新接口测试
|
||||
- 定期进行代码质量扫描
|
||||
|
||||
## 9. 测试用例模板
|
||||
|
||||
### 功能测试用例模板
|
||||
|
||||
```markdown
|
||||
## 测试用例 ID: TC_001
|
||||
|
||||
**测试模块**: 用户管理
|
||||
**测试功能**: 用户登录
|
||||
**测试级别**: 系统测试
|
||||
**优先级**: 高
|
||||
|
||||
### 前置条件
|
||||
|
||||
- 系统已部署
|
||||
- 测试用户已创建
|
||||
|
||||
### 测试步骤
|
||||
|
||||
1. 打开登录页面
|
||||
2. 输入用户名和密码
|
||||
3. 点击登录按钮
|
||||
|
||||
### 预期结果
|
||||
|
||||
- 登录成功,跳转到主页
|
||||
- 显示用户信息
|
||||
|
||||
### 实际结果
|
||||
|
||||
[执行时填写]
|
||||
|
||||
### 测试状态
|
||||
|
||||
[ ] 通过 [ ] 失败 [ ] 阻塞
|
||||
```
|
||||
|
||||
### 接口测试用例模板
|
||||
|
||||
````markdown
|
||||
## 接口测试用例 ID: API_001
|
||||
|
||||
**接口名称**: 用户列表查询
|
||||
**请求方法**: GET
|
||||
**请求 URL**: /system/user/list
|
||||
|
||||
### 请求参数
|
||||
|
||||
```json
|
||||
{
|
||||
"pageNum": 1,
|
||||
"pageSize": 10,
|
||||
"userName": "admin"
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
### 预期响应
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "查询成功",
|
||||
"data": {
|
||||
"records": [],
|
||||
"total": 0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 测试检查点
|
||||
|
||||
- 响应状态码为 200
|
||||
- 返回数据格式正确
|
||||
- 分页参数生效
|
||||
|
||||
```
|
||||
|
||||
## 10. 持续集成测试
|
||||
|
||||
### CI/CD集成
|
||||
- **Jenkins测试.md**:Jenkins集成测试配置
|
||||
- **GitLab CI测试.md**:GitLab CI测试配置
|
||||
- **自动化部署测试.md**:自动化部署测试
|
||||
|
||||
### 测试报告集成
|
||||
- 单元测试报告自动生成
|
||||
- 集成测试结果自动收集
|
||||
- 测试覆盖率自动统计
|
||||
- 测试结果自动通知
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有测试用例必须可重复执行
|
||||
2. 测试数据不能影响生产环境
|
||||
3. 测试环境需要定期重置和维护
|
||||
4. 关键功能必须有自动化测试覆盖
|
||||
5. 测试报告需要及时更新和归档
|
||||
```
|
||||
Reference in new issue
Block a user