项目准备文档
项目技术栈
后端技术栈
开发框架
- Spring Boot:作为后端开发的主要框架,提供高效的 RESTful API 标准化支持,简化了配置与开发流程。
- Spring Security:用于身份认证与权限管理,通过与 AOP 的结合实现精细化的权限控制。
- MyBatis:负责数据持久化操作,并结合 MyBatis Plus 简化开发,提升操作效率。
- Hutool:Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率。
- Lettuce:Redis 包装工具库,用于操作 Redis
通信协议
- RESTful API:用于前后端之间的数据交互,支持标准化、统一的接口设计。
数据库
- MySQL:采用关系型数据库管理课程与排课相关数据,版本为 8.4.2。
- Redis:作为缓存服务,提高系统性能和高并发支持能力,版本为 7.4+。
前端技术栈
开发框架
- React:实现组件化开发,支持高效的用户界面构建,基于 Vite 提供更快的开发体验。
- Redux:用于全局状态管理,适用于复杂交互场景。
- React Router:提供强大的路由管理功能,支持多页面与动态切换。
UI 框架
- DaisyUI:用于快速实现一致的 UI 布局。
- Tailwind CSS:实现响应式设计和定制化样式。
数据请求与通信
- Axios:用于 HTTP 请求的处理,支持更高效的 API 调用。
- FullCalendar:提供直观的日历视图,增强课程排布的可视化效果。
- Apache ECharts:一个基于 JavaScript 的开源可视化图表库。
开发环境
- 操作系统:Windows 11 / macOS Sequoia
- 开发工具:
- 后端:JetBrains IntelliJ IDEA
- 前端:JetBrains WebStorm
- 容器化工具:Docker
- JDK 版本:17+
- Node.js 版本:18+
- 数据库:MySQL 8.4.2、Redis 7.4+
- 包管理工具:
- 后端:Maven
- 前端:yarn
- 浏览器支持:最新版本的 Chrome / Edge / Firefox
版本控制与项目管理
- 版本控制工具:Git
- 代码托管平台:GitHub
- 分支管理策略:
- 主分支(
main
):存储稳定可发布版本代码。 - 开发分支(
develop
):用于新功能集成与测试。 - 功能分支(
feature/*
):为每个具体功能单独创建分支。 - 维护分支(
fix/*
):专用于问题修复的分支。
- 主分支(
- 项目管理工具:GitHub Projects
- 开发流程:采用 Scrum 敏捷开发模式,按 Sprint 周期迭代开发,确保交付质量和效率。
项目部署
测试环境
传统测试环境
- 部署服务器:实验室服务器(Proxmox VE 虚拟化环境)
- 操作系统:Linux CentOS Stream 9(LXC 容器)
- 硬件配置:
- CPU:4 核 Intel Xeon E5-2697A v4 @ 2.60GHz
- 内存:ECC DDR4 4GB
- 存储:Samsung SSD 990 PRO 2TB(分配 32GB)
- 部署工具:Jenkins
- 测试域名:
http://172.16.11.10
- 特殊需求:
- 模拟跨域场景,不使用 Nginx 代理。
- 前端运行在 80 端口,后端运行在 8888 端口。
- 内外网一致使用内网 IP 地址,通过 VPN 进行访问。
Dify 测试环境
- 平台:Dify
- 部署模型:
- 基于 LLM 模型(如 GPT-4、LLama)提供优化建议。
- 多模型协同,适配不同任务场景(如冲突检测、优化方案生成)。
- 功能支持:
- 知识库训练与更新:将排课规则动态嵌入知识库。
- 流程编辑:通过 Dify 的流程编辑器实现模型任务的分配与结果聚合。
- API 集成:提供开放 API 接口,供排课系统调用。
- 特殊配置:
- 数据脱敏:在模型调用前对用户数据进行隐私保护。
- 模拟用户交互:支持自然语言输入和多轮次优化建议生成。
- 测试域名:
http://172.16.1.6
风险与对策
风险类型 | 风险描述 | 对策 |
---|---|---|
开发进度延误 | 因需求变更、技术难题或沟通不畅导致进度滞后,影响项目按时交付。 | - 制定详细的项目计划,明确里程碑节点。 - 使用任务管理工具(如 GitHub Projects)分解任务,实时监控进度。 - 对技术难题进行预研,及时反馈风险。 |
数据安全问题 | 用户数据(如个人信息、排课数据)因加密不足或系统漏洞可能泄露。 | - 采用 HTTPS 确保传输安全,结合双向认证。 - 使用加盐哈希(如 BCrypt)存储敏感数据。 - 定期安全扫描,修复潜在漏洞。 |
系统性能问题 | 高并发情况下可能导致系统响应缓慢甚至崩溃。 | - 使用 Redis 缓存热点数据,提高响应速度。 - 优化 SQL 查询和代码逻辑,减少性能瓶颈。 - 使用压力测试工具(如 JMeter)进行性能评估和调整。 |
功能适配问题 | 移动端适配不佳或部分功能缺失,影响用户体验。 | - 使用 Tailwind CSS 提供响应式支持。 - 针对不同分辨率设备进行兼容性测试。 - 提供独立的移动端界面优化方案。 |
突发事件风险 | 服务器故障、数据丢失或外部环境变化(如疫情)可能中断项目进度。 | - 定期进行数据备份,确保生产环境的高可用。 - 使用负载均衡和热备份策略增强系统稳定性。 - 制定应急预案并定期演练。 |
法规合规问题 | 数据存储或隐私保护不符合法律要求(如 GDPR、数据安全法等),可能引发法律风险。 | - 遵循相关法律法规,对用户数据进行匿名化处理。 - 在开发过程中加入数据合规性检查环节。 |
用户使用问题 | 用户对系统操作不熟悉,可能导致误操作或低效使用。 | - 提供详细的用户手册和操作指南。 - 在系统上线前组织用户培训,增强使用技能。 - 设立反馈渠道,及时响应用户问题。 |
数据准确性问题 | 排课算法或逻辑错误导致时间冲突、重复排课等数据问题。 | - 加强输入校验规则,确保数据质量。 - 对关键算法进行全面单元测试和集成测试,覆盖边界情况。 |