跳转至

项目准备文档

项目技术栈

后端技术栈

开发框架

  • 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、数据安全法等),可能引发法律风险。 - 遵循相关法律法规,对用户数据进行匿名化处理。
- 在开发过程中加入数据合规性检查环节。
用户使用问题 用户对系统操作不熟悉,可能导致误操作或低效使用。 - 提供详细的用户手册和操作指南。
- 在系统上线前组织用户培训,增强使用技能。
- 设立反馈渠道,及时响应用户问题。
数据准确性问题 排课算法或逻辑错误导致时间冲突、重复排课等数据问题。 - 加强输入校验规则,确保数据质量。
- 对关键算法进行全面单元测试和集成测试,覆盖边界情况。

参考资料