“油炬智愿”项目计划
2025/10/4大约 10 分钟
“油炬智愿”项目计划
1. 项目愿景与目标
- 项目名称: 油炬智愿 —— 中国石油大学(北京)克拉玛依校区志愿服务平台
- 核心定位: 一个以前端展示效果为重点,集活动发布、报名、时长记录、新闻资讯于一体的现代化志愿服务平台。
- 最终目标: 在7月7日或之前,高质量交付一个核心功能可演示、界面美观、技术栈清晰的前后端分离Web应用。
2. 团队成员与任务分工
成员代号 | 负责领域 | 后端核心任务 (API实现) | 前端核心任务 (Vue页面开发) |
---|---|---|---|
同学 A | 用户与认证模块 | 1. 用户注册与登录接口 (JWT认证) 2. 获取/更新当前登录用户信息的接口 | 1. 登录页 (/login )2. 注册页 ( /register )3. 个人中心页 ( /profile ) |
同学 B | 志愿活动模块 | 1. 活动列表查询接口 (支持分页) 2. 单个活动详情查询接口 3. 用户报名/取消报名活动接口 | 1. 活动广场页 (/activities )2. 活动详情页 ( /activities/:id )3. 用户中心的“我的报名”列表 |
同学 C | 新闻与内容模块 | 1. 新闻列表查询接口 2. 单个新闻详情查询接口 3. (简化) 新闻点赞/收藏状态更新接口 | 1. 新闻资讯首页 (/news )2. 新闻详情页 ( /news/:id )3. 简单的点赞/收藏交互按钮 |
同学 D | 后台管理核心 | 1. (管理员)发布/编辑/删除活动的接口 2. (管理员)查看活动报名名单的接口 3. (管理员)手动为用户登记时长的接口 | 1. 后台-活动管理页 (/admin/activities )2. 后台-报名详情页 ( /admin/activities/:id/enrollments )3. 后台-时长录入页 ( /admin/records ) |
同学 E | 统筹、组织与数据 | 1. 组织部门的增删改查接口 2. (统筹) 负责数据库设计与脚本编写 3. (统筹) 负责项目环境问题协调与最终部署 | 1. 组织列表页 (/organizations )2. 后台-数据看板页 ( /admin/dashboard )3. (统筹) 搭建Vue前端项目骨架 |
3. 核心协作流程
- 设计先行: 数据库和API设计必须在编码前完成。
- 并行开发: 前后端利用 Apifox 的 Mock 功能同时开工。
- 每日站会: 建议每天晚上花15分钟开个线上短会,同步进度、暴露问题。
- Git 规范: 严格遵守功能分支工作流,每天下班前必须将当天的代码 Push 到自己的远程功能分支,以防代码丢失。
4. 冲刺阶段时间规划 (Deadline: 7月7日)
时间紧迫,我们将分为三个冲刺阶段。
阶段 | 时间范围 | 核心任务 | 交付成果与里程碑 |
---|---|---|---|
阶段一 (设计与奠基) | 6月27日(周五) - 6月29日(周日) (3天) | 1. 全员: 最终确认本方案与分工。 2. 同学E牵头: 完成数据库设计,提交 V1__initial_schema.sql 。3. 全员: 在 Apifox 中完成自己所负责模块的全部API接口定义。 | 周日晚前,必须完成所有设计工作。Apifox 成为可交付的“API契约文档”,数据库结构完全确定。 |
阶段二 (核心功能编码) | 6月30日(周一) - 7月4日(周五) (5天) | 1. 后端: 全员完成各自负责的后端API接口的核心逻辑编码。 2. 同学E: 搭建 Vue 3 + Vite 的前端项目骨架并推送。 3. 前端: 全员使用 Mock 数据,完成各自前端页面的布局和主要交互功能。 | 周五晚前,所有成员基本完成自己模块的独立开发。前后端可以开始进行初步的冒烟联调。 |
阶段三 (集成、测试与冲刺) | 7月5日(周六) - 7月7日(周一) (3天) | 1. 全员: 高强度进行前后端接口联调,解决对接问题。 2. 团队交叉测试,发现并快速修复 Bug。 3. 对核心页面进行 UI 美化和体验优化。 4. 准备演示材料。 | 7月7日晚,项目核心功能可流畅演示,满足答辩要求。 |
下一步行动:立即启动!
启动设计: 会议结束后,立即开始第一阶段的工作。
* 全员立即开始讨论数据库表结构。
* 同学 E 准备接收讨论结果,编写 SQL 脚本。
* 登录 Apifox,熟悉界面,准备根据讨论结果设计 API。
1. 任务总览与核心 API 端点
成员代号 | 负责模块 | 核心API端点 (负责设计与实现) |
---|---|---|
同学 A | 用户与认证模块 | POST /api/auth/register POST /api/auth/login GET /api/users/me PUT /api/users/me |
同学 B | 志愿活动模块 | GET /api/activities GET /api/activities/{id} POST /api/activities/{id}/enroll DELETE /api/activities/{id}/enroll |
同学 C | 新闻与内容模块 | GET /api/news GET /api/news/{id} POST /api/news/{id}/like |
同学 D | 后台管理核心 | POST /api/admin/activities GET /api/admin/activities/{id}/enrollments POST /api/admin/service-records |
同学 E | 统筹、组织与数据 | GET /api/organizations POST /api/organizations GET /api/admin/dashboard/stats |
2. 成员详细任务分解
同学 A: 用户与认证模块
你的核心职责是构建系统的用户体系,确保用户可以安全地注册、登录、并管理自己的信息。
后端 (Backend) 任务:
- 设计并实现以下 API 接口:
POST /api/auth/register
- 作用: 用户注册。
- 逻辑: 接收用户名、密码等信息,对密码进行加密存储,然后将新用户信息存入
users
表。
POST /api/auth/login
- 作用: 用户登录。
- 逻辑: 验证用户名和密码,如果成功,生成一个 JWT Token 并返回给前端。
GET /api/users/me
- 作用: 获取当前登录用户的信息。
- 逻辑: 从前端请求带来的 Token 中解析出用户 ID,然后查询数据库返回该用户的详细信息。
PUT /api/users/me
- 作用: 更新当前用户的个人信息。
- 逻辑: 允许用户修改自己的真实姓名、邮箱、手机号等信息。
前端 (Frontend) 任务:
- 需要开发的网页:
登录页 (/login)
: 创建一个包含用户名和密码输入框的登录表单。注册页 (/register)
: 创建一个包含必填项的注册表单。个人中心页 (/profile)
: 展示当前用户的详细信息,并提供一个表单来修改这些信息。
- 需要实现的功能:
- 调用登录/注册接口,并根据返回结果给出提示。
- 登录成功后,将 Token 保存到浏览器中(如 Pinia 或 localStorage)。
- 配置前端路由守卫,实现未登录用户无法访问个人中心页等受保护的路由。
同学 B: 志愿活动模块
你的核心职责是构建平台的主要业务功能,让志愿者能够浏览、搜索并参与到志愿活动中。
后端 (Backend) 任务:
- 设计并实现以下 API 接口:
GET /api/activities
- 作用: 获取所有可参加的志愿活动列表。
- 逻辑: 从
activities
表中查询数据,需要支持分页功能,以便前端可以一页一页地加载。
GET /api/activities/{id}
- 作用: 根据活动 ID 获取单个活动的详细信息。
POST /api/activities/{id}/enroll
- 作用: 用户报名参加指定活动。
- 逻辑: 在
enrollments
表中创建一条记录,并将activities
表中对应活动的current_enrollment
字段加一。需要进行权限和逻辑检查(如用户是否已登录,活动是否满员等)。
DELETE /api/activities/{id}/enroll
- 作用: 用户取消已报名的活动。
前端 (Frontend) 任务:
- 需要开发的网页:
活动广场页 (/activities)
: 以卡片列表的形式,图文并茂地展示所有活动。活动详情页 (/activities/:id)
: 展示活动的标题、描述、时间、地点、主办方、已报名人数等所有详细信息。
- 需要实现的功能:
- 在活动广场页,调用API获取活动数据并渲染,实现“加载更多”或页码分页的功能。
- 在活动详情页,根据用户的报名状态,显示“立即报名”或“取消报名”按钮,并实现相应的点击交互。
- 在个人中心页中,需要有一个“我报名的活动”列表,展示该用户所有报名记录。
同学 C: 新闻与内容模块
你的核心职责是让平台的内容丰富起来,为用户提供新闻资讯。
后端 (Backend) 任务:
- 设计并实现以下 API 接口:
GET /api/news
- 作用: 获取新闻列表。
- 逻辑: 从
news
表中查询数据,支持分页。
GET /api/news/{id}
- 作用: 根据 ID 获取单篇新闻的详细内容。
POST /api/news/{id}/like
- 作用: 用户点赞新闻。
- 逻辑 (简化版): 接收到请求后,直接将
news
表中对应记录的likes_count
字段加一即可。
前端 (Frontend) 任务:
- 需要开发的网页:
新闻资讯页 (/news)
: 以列表形式展示所有新闻的标题、摘要和发布时间。新闻详情页 (/news/:id)
: 展示新闻的完整标题和正文内容。
- 需要实现的功能:
- 调用 API 获取新闻数据并展示。
- 实现点击新闻列表项,跳转到对应的新闻详情页。
- 在详情页底部,放置一个“点赞”按钮,点击后调用 API 并实时更新页面上的点赞数。
同学 D: 后台管理核心
你的核心职责是为管理员提供强大的后台管理能力,确保平台的正常运营。
后端 (Backend) 任务:
- 设计并实现以下 API 接口 (所有接口都需要管理员权限):
POST /api/admin/activities
- 作用: 管理员发布新活动。
GET /api/admin/activities/{id}/enrollments
- 作用: 查看指定活动的所有报名人员列表。
POST /api/admin/service-records
- 作用: 管理员为指定用户手动登记某次活动的服务时长。
- 逻辑: 在
service_records
表中创建记录,并同步更新users
表中该用户的total_service_hours
字段。
前端 (Frontend) 任务:
- 需要开发的网页 (后台管理界面):
后台-活动管理页 (/admin/activities)
: 用表格展示所有活动,并提供“编辑”、“删除”、“查看报名”等操作按钮。包含一个用于“发布新活动”的表单。后台-报名详情页 (/admin/activities/:id/enrollments)
: 展示某个活动的所有报名者列表。后台-时长录入页 (/admin/records)
: 提供一个表单,让管理员可以选择用户和活动,并输入时长进行登记。
同学 E: 统筹、组织与数据
你的核心职责是保证项目基础稳固,负责组织模块和数据看板,并协调团队解决技术难题。
后端 (Backend) 任务:
- 设计并实现以下 API 接口:
GET /api/organizations
- 作用: 获取所有组织部门的列表。
POST /api/organizations
- 作用: (管理员)创建新的组织部门。
GET /api/admin/dashboard/stats
- 作用: 为后台的数据看板提供统计数据。
- 逻辑: 需要编写聚合查询,返回例如:平台总用户数、活动总数、累计总服务时长等核心指标。
前端 (Frontend) 任务:
- 需要开发的网页:
组织列表页 (/organizations)
: 展示所有已创建的组织部门信息。后台-数据看板页 (/admin/dashboard)
: 调用 API 获取统计数据,并使用图表库(如 ECharts)将数据可视化展示出来,例如用柱状图展示各组织人数,用饼图展示时长分布等。
统筹 (Project-level) 任务:
- 数据库: 牵头组织大家讨论数据库表结构,并最终负责编写、提交和维护
sql/V1__initial_schema.sql
脚本文件。 - 前端骨架: 负责使用
npm create vue@latest
初始化我们项目的前端仓库骨架,配置好路由 (vue-router
) 和状态管理 (pinia
),并推送给团队。 - 环境协调: 作为项目环境问题的“第一响应人”,协助解决团队成员遇到的 Git、Docker 等环境问题。