|
1 | | -# 项目准备 |
| 1 | +# 项目准备文档 |
2 | 2 |
|
3 | | -## |
| 3 | +## 项目技术栈 |
| 4 | + |
| 5 | +### 后端技术栈 |
| 6 | + |
| 7 | +#### 开发框架 |
| 8 | + |
| 9 | +- **[Spring Boot](https://springdoc.cn/spring-boot/)**:作为后端开发的主要框架,提供高效的 RESTful API 标准化支持,简化了配置与开发流程。 |
| 10 | +- **[Spring Security](https://springdoc.cn/spring-security/)**:用于身份认证与权限管理,通过与 AOP 的结合实现精细化的权限控制。 |
| 11 | +- **[MyBatis](https://mybatis.org/mybatis-3/zh_CN/getting-started.html)**:负责数据持久化操作,并结合 **[MyBatis Plus](https://baomidou.com/introduce/)** 简化开发,提升操作效率。 |
| 12 | + |
| 13 | +#### 通信协议 |
| 14 | + |
| 15 | +- **RESTful API**:用于前后端之间的数据交互,支持标准化、统一的接口设计。 |
| 16 | + |
| 17 | +#### 数据库 |
| 18 | + |
| 19 | +- **MySQL**:采用关系型数据库管理课程与排课相关数据,版本为 **8.4.2**。 |
| 20 | +- **Redis**:作为缓存服务,提高系统性能和高并发支持能力,版本为 **7.4+**。 |
| 21 | + |
| 22 | +--- |
| 23 | + |
| 24 | +### 前端技术栈 |
| 25 | + |
| 26 | +#### 开发框架 |
| 27 | + |
| 28 | +- **[React](https://zh-hans.react.dev/learn)**:实现组件化开发,支持高效的用户界面构建,基于 Vite 提供更快的开发体验。 |
| 29 | +- **[Redux](https://cn.redux.js.org/api/store/)**:用于全局状态管理,适用于复杂交互场景。 |
| 30 | +- **[React Router](https://reactrouter.com/home)**:提供强大的路由管理功能,支持多页面与动态切换。 |
| 31 | + |
| 32 | +#### UI 框架 |
| 33 | + |
| 34 | +- **[Fluent](https://react.fluentui.dev/?path=/docs/concepts-introduction--docs)**:用于快速实现一致的 UI 布局。 |
| 35 | +- **[Tailwind CSS](https://tailwindcss.com/docs/configuration)**:实现响应式设计和定制化样式。 |
| 36 | + |
| 37 | +#### 数据请求与通信 |
| 38 | + |
| 39 | +- **[Axios](https://www.axios-http.cn/docs/intro)**:用于 HTTP 请求的处理,支持更高效的 API 调用。 |
| 40 | +- **[FullCalendar](https://fullcalendar.io/docs)**:提供直观的日历视图,增强课程排布的可视化效果。 |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +## 开发环境 |
| 45 | + |
| 46 | +- **操作系统**:Windows 11 / macOS Sequoia |
| 47 | +- **开发工具**: |
| 48 | + - 后端:JetBrains IntelliJ IDEA |
| 49 | + - 前端:JetBrains WebStorm |
| 50 | + - 容器化工具:Docker |
| 51 | +- **JDK 版本**:17+ |
| 52 | +- **Node.js 版本**:18+ |
| 53 | +- **数据库**:MySQL 8.4.2、Redis 7.4+ |
| 54 | +- **包管理工具**: |
| 55 | + - 后端:Maven |
| 56 | + - 前端:yarn |
| 57 | +- **浏览器支持**:最新版本的 Chrome / Edge / Firefox |
| 58 | + |
| 59 | +--- |
| 60 | + |
| 61 | +## 版本控制与项目管理 |
| 62 | + |
| 63 | +- **版本控制工具**:Git |
| 64 | +- **代码托管平台**:GitHub |
| 65 | +- **分支管理策略**: |
| 66 | + - 主分支(`main`):存储稳定可发布版本代码。 |
| 67 | + - 开发分支(`develop`):用于新功能集成与测试。 |
| 68 | + - 功能分支(`feature/*`):为每个具体功能单独创建分支。 |
| 69 | + - 维护分支(`fix/*`):专用于问题修复的分支。 |
| 70 | +- **项目管理工具**:GitHub Projects |
| 71 | +- **开发流程**:采用 Scrum 敏捷开发模式,按 Sprint 周期迭代开发,确保交付质量和效率。 |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +## 项目部署 |
| 76 | + |
| 77 | +### 测试环境 |
| 78 | + |
| 79 | +- **部署服务器**:实验室服务器(Proxmox VE 虚拟化环境) |
| 80 | +- **操作系统**:Linux CentOS Stream 9(LXC 容器) |
| 81 | +- **硬件配置**: |
| 82 | + - CPU:4 核 Intel Xeon E5-2697A v4 @ 2.60GHz |
| 83 | + - 内存:ECC DDR4 4GB |
| 84 | + - 存储:Samsung SSD 990 PRO 2TB(分配 32GB) |
| 85 | +- **部署工具**:Jenkins |
| 86 | +- **测试域名**:`http://172.16.11.10` |
| 87 | +- **特殊需求**: |
| 88 | + - 模拟跨域场景,不使用 Nginx 代理。 |
| 89 | + - 前端运行在 80 端口,后端运行在 8888 端口。 |
| 90 | + - 内外网一致使用内网 IP 地址,通过 VPN 进行访问。 |
| 91 | + |
| 92 | +--- |
| 93 | + |
| 94 | +## 风险与对策 |
| 95 | + |
| 96 | +| 风险类型 | 风险描述 | 对策 | |
| 97 | +| ------------------ | ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 98 | +| **开发进度延误** | 因需求变更、技术难题或沟通不畅导致进度滞后,影响项目按时交付。 | - 制定详细的项目计划,明确里程碑节点。<br>- 使用任务管理工具(如 GitHub Projects)分解任务,实时监控进度。<br>- 对技术难题进行预研,及时反馈风险。 | |
| 99 | +| **数据安全问题** | 用户数据(如个人信息、排课数据)因加密不足或系统漏洞可能泄露。 | - 采用 HTTPS 确保传输安全,结合双向认证。<br>- 使用加盐哈希(如 BCrypt)存储敏感数据。<br>- 定期安全扫描,修复潜在漏洞。 | |
| 100 | +| **系统性能问题** | 高并发情况下可能导致系统响应缓慢甚至崩溃。 | - 使用 Redis 缓存热点数据,提高响应速度。<br>- 优化 SQL 查询和代码逻辑,减少性能瓶颈。<br>- 使用压力测试工具(如 JMeter)进行性能评估和调整。 | |
| 101 | +| **功能适配问题** | 移动端适配不佳或部分功能缺失,影响用户体验。 | - 使用 Tailwind CSS 提供响应式支持。<br>- 针对不同分辨率设备进行兼容性测试。<br>- 提供独立的移动端界面优化方案。 | |
| 102 | +| **突发事件风险** | 服务器故障、数据丢失或外部环境变化(如疫情)可能中断项目进度。 | - 定期进行数据备份,确保生产环境的高可用。<br>- 使用负载均衡和热备份策略增强系统稳定性。<br>- 制定应急预案并定期演练。 | |
| 103 | +| **法规合规问题** | 数据存储或隐私保护不符合法律要求(如 GDPR、数据安全法等),可能引发法律风险。 | - 遵循相关法律法规,对用户数据进行匿名化处理。<br>- 在开发过程中加入数据合规性检查环节。 | |
| 104 | +| **用户使用问题** | 用户对系统操作不熟悉,可能导致误操作或低效使用。 | - 提供详细的用户手册和操作指南。<br>- 在系统上线前组织用户培训,增强使用技能。<br>- 设立反馈渠道,及时响应用户问题。 | |
| 105 | +| **数据准确性问题** | 排课算法或逻辑错误导致时间冲突、重复排课等数据问题。 | - 加强输入校验规则,确保数据质量。<br>- 对关键算法进行全面单元测试和集成测试,覆盖边界情况。 | |
| 106 | + |
| 107 | +--- |
| 108 | + |
| 109 | +## 参考资料 |
| 110 | + |
| 111 | +- [Spring Boot 官方文档](https://springdoc.cn/spring-boot/) |
| 112 | +- [React 官方文档](https://react.dev/) |
| 113 | +- [MyBatis 官方文档](https://mybatis.org/mybatis-3/zh_CN/) |
| 114 | +- [Redis 官方文档](https://redis.io/documentation) |
0 commit comments