diff --git a/UniLife开发文档-更新版.md b/UniLife开发文档-更新版.md new file mode 100644 index 0000000..a405432 --- /dev/null +++ b/UniLife开发文档-更新版.md @@ -0,0 +1,776 @@ +# UniLife开发文档(更新版) + +[TOC] + +## 一、项目概述 + +### 1.1 项目简介 + +UniLife 是一款面向学生的在线论坛,致力于提升校园生活体验。其口号为 "有你生活,优你生活",核心功能包括论坛交流、学习资源共享、课程管理、AI 学习辅助等。项目初期以网站形式开发,后续可能扩展为移动端应用。 + +### 1.2 技术栈 + +#### 前端技术栈 +- 框架:Vue 3 + TypeScript +- 构建工具:Vite +- UI组件库:Element Plus +- HTTP客户端:Axios +- 路由:Vue Router +- 表单验证:VeeValidate + Yup + +#### 后端技术栈 +- 框架:Spring Boot 3 +- 数据库:MySQL +- ORM框架:MyBatis +- 缓存:Redis +- 认证:JWT +- 邮件服务:Spring Mail +- 工具库:Hutool +- API文档:Knife4j + +### 1.3 项目结构 + +#### 前端结构 +``` +Front/vue-unilife/ +├── public/ # 静态资源 +├── src/ +│ ├── assets/ # 资源文件 +│ ├── components/ # 组件 +│ ├── utils/ # 工具类 +│ ├── views/ # 页面 +│ ├── router/ # 路由 +│ ├── store/ # 状态管理 +│ ├── App.vue # 根组件 +│ └── main.ts # 入口文件 +└── package.json # 项目配置 +``` + +#### 后端结构 +``` +unilife-server/ +├── src/main/java/com/unilife/ +│ ├── common/ # 通用类 +│ ├── config/ # 配置类 +│ ├── controller/ # 控制器 +│ ├── interceptor/ # 拦截器 +│ ├── mapper/ # 数据访问层 +│ ├── model/ # 数据模型 +│ │ ├── dto/ # 数据传输对象 +│ │ ├── entity/ # 实体类 +│ │ └── vo/ # 视图对象 +│ ├── service/ # 服务层 +│ │ └── impl/ # 服务实现 +│ └── utils/ # 工具类 +└── src/main/resources/ + ├── mappers/ # MyBatis映射文件 + └── application.yml # 应用配置 +``` + +## 二、当前进度 + +### 2.1 已完成功能 + +#### 前端 +- 基础环境搭建(Vue 3 + TypeScript + Vite) +- 基础组件库集成(Element Plus) +- HTTP请求封装(Axios) +- 页面原型设计 + +#### 后端 +- 基础环境搭建(Spring Boot 3) +- 数据库设计(用户表) +- 用户认证模块 + - 用户注册 + - 用户登录 + - 邮箱验证码获取 + - 邮箱验证码登录 +- IP地址定位服务 + +### 2.2 待实现功能 + +#### 前端 +- 所有页面的具体实现 +- 状态管理 +- 路由配置 +- 表单验证 +- 用户认证与授权 +- 响应式设计 + +#### 后端 +- 用户信息管理模块 + - 获取用户信息 + - 更新用户信息 + - 修改密码 + - 上传头像 +- 论坛功能模块 + - 帖子发布/编辑/删除 + - 评论/回复 + - 点赞/收藏 +- 学习资源共享模块 + - 资源上传/下载 + - 资源分类/搜索 +- 课程表与日程管理模块 + - 课程导入/编辑 + - 日程安排/提醒 +- AI辅助学习模块 + - 学习计划制定 + - 智能提醒 +- 搜索功能模块 + - 全文搜索 + - 分类搜索 +- 积分系统模块 + - 积分获取/消费 + - 积分规则管理 + +## 三、API规范 + +### 3.1 基础信息 + +- **基础URL**: `http://localhost:8087`(本地测试) +- **接口格式**: RESTful API +- **数据格式**: JSON +- **字符编码**: UTF-8 +- **认证方式**: JWT (JSON Web Token) + +#### HTTP方法 +- **GET**: 获取资源 +- **POST**: 创建资源 +- **PUT**: 更新资源(全量更新) +- **PATCH**: 部分更新资源 +- **DELETE**: 删除资源 + +### 3.2 响应规范 + +#### 响应状态码 +- **200**: 成功 +- **400**: 请求参数错误 +- **401**: 未授权 +- **403**: 禁止访问 +- **404**: 资源不存在 +- **500**: 服务器内部错误 + +#### 响应格式 + +成功响应: +```json +{ + "code": 200, + "message": "success", + "data": { + "key": "value" + } +} +``` + +注: +- code: 200表示成功 +- data: 包含实际返回数据 + +错误响应: +```json +{ + "code": 400, + "message": "参数错误", + "data": null +} +``` + +注:message字段包含错误信息 + +## 四、数据库设计 + +### 4.1 用户表设计 (users) + +| 字段名 | 类型 | 约束 | 说明 | +| ----------- | ------------ | ----------------------------------------------------- | ------------------------------------ | +| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 用户ID | +| username | VARCHAR(50) | NOT NULL, UNIQUE | 用户名 | +| email | VARCHAR(100) | NOT NULL, UNIQUE | 邮箱地址(学校邮箱) | +| password | VARCHAR(255) | NOT NULL | 密码(加密存储) | +| nickname | VARCHAR(50) | NOT NULL | 昵称 | +| avatar | VARCHAR(255) | | 头像URL | +| bio | TEXT | | 个人简介 | +| gender | TINYINT | | 性别(0-未知, 1-男, 2-女) | +| student_id | VARCHAR(20) | UNIQUE | 学号 | +| department | VARCHAR(100) | | 院系 | +| major | VARCHAR(100) | | 专业 | +| grade | VARCHAR(20) | | 年级 | +| points | INT | DEFAULT 0 | 积分 | +| role | TINYINT | DEFAULT 0 | 角色(0-普通用户, 1-版主, 2-管理员) | +| status | TINYINT | DEFAULT 1 | 状态(0-禁用, 1-启用) | +| is_verified | TINYINT | DEFAULT 0 | 是否验证(0-未验证, 1-已验证) | +| login_ip | VARCHAR(50) | | 最近登录IP | +| login_time | DATETIME | | 最近登录时间 | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +### 4.2 帖子表设计 (posts) + +| 字段名 | 类型 | 约束 | 说明 | +| ----------- | ------------ | ----------------------------------------------------- | ------------------------------ | +| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 帖子ID | +| user_id | BIGINT | NOT NULL, FOREIGN KEY | 发布用户ID | +| title | VARCHAR(100) | NOT NULL | 帖子标题 | +| content | TEXT | NOT NULL | 帖子内容 | +| category_id | BIGINT | NOT NULL, FOREIGN KEY | 分类ID | +| view_count | INT | DEFAULT 0 | 浏览次数 | +| like_count | INT | DEFAULT 0 | 点赞次数 | +| comment_count | INT | DEFAULT 0 | 评论次数 | +| status | TINYINT | DEFAULT 1 | 状态(0-删除, 1-正常, 2-置顶) | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +### 4.3 评论表设计 (comments) + +| 字段名 | 类型 | 约束 | 说明 | +| ----------- | ------------ | ----------------------------------------------------- | ------------------------ | +| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 评论ID | +| post_id | BIGINT | NOT NULL, FOREIGN KEY | 帖子ID | +| user_id | BIGINT | NOT NULL, FOREIGN KEY | 评论用户ID | +| content | TEXT | NOT NULL | 评论内容 | +| parent_id | BIGINT | | 父评论ID(回复某条评论) | +| like_count | INT | DEFAULT 0 | 点赞次数 | +| status | TINYINT | DEFAULT 1 | 状态(0-删除, 1-正常) | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +### 4.4 分类表设计 (categories) + +| 字段名 | 类型 | 约束 | 说明 | +| ----------- | ------------ | ----------------------------------------------------- | ---------------------- | +| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 分类ID | +| name | VARCHAR(50) | NOT NULL, UNIQUE | 分类名称 | +| description | VARCHAR(255) | | 分类描述 | +| icon | VARCHAR(255) | | 分类图标 | +| sort | INT | DEFAULT 0 | 排序 | +| status | TINYINT | DEFAULT 1 | 状态(0-禁用, 1-启用) | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +### 4.5 资源表设计 (resources) + +| 字段名 | 类型 | 约束 | 说明 | +| ----------- | ------------ | ----------------------------------------------------- | ---------------------- | +| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 资源ID | +| user_id | BIGINT | NOT NULL, FOREIGN KEY | 上传用户ID | +| title | VARCHAR(100) | NOT NULL | 资源标题 | +| description | TEXT | | 资源描述 | +| file_url | VARCHAR(255) | NOT NULL | 文件URL | +| file_size | BIGINT | NOT NULL | 文件大小(字节) | +| file_type | VARCHAR(50) | NOT NULL | 文件类型 | +| category_id | BIGINT | NOT NULL, FOREIGN KEY | 分类ID | +| download_count | INT | DEFAULT 0 | 下载次数 | +| like_count | INT | DEFAULT 0 | 点赞次数 | +| status | TINYINT | DEFAULT 1 | 状态(0-删除, 1-正常) | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +### 4.6 课程表设计 (courses) + +| 字段名 | 类型 | 约束 | 说明 | +| ----------- | ------------ | ----------------------------------------------------- | ---------------------- | +| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 课程ID | +| user_id | BIGINT | NOT NULL, FOREIGN KEY | 用户ID | +| name | VARCHAR(100) | NOT NULL | 课程名称 | +| teacher | VARCHAR(50) | | 教师姓名 | +| location | VARCHAR(100) | | 上课地点 | +| day_of_week | TINYINT | NOT NULL | 星期几(1-7) | +| start_time | TIME | NOT NULL | 开始时间 | +| end_time | TIME | NOT NULL | 结束时间 | +| start_week | TINYINT | NOT NULL | 开始周次 | +| end_week | TINYINT | NOT NULL | 结束周次 | +| color | VARCHAR(20) | | 显示颜色 | +| status | TINYINT | DEFAULT 1 | 状态(0-删除, 1-正常) | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +### 4.7 日程表设计 (schedules) + +| 字段名 | 类型 | 约束 | 说明 | +| ----------- | ------------ | ----------------------------------------------------- | ---------------------- | +| id | BIGINT | PRIMARY KEY, AUTO_INCREMENT | 日程ID | +| user_id | BIGINT | NOT NULL, FOREIGN KEY | 用户ID | +| title | VARCHAR(100) | NOT NULL | 日程标题 | +| description | TEXT | | 日程描述 | +| start_time | DATETIME | NOT NULL | 开始时间 | +| end_time | DATETIME | NOT NULL | 结束时间 | +| location | VARCHAR(100) | | 地点 | +| is_all_day | TINYINT | DEFAULT 0 | 是否全天(0-否, 1-是) | +| reminder | TINYINT | | 提醒时间(分钟) | +| color | VARCHAR(20) | | 显示颜色 | +| status | TINYINT | DEFAULT 1 | 状态(0-删除, 1-正常) | +| created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 | +| updated_at | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 | + +## 五、API功能实现 + +### 5.1 用户认证模块 + +#### 5.1.1 用户注册 + +- **URL**: `/users/register` +- **方法**: POST +- **描述**: 创建新用户账号 + +请求参数: +```json +{ + "username": "student123", + "email": "student@school.edu", + "password": "Secure@Password123", + "nickname": "学生昵称", + "studentId": "20220101001", + "department": "计算机学院", + "major": "软件工程", + "grade": "2023级" +} +``` + +响应结果: +```json +{ + "code": 200, + "message": "注册成功", + "data": { + "userId": 12345, + "username": "student123", + "nickname": "学生昵称" + } +} +``` + +#### 5.1.2 用户密码登录 + +- **URL**: `/users/login` +- **方法**: POST +- **描述**: 用户登录 + +请求参数: +```json +{ + "username": "student123", + "password": "Secure@Password123" +} +``` + +注:username字段可以是用户名或邮箱 + +响应结果: +```json +{ + "code": 200, + "message": "登录成功", + "data": { + "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", + "userInfo": { + "userId": 12345, + "username": "student123", + "nickname": "学生昵称", + "avatar": "https://example.com/avatar.jpg", + "role": 0, + "isVerified": true, + "status": 1 + } + } +} +``` + +#### 5.1.3 获取邮箱验证码 + +- **URL**: `/users/code` +- **方法**: POST +- **描述**: 向指定邮箱发送登录验证码 + +请求参数: +```json +{ + "email": "student@school.edu" +} +``` + +响应结果: +```json +{ + "code": 200, + "message": "验证码已发送", + "data": null +} +``` + +#### 5.1.4 邮箱验证码登录 + +- **URL**: `/users/login/code` +- **方法**: POST +- **描述**: 使用邮箱和验证码进行登录 + +请求参数: +```json +{ + "email": "student@school.edu", + "code": "123456" +} +``` + +成功响应: +```json +{ + "code": 200, + "message": "登录成功", + "data": { + "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", + "userInfo": { + "userId": 12345, + "username": "student123", + "nickname": "学生昵称", + "avatar": "https://example.com/avatar.jpg", + "role": 0 + } + } +} +``` + +### 5.2 用户信息管理模块(待实现) + +#### 5.2.1 获取用户个人信息 + +- **URL**: `/users/profile` +- **方法**: GET +- **描述**: 获取当前登录用户的个人资料信息 + +响应结果: +```json +{ + "code": 200, + "message": "success", + "data": { + "id": 12345, + "username": "student123", + "email": "student@school.edu", + "nickname": "测试员", + "avatar": "https://example.com/avatars/default.png", + "bio": "这是一个个人简介", + "gender": 2, + "studentId": "20220101001", + "department": "计算机学院", + "major": "软件工程", + "grade": "2023级", + "points": 100, + "role": 0, + "isVerified": 1 + } +} +``` + +#### 5.2.2 更新用户个人信息 + +- **URL**: `/users/profile` +- **方法**: PUT +- **描述**: 更新当前登录用户的个人资料 + +请求参数: +```json +{ + "nickname": "新昵称", + "bio": "这是更新后的个人简介", + "gender": 2 +} +``` + +响应结果: +```json +{ + "code": 200, + "message": "更新成功", + "data": null +} +``` + +#### 5.2.3 修改用户密码 + +- **URL**: `/users/password` +- **方法**: PUT +- **描述**: 修改当前登录用户的密码 + +请求参数: +```json +{ + "code": "验证码", + "newPassword": "新密码" +} +``` + +响应结果: +```json +{ + "code": 200, + "message": "密码修改成功", + "data": null +} +``` + +#### 5.2.4 上传用户头像 + +- **URL**: `/users/avatar` +- **方法**: POST +- **描述**: 上传或更新用户头像 + +请求参数: +``` +file: [图片文件] +``` + +响应结果: +```json +{ + "code": 200, + "message": "头像上传成功", + "data": { + "avatar": "https://example.com/avatars/user_123456.jpg" + } +} +``` + +#### 5.2.5 更新用户邮箱 + +- **URL**: `/users/email` +- **方法**: PUT +- **描述**: 更新用户邮箱地址 + +请求参数: +```json +{ + "email": "new_email@school.edu", + "code": "123456" +} +``` + +注:code字段为邮箱验证码 + +响应结果: +```json +{ + "code": 200, + "message": "邮箱更新成功", + "data": null +} +``` + +### 5.3 论坛功能模块(待实现) + +#### 5.3.1 获取帖子列表 + +- **URL**: `/posts` +- **方法**: GET +- **描述**: 获取帖子列表,支持分页和筛选 + +请求参数: +``` +page: 1 +size: 10 +category: 1 +sort: latest +``` + +响应结果: +```json +{ + "code": 200, + "message": "success", + "data": { + "total": 100, + "list": [ + { + "id": 1, + "title": "帖子标题", + "summary": "帖子摘要...", + "userId": 12345, + "nickname": "发布者昵称", + "avatar": "https://example.com/avatar.jpg", + "categoryId": 1, + "categoryName": "学习交流", + "viewCount": 100, + "likeCount": 20, + "commentCount": 5, + "createdAt": "2023-05-01 12:00:00" + } + ] + } +} +``` + +#### 5.3.2 获取帖子详情 + +- **URL**: `/posts/{id}` +- **方法**: GET +- **描述**: 获取帖子详情 + +响应结果: +```json +{ + "code": 200, + "message": "success", + "data": { + "id": 1, + "title": "帖子标题", + "content": "帖子内容...", + "userId": 12345, + "nickname": "发布者昵称", + "avatar": "https://example.com/avatar.jpg", + "categoryId": 1, + "categoryName": "学习交流", + "viewCount": 100, + "likeCount": 20, + "commentCount": 5, + "isLiked": true, + "createdAt": "2023-05-01 12:00:00", + "updatedAt": "2023-05-01 12:00:00" + } +} +``` + +#### 5.3.3 发布帖子 + +- **URL**: `/posts` +- **方法**: POST +- **描述**: 发布新帖子 + +请求参数: +```json +{ + "title": "帖子标题", + "content": "帖子内容...", + "categoryId": 1 +} +``` + +响应结果: +```json +{ + "code": 200, + "message": "发布成功", + "data": { + "postId": 1 + } +} +``` + +#### 5.3.4 更新帖子 + +- **URL**: `/posts/{id}` +- **方法**: PUT +- **描述**: 更新帖子 + +请求参数: +```json +{ + "title": "更新后的标题", + "content": "更新后的内容...", + "categoryId": 2 +} +``` + +响应结果: +```json +{ + "code": 200, + "message": "更新成功", + "data": null +} +``` + +#### 5.3.5 删除帖子 + +- **URL**: `/posts/{id}` +- **方法**: DELETE +- **描述**: 删除帖子 + +响应结果: +```json +{ + "code": 200, + "message": "删除成功", + "data": null +} +``` + +#### 5.3.6 获取评论列表 + +- **URL**: `/posts/{postId}/comments` +- **方法**: GET +- **描述**: 获取帖子的评论列表 + +请求参数: +``` +page: 1 +size: 20 +``` + +响应结果: +```json +{ + "code": 200, + "message": "success", + "data": { + "total": 50, + "list": [ + { + "id": 1, + "content": "评论内容...", + "userId": 12345, + "nickname": "评论者昵称", + "avatar": "https://example.com/avatar.jpg", + "likeCount": 5, + "isLiked": false, + "createdAt": "2023-05-01 12:30:00", + "replies": [ + { + "id": 2, + "content": "回复内容...", + "userId": 54321, + "nickname": "回复者昵称", + "avatar": "https://example.com/avatar2.jpg", + "likeCount": 2, + "isLiked": true, + "createdAt": "2023-05-01 12:35:00" + } + ] + } + ] + } +} +``` + +#### 5.3.7 发表评论 + +- **URL**: `/comments` +- **方法**: POST +- **描述**: 发表评论或回复 + +请求参数: +```json +{ + "postId": 1, + "content": "评论内容...", + "parentId": null +} +``` + +注:parentId字段用于回复某条评论,回复时设置为父评论ID,发表新评论时设为null + +响应结果: +```json +{ + "code": 200, + "message": "评论成功", + "data": { + "commentId": 3 + } +} +``` + +#### 5.3.8 点赞/取消点赞 + +- **URL**: `/posts/{id}/like` +- **方法**: POST +- **描述**: 点赞 diff --git a/UniLife开发计划.md b/UniLife开发计划.md new file mode 100644 index 0000000..e02e163 --- /dev/null +++ b/UniLife开发计划.md @@ -0,0 +1,200 @@ +# UniLife开发计划 + +## 一、项目概述 + +UniLife是一款面向学生的在线论坛,致力于提升校园生活体验。项目采用前后端分离架构,前端使用Vue 3 + TypeScript,后端使用Spring Boot 3。 + +## 二、当前进度 + +### 已完成功能 +- 基础环境搭建(前后端) +- 用户认证模块(注册、登录、验证码) +- 数据库设计(用户表) +- 页面原型设计 + +### 待开发功能 +- 用户信息管理模块 +- 论坛功能模块 +- 学习资源共享模块 +- 课程表与日程管理模块 +- AI辅助学习模块 +- 搜索功能模块 +- 积分系统模块 + +## 三、开发计划 + +### 阶段一:基础功能完善(2周) + +#### 1. 用户信息管理模块 +- **优先级**:高 +- **负责人**:待定 +- **任务**: + - 完成用户个人信息获取API + - 完成用户个人信息更新API + - 完成用户密码修改API + - 完成用户头像上传API + - 完成用户邮箱更新API + - 实现前端个人主页页面 + - 实现前端个人设置页面 + +#### 2. 论坛功能模块(基础部分) +- **优先级**:高 +- **负责人**:待定 +- **任务**: + - 完成帖子表、评论表、分类表的数据库设计 + - 完成帖子发布、获取、更新、删除API + - 完成评论发布、获取API + - 实现前端帖子列表页面 + - 实现前端帖子详情页面 + - 实现前端帖子发布/编辑页面 + +### 阶段二:核心功能开发(3周) + +#### 3. 论坛功能模块(高级部分) +- **优先级**:中 +- **负责人**:待定 +- **任务**: + - 完成点赞、收藏功能API + - 完成帖子分类管理API + - 完成帖子热门排序算法 + - 实现前端点赞、收藏功能 + - 实现前端分类筛选功能 + +#### 4. 学习资源共享模块 +- **优先级**:中 +- **负责人**:待定 +- **任务**: + - 完成资源表的数据库设计 + - 完成资源上传、下载、分类API + - 完成资源权限管理API + - 实现前端资源列表页面 + - 实现前端资源详情页面 + - 实现前端资源上传页面 + +#### 5. 课程表与日程管理模块 +- **优先级**:中 +- **负责人**:待定 +- **任务**: + - 完成课程表、日程表的数据库设计 + - 完成课程导入、编辑API + - 完成日程安排、提醒API + - 实现前端课程表页面 + - 实现前端日程管理页面 + +### 阶段三:高级功能开发(3周) + +#### 6. 搜索功能模块 +- **优先级**:中 +- **负责人**:待定 +- **任务**: + - 完成全文搜索功能API + - 完成分类搜索功能API + - 实现前端搜索结果页面 + - 实现前端搜索建议功能 + +#### 7. 积分系统模块 +- **优先级**:低 +- **负责人**:待定 +- **任务**: + - 完成积分规则设计 + - 完成积分获取、消费API + - 完成积分排行榜API + - 实现前端积分展示功能 + - 实现前端积分排行榜页面 + +#### 8. AI辅助学习模块 +- **优先级**:低 +- **负责人**:待定 +- **任务**: + - 调研并选择合适的AI服务 + - 完成学习计划制定API + - 完成智能提醒API + - 实现前端AI助手页面 + +### 阶段四:优化与测试(2周) + +#### 9. 性能优化 +- **优先级**:中 +- **负责人**:待定 +- **任务**: + - 前端性能优化(代码分割、懒加载等) + - 后端性能优化(缓存、索引等) + - 数据库性能优化 + +#### 10. 测试与修复 +- **优先级**:高 +- **负责人**:全体成员 +- **任务**: + - 单元测试 + - 集成测试 + - 用户界面测试 + - Bug修复 + +## 四、模块分工建议 + +### 前端开发 +1. **用户界面组件**:负责通用组件、布局、样式等 +2. **用户认证与信息管理**:负责登录、注册、个人信息等页面 +3. **论坛功能**:负责帖子列表、详情、发布等页面 +4. **学习资源与课程表**:负责资源共享、课程表等页面 +5. **AI与搜索功能**:负责AI助手、搜索等页面 + +### 后端开发 +1. **用户服务**:负责用户认证、信息管理等API +2. **内容服务**:负责帖子、评论、资源等API +3. **课程与日程服务**:负责课程表、日程管理等API +4. **AI与搜索服务**:负责AI助手、搜索等API +5. **系统服务**:负责积分系统、通知等API + +## 五、技术难点与解决方案 + +### 1. 用户认证与安全 +- **难点**:确保用户数据安全,防止未授权访问 +- **解决方案**:使用JWT进行认证,实现权限控制,加密敏感数据 + +### 2. 文件上传与存储 +- **难点**:处理大文件上传,确保存储安全 +- **解决方案**:实现分片上传,使用对象存储服务,设置文件类型和大小限制 + +### 3. 实时通知 +- **难点**:实现实时消息推送 +- **解决方案**:使用WebSocket或服务器发送事件(SSE) + +### 4. 搜索功能 +- **难点**:实现高效的全文搜索 +- **解决方案**:考虑使用Elasticsearch或MySQL全文索引 + +### 5. AI功能集成 +- **难点**:选择合适的AI服务并集成 +- **解决方案**:调研开源AI模型或使用第三方AI服务API + +## 六、开发规范 + +### 代码规范 +- 前端:遵循ESLint配置,使用Prettier格式化 +- 后端:遵循阿里巴巴Java开发手册 + +### 提交规范 +- 使用语义化的提交信息 +- 每个功能或修复在单独的分支上开发 +- 提交前进行代码审查 + +### 文档规范 +- API文档使用Swagger/Knife4j生成 +- 重要功能编写设计文档 +- 定期更新开发文档 + +## 七、项目管理 + +### 进度跟踪 +- 每周进行一次进度汇报 +- 使用GitHub Projects或Trello跟踪任务 + +### 会议安排 +- 每周一次全体会议 +- 需要时进行临时技术讨论 + +### 风险管理 +- 定期评估项目风险 +- 制定应急预案 +- 保持良好的团队沟通 \ No newline at end of file