团队作业3--需求改进&系统设计
From KFCoder✅️
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | ->点我进入课程主页 |
| 这个作业要求在哪里 | ->点我查看作业要求 |
一、需求改进
1.1 针对课堂讨论的修改
上周课堂中,老师与其他小组聚焦 “数据效率”“提醒精准性”“功能完整性” 提出建议,结合设备联动实现难度,我们围绕核心痛点优化如下:
| 问题 | 修改 |
|---|---|
| 运动数据仅支持手动输入,操作繁琐;未考虑智能设备联动的兼容性,用户体验低效 | 【设想预留】FR-D1:智能设备联动同步功能:暂不落地开发,仅预留接口设计;当前优化手动输入体验,新增“运动类型快捷选择(如步行/跑步/瑜伽)”“常用数据一键填充”功能;明确设备联动为最低优先级设想功能,待基础功能稳定后再评估实现可行性 |
| 提醒管理模块仅说明自定义时间 / 周期,未明确不同打卡类型的差异化规则,提醒实用性弱 | 细化FR-R2:分类型提醒规则(高优先级):运动类提醒关联健康目标(如目标步数未达标时,提醒频率提升至每30分钟1次);饮食类提醒匹配用餐时间推荐(如早餐提醒附带“低GI主食建议”);饮水提醒按2小时间隔推送,结合当日饮水量进度调整文案 |
| 需求未覆盖 “健康建议个性化”,仅统计数据无指导价值 | 新增FR-A1:个性化健康建议功能(高优先级):基于用户打卡数据(如连续3天睡眠不足6小时),自动生成适配其健康目标的建议(如“今日建议增加20分钟午休”),嵌入日/周健康报告 |
| 需求文档缺少功能验收标准,可落地性不足 | 补充各核心功能验收指标(高优先级):如“打卡完成率统计误差≤2%”“数据导出文件格式兼容Excel/CSV”“提醒消息送达率≥99%”;设备联动因暂不开发,暂不制定验收标准 |
说明:因智能设备联动功能技术实现难度较高,当前仅作为设想预留扩展空间,优先级调整为最低,核心开发资源聚焦基础及高价值功能
1.2 目标用户调研与原型展示
为验证需求合理性,我们选取2类典型目标用户,采用 线下1v1访谈+ 线上问卷 的调研方式,收集痛点与使用反馈:
典型用户痛点 & 场景
| 用户 | 痛点 | 场景(去除设备联动相关描述,聚焦当前可实现功能) |
|---|---|---|
| 职场白领小A(28岁,健康目标:月减3斤) | 工作忙忘记饮水/记录饮食,手动输入运动数据太耗时;提醒内容笼统,和自身减脂目标不匹配 | 周一早8点,小A收到APP弹窗提醒(FR-R2):“该吃早餐啦~推荐搭配全麦面包+鸡蛋(适配你的减脂目标)”,她通过“早餐-轻食”快捷选项完成饮食打卡,再选“500ml”快捷按钮完成饮水打卡(FR-C1)。中午步行20分钟回公司,通过“步行-20分钟”快捷选项快速完成运动打卡。晚上9点,APP提醒“你的今日步数还差2000步,楼下散步10分钟就能达标~”,她完成散步后,查看当日柱状图(FR-V1),发现打卡完成率90%,报告附带“明日可增加10分钟瑜伽”的个性化建议(FR-A1)。 |
| 健身新手小B(20岁,健康目标:增肌) | 不知道怎么匹配饮食/运动与增肌目标;无法直观看到睡眠/训练数据的变化趋势 | 小B在用户管理模块(FR-U1)设置“增肌”健康目标后,每次饮食打卡时,APP会提示“今日蛋白质摄入还需50g,可补充1个鸡蛋+200ml牛奶”(FR-A1)。周末完成1小时力量训练后,通过“力量训练-1小时”快捷选项同步数据,周健康报告(FR-S1)用折线图展示其睡眠时长从6小时提升至7.5小时,附带“增肌期建议睡眠≥7.5小时”的指导。 |
使用前后对比(更新数据记录效率来源)
| 维度 | 使用前 | 使用后 |
|---|---|---|
| 数据记录效率 | 手动记饮食/运动,每天耗时15分钟,常遗漏 | 快捷选项+分类模板,记录耗时≤3分钟,无遗漏 |
| 提醒实用性 | 闹钟式提醒,常忽略,和目标无关 | 分类型精准提醒,关联健康目标,响应率提升至85% |
| 健康指导 | 无针对性建议,盲目调整习惯 | 个性化报告+适配建议,能针对性优化饮食/运动 |
1.3 上周需求规格说明书的不足与改进
上周初稿存在“功能关联弱、可落地性差、体验单一”等问题,具体改进如下:
| 不足 | 改进 |
|---|---|
| 功能间关联描述缺失,未体现流程连贯性 | 补充“职场白领小A”用户故事,串联“提醒-打卡-统计-建议”全流程,去除原设备联动相关内容,明确当前可实现功能的联动逻辑 |
| 无功能验收标准,开发边界模糊 | 新增核心功能验收指标,明确设备联动为“设想功能”,暂不纳入开发范围,避免资源浪费 |
| 缺乏个性化设计,用户体验同质化 | 新增“个性化健康建议”功能(高优先级),基于用户健康目标+打卡数据生成适配内容;同时优化手动打卡体验,新增快捷选项,替代原设备联动的效率提升方案 |
2. 功能分析的四个象限
2.1 重要紧急
- 用户注册/登录(FR-U1)
- 基础打卡功能(运动/饮食/睡眠/饮水,含快捷选项,FR-C1)
- 基础提醒功能(自定义时间/周期,FR-R1)
2.2 重要不紧急
- 数据统计(日/周/月报告+分类筛选,FR-S1)
- 可视化图表(柱状图/折线图+缩放,FR-V1)
- 个性化健康建议(FR-A1)
- 分类型提醒规则(FR-R2)
2.3 紧急不重要
- 账号安全找回(重置密码,FR-U2)
- 个人信息修改(FR-U3)
2.4 不重要不紧急
- 数据导出(FR-E1)
- 【设想功能】智能设备联动同步(FR-D1,实现难度高,暂不开发)

3. 任务分解 WBS 及 项目进度计划
3.1 任务分解 WBS
① 需求完善
1.1 用户故事 & 验收标准补充
1.2 功能优先级校准
② 模块开发
2.1 用户管理模块(FR-U1/2/3)
2.2 打卡管理模块(FR-C1)
2.3 提醒管理模块(FR-R1/2)
2.4 数据统计 + 个性化建议模块(FR-S1+FR-A1)
2.5 可视化 + 数据导出模块(FR-V1+FR-E1)
③ 测试
3.1 功能流程测试
3.2 设备联动兼容性测试
④ 上线准备
4.1 原型最终优化
4.2 任务复盘文档
3.2 项目进度计划
A. 规划与设计阶段
| Issues编号 | 任务名称 | 负责人 | 截止日期 | 状态 | 优先级 | 备注 |
|---|---|---|---|---|---|---|
| #1 | 撰写需求规格说明书 | 辜艺淇 | 2025-11-08 | 已完成 | 高 | (调整)补充FR-A1/FR-R2需求,明确FR-D1为设想功能 |
| #8 | 确定技术栈与架构方案 | 徐新曜 | 2025-11-15 | 已完成 | 高 | (调整)聚焦核心模块架构,设备联动仅做接口预留规划 |
| #2 | 设计前端打卡页面原型 | 罗芷忻 | 2025-11-15 | 已完成 | 高 | (调整)新增“快捷打卡选项”“分类模板”,删除设备同步相关设计 |
| #5 | 数据库表结构设计 | 许国伟 | 2025-11-15 | 已完成 | 高 | (调整)完善打卡数据字段 |
| #21【新增】 | 设计分类型提醒界面原型 | 罗芷忻 | 2025-11-22 | 进行中 | 高 | 设计运动/饮食/饮水分类提醒设置界面,关联健康目标 |
| #22【新增】 | 设计个性化建议展示原型 | 罗芷忻 | 2025-11-22 | 进行中 | 中 | 设计健康报告页面,包含数据图表+个性化建议模块 |
B. 后端开发阶段
| Issues编号 | 任务名称 | 负责人 | 截止日期 | 状态 | 优先级 | 备注 |
|---|---|---|---|---|---|---|
| #3 | 开发用户注册登录接口 | 徐新曜 | 2025-11-23 | 未开始 | 高 | (调整)新增“健康目标设置”字段接口,关联个性化建议算法 |
| #9 | 开发核心打卡业务接口 | 许国伟 | 2025-12-02 | 未开始 | 高 | (调整)开发快捷打卡接口,支持分类模板数据快速提交 |
| #24【新增】 | 开发分类型提醒接口 | 许国伟 | 2025-12-04 | 未开始 | 高 | 开发提醒规则CRUD接口,支持按类型返回个性化提醒文案 |
| #10 | 开发数据统计与分析接口 | 徐新曜 | 2025-12-06 | 未开始 | 中 | (调整)新增个性化建议算法接口,基于打卡数据生成健康指导 |
| #11 | 开发数据导出接口 | 许国伟 | 2025-12-07 | 未开始 | 中 | 支持导出打卡数据报表,兼容Excel/CSV |
| #23【设想】 | 设备联动接口技术调研 | 徐新曜 | 2025-12-20 | 未开始 | 低 | 仅做技术可行性调研,不进行开发,输出调研文档 |
C. 前端开发阶段
| Issues编号 | 任务名称 | 负责人 | 截止日期 | 状态 | 优先级 | 备注 |
|---|---|---|---|---|---|---|
| #12 | 实现用户登录注册页面 | 田璐 | 2025-11-25 | 未开始 | 高 | (调整)新增“健康目标选择”弹窗,对接#3接口 |
| #13 | 实现核心打卡功能页面 | 罗芷忻 | 2025-12-04 | 未开始 | 高 | (调整)集成“快捷打卡选项”“分类模板” |
| #26【新增】 | 实现提醒规则设置页面 | 田璐 | 2025-12-05 | 未开始 | 高 | 按运动/饮食/饮水类型设置提醒频率,对接#24接口 |
| #14 | 实现数据统计与报表页面 | 田璐 | 2025-12-08 | 未开始 | 中 | (调整)新增个性化建议模块,用图表展示打卡数据,对接#10接口 |
D. 测试与质量保障阶段
| Issues编号 | 任务名称 | 负责人 | 截止日期 | 状态 | 优先级 | 备注 |
|---|---|---|---|---|---|---|
| #15 | 制定整体测试计划 | 陈曦 | 2025-11-18 | 已完成 | 中 | 聚焦核心功能测试 |
| #4 | 设计数据导出功能测试用例 | 陈曦 | 2025-12-07 | 未开始 | 低 | 设计打卡数据导出的测试用例,验证数据完整性 |
| #28【新增】 | 设计提醒规则功能测试用例 | 陈曦 | 2025-12-05 | 未开始 | 高 | 按运动/饮食/饮水类型测试提醒逻辑,验证与健康目标的匹配度 |
| #16 | 执行功能测试与集成测试 | 陈曦 | 2025-12-14 | 未开始 | 高 | 重点测试“提醒-打卡-统计-建议”全流程,覆盖核心功能场景 |
| #17 | 性能与安全测试 | 白子璇 | 2025-12-14 | 未开始 | 中 | 测试核心模块响应速度与用户数据安全性 |
E. 部署与交付阶段
| Issues编号 | 任务名称 | 负责人 | 截止日期 | 状态 | 优先级 | 备注 |
|---|---|---|---|---|---|---|
| #18 | 服务器环境准备与配置 | 徐新曜 | 2025-12-15 | 未开始 | 高 | 配置核心模块所需环境 |
| #19 | 系统部署与上线 | 徐新曜 | 2025-12-17 | 未开始 | 高 | 部署核心功能版本,确保“打卡-提醒-分析”链路稳定 |
| #7 | 项目文档整理与归档 | 白子璇 | 2025-12-20 | 未开始 | 中 | 补充个性化建议算法说明、快捷打卡功能文档,附设备联动调研文档 |
| #20 | 项目总结与复盘 | 辜艺淇 | 2025-12-27 | 未开始 | 低 | 复盘核心功能开发效率,评估设备联动后续实现价值 |
二、系统架构设计
1. 架构模式
采用前后端分离的架构模式:
- 前端:负责用户界面展示和交互逻辑
- 后端:提供RESTful API服务,处理业务逻辑和数据存储
- 数据库:持久化存储系统数据
- 文件存储:可选,用于存储用户上传的图片(如运动证明、饮食照片等)
2. 技术栈选择
前端技术栈:
- 框架:Vue.js 3 + Vite
- UI组件库:Element Plus
- HTTP客户端:Axios
- 状态管理:Pinia
- 路由:Vue Router
- 图表可视化:ECharts
后端技术栈:
- 框架:Spring Boot 3.x
- ORM框架:MyBatis-Plus
- 数据库:MySQL 8.0
- 认证授权:Spring Security + JWT
- API文档:Swagger/OpenAPI 3.0
开发工具:
- IDE:IntelliJ IDEA, VS Code
- 构建工具:Maven, npm
- 版本控制:Git
- CI/CD:GitHub Action
3. 系统架构图
+------------------+ +------------------+ +------------------+
| 前端应用 | | 后端服务 | | 数据存储 |
| (Vue.js + Vite) | <--> | (Spring Boot) | <--> | (MySQL) |
+------------------+ +------------------+ +------------------+
^
|
+------------------+
| 用户浏览器/APP |
+------------------+
4. 核心流程
- 用户认证流程:
- 用户登录请求 → 后端验证凭据 → 生成JWT令牌 → 返回给前端
- 前端存储JWT令牌 → 后续请求携带令牌 → 后端验证令牌有效性
- 打卡记录流程:
- 前端提交打卡数据 → 后端验证用户身份 → 处理业务逻辑 → 保存到数据库 → 返回结果
- 数据统计流程:
- 前端请求统计数据 → 后端查询数据库 → 数据聚合处理 → 返回统计结果
5. 后端三层架构设计
5.1 架构分层说明
后端采用经典的三层架构设计,各层职责明确,解耦合高,便于维护和扩展。
5.1.1 控制层(Controller Layer)
- 职责:处理HTTP请求,参数校验,调用服务层,返回响应结果
- 组件:
- 各类Controller类,负责不同功能模块的路由处理
- DTO(Data Transfer Object)用于前后端数据传输
- 全局异常处理器,统一处理和包装异常响应
5.1.2 服务层(Service Layer)
- 职责:实现核心业务逻辑,协调多个数据访问操作
- 组件:
- Service接口定义业务方法
- ServiceImpl实现类包含具体业务逻辑
- 事务管理,确保数据一致性
5.1.3 数据访问层(DAO/Repository Layer)
- 职责:负责与数据库交互,执行CRUD操作
- 组件:
- Mapper接口(基于MyBatis-Plus)
- 实体类(Entity/Model)对应数据库表结构
- 自定义SQL(如需要)
5.2 核心模块划分
基于功能模块划分,后端主要包含以下几个核心模块:
- 用户模块:处理用户注册、登录、信息管理
- 运动打卡模块:记录和管理用户运动数据
- 饮食记录模块:记录和管理用户饮食数据
- 睡眠记录模块:记录和管理用户睡眠数据
- 饮水记录模块:记录和管理用户饮水数据
- 统计分析模块:提供数据统计和分析功能
5.3 包结构设计
com.shiliuzi.healthcheckin
├── HealthCheckInApplication.java # 应用入口
├── common/ # 公共组件
│ ├── config/ # 配置类
│ ├── constant/ # 常量定义
│ ├── exception/ # 异常处理
│ └── util/ # 工具类
├── controller/ # 控制层
│ ├── UserController.java
│ ├── ExerciseController.java
│ ├── DietController.java
│ ├── SleepController.java
│ └── WaterController.java
├── service/ # 服务层
│ ├── UserService.java
│ ├── ExerciseService.java
│ ├── DietService.java
│ ├── SleepService.java
│ ├── WaterService.java
│ └── impl/ # 服务实现
├── mapper/ # 数据访问层
│ ├── UserMapper.java
│ ├── ExerciseMapper.java
│ ├── DietMapper.java
│ ├── SleepMapper.java
│ └── WaterMapper.java
├── model/ # 数据模型
│ ├── entity/ # 实体类
│ ├── dto/ # 数据传输对象
│ └── vo/ # 视图对象
└── security/ # 安全相关
├── config/ # 安全配置
├── filter/ # 过滤器
└── util/ # 安全工具类
6. 用户认证与JWT管理方案
6.1 认证流程设计
采用基于JWT(JSON Web Token)的无状态认证机制,完整流程如下:
- 用户注册:
- 用户提交注册信息(用户名、密码、邮箱等)
- 后端验证信息合法性,密码进行加密存储
- 创建用户账户,返回注册结果
- 用户登录:
- 用户提交登录凭据(用户名/邮箱、密码)
- 后端验证凭据有效性
- 生成JWT令牌,包含用户ID、角色等信息
- 返回JWT令牌及用户基本信息
- API访问:
- 前端请求携带JWT令牌(通常在Authorization header)
- JWT过滤器拦截请求,验证令牌有效性
- 验证通过后,提取用户信息并继续处理请求
- 验证失败则返回401/403错误
6.2 JWT令牌结构
JWT令牌由三部分组成:Header、Payload、Signature
6.2.1 Header
{
"alg": "HS256", // 加密算法
"typ": "JWT" // 令牌类型
}
6.2.2 Payload
{
"sub": "1", // 用户ID
"iat": 1677618245, // 签发时间
"exp": 1677625445 // 过期时间
}
6.3 安全配置
6.3.1 密码安全
- 密码使用BCrypt算法进行加密存储
- 设置密码复杂度要求(长度、字符类型等)
- 登录失败次数限制,防止暴力破解
6.3.2 JWT安全
- 设置合理的令牌过期时间(建议15分钟-7天)
- 使用强密钥进行签名
- 敏感信息不放入Payload中
- 支持令牌刷新机制
6.4 关键组件
6.4.1 JwtTokenProvider
- 负责JWT令牌的生成、解析和验证
- 包含密钥管理、过期时间设置等功能
6.4.2 JwtAuthenticationFilter
- 拦截请求,从Header中提取JWT令牌
- 验证令牌有效性,设置安全上下文
6.4.3 SecurityConfig
- 配置Spring Security,设置安全规则
- 定义哪些端点需要认证,哪些可以匿名访问
7. 数据库设计
7.1 数据库表结构概览
基于系统功能需求,设计以下核心数据表:
- 用户表(
user):存储用户基本信息和认证信息 - 运动打卡表(
exercise_record):记录用户每日运动数据 - 饮食记录表(
diet_record):记录用户每日饮食数据 - 睡眠记录表(
sleep_record):记录用户每日睡眠数据 - 饮水记录表(
water_record):记录用户每日饮水数据
7.2 详细表结构设计
7.2.1 用户表(user)
| 字段名 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
id |
BIGINT |
PRIMARY KEY AUTO_INCREMENT |
用户ID |
username |
VARCHAR(50) |
UNIQUE NOT NULL |
用户名 |
password |
VARCHAR(255) |
NOT NULL |
加密后的密码 |
email |
VARCHAR(100) |
UNIQUE NOT NULL |
邮箱地址 |
nickname |
VARCHAR(50) |
用户昵称 | |
avatar |
VARCHAR(255) |
头像URL | |
gender |
TINYINT |
性别(0:未知, 1:男, 2:女) | |
birthday |
DATE |
出生日期 | |
height |
DECIMAL(5,2) |
身高(cm) | |
weight |
DECIMAL(5,2) |
体重(kg) | |
role |
VARCHAR(20) |
DEFAULT 'USER' |
角色(USER/ADMIN) |
status |
TINYINT |
DEFAULT 1 |
状态(0:禁用, 1:启用) |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
7.2.2 运动打卡表(exercise_record)
| 字段名 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
id |
BIGINT |
PRIMARY KEY AUTO_INCREMENT |
记录ID |
user_id |
BIGINT |
NOT NULL, FOREIGN KEY REFERENCES user(id) |
用户ID |
record_date |
DATE |
NOT NULL |
记录日期 |
exercise_type |
VARCHAR(50) |
NOT NULL |
运动类型(跑步、游泳、健身等) |
duration |
INT |
NOT NULL |
运动时长(分钟) |
distance |
DECIMAL(8,2) |
运动距离(公里,如跑步) | |
calories |
INT |
消耗卡路里 | |
description |
TEXT |
运动描述 | |
image_url |
VARCHAR(255) |
运动证明图片URL | |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
索引:
INDEX idx_user_date (user_id, record_date)- 加速用户按日期查询
7.2.3 饮食记录表(diet_record)
| 字段名 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
id |
BIGINT |
PRIMARY KEY AUTO_INCREMENT |
记录ID |
user_id |
BIGINT |
NOT NULL, FOREIGN KEY REFERENCES user(id) |
用户ID |
record_date |
DATE |
NOT NULL |
记录日期 |
meal_type |
TINYINT |
NOT NULL |
餐次类型(1:早餐, 2:午餐, 3:晚餐, 4:加餐) |
food_name |
VARCHAR(100) |
NOT NULL |
食物名称 |
quantity |
VARCHAR(50) |
数量 | |
calories |
INT |
卡路里 | |
protein |
DECIMAL(6,2) |
蛋白质(克) | |
carbs |
DECIMAL(6,2) |
碳水化合物(克) | |
fat |
DECIMAL(6,2) |
脂肪(克) | |
description |
TEXT |
饮食描述 | |
image_url |
VARCHAR(255) |
食物图片URL | |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
索引:
INDEX idx_user_date_meal (user_id, record_date, meal_type)- 加速用户按日期和餐次查询
7.2.4 睡眠记录表(sleep_record)
| 字段名 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
id |
BIGINT |
PRIMARY KEY AUTO_INCREMENT |
记录ID |
user_id |
BIGINT |
NOT NULL, FOREIGN KEY REFERENCES user(id) |
用户ID |
sleep_date |
DATE |
NOT NULL |
睡眠日期(实际睡眠的日期) |
sleep_start_time |
DATETIME |
NOT NULL |
入睡时间 |
sleep_end_time |
DATETIME |
NOT NULL |
起床时间 |
sleep_duration |
DECIMAL(5,2) |
NOT NULL |
睡眠时长(小时) |
sleep_quality |
TINYINT |
睡眠质量(1-5级) | |
description |
TEXT |
睡眠描述 | |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
updated_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
更新时间 |
索引:
INDEX idx_user_sleep_date (user_id, sleep_date)- 加速用户按睡眠日期查询
7.2.5 饮水记录表(water_record)
| 字段名 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
id |
BIGINT |
PRIMARY KEY AUTO_INCREMENT |
记录ID |
user_id |
BIGINT |
NOT NULL, FOREIGN KEY REFERENCES user(id) |
用户ID |
record_date |
DATE |
NOT NULL |
记录日期 |
drink_time |
TIME |
NOT NULL |
饮水时间 |
amount |
INT |
NOT NULL |
饮水量(毫升) |
water_type |
VARCHAR(50) |
水类型(纯水、茶、咖啡等) | |
created_at |
TIMESTAMP |
DEFAULT CURRENT_TIMESTAMP |
创建时间 |
索引:
INDEX idx_user_date_time (user_id, record_date, drink_time)- 加速用户按日期和时间查询INDEX idx_user_date (user_id, record_date)- 加速用户每日统计查询
7.3 表关系图
+-------------+
| user |
+-------------+
| id (PK) |
| username |
| password |
| email |
| ... |
+-------------+
|
| 1:N
+------------------+------------------+
| | |
+----------------+ +----------------+ +----------------+
|exercise_record | | diet_record | | sleep_record |
+----------------+ +----------------+ +----------------+
|id (PK) | |id (PK) | |id (PK) |
|user_id (FK) | |user_id (FK) | |user_id (FK) |
|record_date | |record_date | |sleep_date |
|... | |... | |... |
+----------------+ +----------------+ +----------------+
|
+----------------+
| water_record |
+----------------+
|id (PK) |
|user_id (FK) |
|record_date |
|... |
+----------------+
7.4 数据约束
- 主键约束:所有表都有自增主键
- 外键约束:确保数据完整性
- 唯一约束:确保用户名和邮箱唯一
- 非空约束:确保必要字段有值
- 检查约束:可以在应用层实现(如性别、状态等枚举值校验)
8. 部署与扩展性考虑
8.1 部署架构
- 开发环境:
- 前端:Node.js + Vite开发服务器
- 后端:Spring Boot内嵌Tomcat
- 数据库:本地MySQL
- 生产环境:
- 前端:Nginx静态资源服务
- 后端:Spring Boot应用部署在独立Tomcat或容器化部署(Docker)
- 数据库:独立MySQL服务器或云数据库服务
8.2 扩展性设计
- 模块化设计:
- 各功能模块高度内聚,便于独立开发和测试
- 接口设计标准化,便于未来扩展新功能
- 数据扩展:
- 数据库设计预留扩展字段
- 支持自定义健康指标记录
- 性能优化:
- 数据库索引优化
- 合理使用缓存减少数据库压力
- API接口返回数据分页处理
- 安全扩展:
- 支持未来集成第三方登录
- 支持多因素认证
三、Alpha 任务分配计划
Sprint Backlog
| Sprint ID | 任务名称 | 所属模块 | 任务描述 | 依赖任务 | 预估时间(小时) | 认领人 | 计划开始(Day) | 计划结束(Day) |
|---|---|---|---|---|---|---|---|---|
| SB01 | 后端基础架构搭建 | 后端支撑 | 初始化 Spring Boot 项目、配置 MySQL 连接 | - | 4 | 徐新曜 | 1 | 1 |
| SB02 | 核心数据库表落地 | 后端支撑 | 创建用户表、打卡表 | SB01 | 3 | 许国伟 | 1 | 1 |
| SB03 | 前端基础框架搭建 | 前端支撑 | 初始化 H5 项目、配置路由 | - | 3 | 罗芷忻 | 1 | 1 |
| SB04 | 用户注册接口开发 | 用户管理 | 实现注册逻辑 | SB02 | 3 | 许国伟 | 2 | 2 |
| SB05 | 用户登录接口开发 | 用户管理 | 实现登录逻辑 | SB04 | 3 | 许国伟 | 2 | 2 |
| SB06 | 前端登录页面开发 | 用户管理 | 设计登录 UI、对接 SB05 登录接口、处理 Token 存储 | SB03、SB05 | 4 | 罗芷忻 | 2 | 2 |
| SB07 | 前端注册页面开发 | 用户管理 | 设计注册 UI、对接 SB04 注册接口、添加表单校验 | SB03、SB04 | 4 | 罗芷忻 | 3 | 3 |
| SB08 | 密码重置接口开发 | 用户管理 | 实现 “手机号 / 邮箱验证 → 重置密码” 逻辑、关联用户表更新 | SB02 | 2 | 许国伟 | 3 | 3 |
| SB09 | 前端密码重置页面开发 | 用户管理 | 设计重置 UI、对接 SB08 接口、适配多手机型号 | SB03、SB08 | 3 | 田璐 | 3 | 3 |
| SB10 | 运动 / 饮食打卡接口开发 | 打卡管理 | 实现运动、饮食打卡逻辑,关联用户 ID 存储数据 | SB05 | 6 | 许国伟 | 4 | 4 |
| SB11 | 饮水 / 睡眠打卡接口开发 | 打卡管理 | 实现饮水、睡眠打卡逻辑 | SB05 | 4 | 许国伟 | 4 | 4 |
| SB12 | 前端打卡首页开发 | 打卡管理 | 设计 Tab 切换,统一页面样式 | SB03 | 5 | 罗芷忻 | 4 | 5 |
| SB13 | 前端打卡子页面开发 | 打卡管理 | 开发运动、饮食、饮水、睡眠子页面 | SB11、SB12 | 8 | 罗芷忻 | 5 | 5 |
| SB14 | 前端打卡页面适配 | 打卡管理 | 优化打卡子页面在不同手机分辨率的显示、修复交互 bug | SB13 | 1 | 田璐 | 5 | 5 |
| SB15 | 每日打卡记录接口开发 | 数据展示 | 实现按用户 ID + 日期查询打卡记录的接口,返回打卡类型、时长 / 容量等明细 | SB05、SB11 | 2 | 徐新曜 | 6 | 6 |
| SB16 | 前端打卡记录页面开发 | 数据展示 | 设计列表页、对接 SB15 接口、添加下拉刷新功能 | SB03、SB15 | 3 | 田璐 | 6 | 6 |
| SB17 | 提醒时间存储接口开发 | 提醒管理 | 实现 “用户 - 打卡项 - 提醒时间” 关联存储接口,支持基础重复周期 | SB05 | 2 | 徐新曜 | 6 | 6 |
| SB18 | 前端提醒设置页面开发 | 提醒管理 | 设计时间选择器、重复周期选项、对接 SB17 接口 | SB03、SB17 | 3 | 田璐 | 7 | 7 |
| SB19 | APP 内弹窗提醒逻辑开发 | 提醒管理 | 实现前端定时检测提醒时间、触发弹窗提醒 | SB18 | 1 | 罗芷忻 | 7 | 7 |
| SB20 | 核心功能测试用例设计 | 测试保障 | 设计用户模块、打卡模块的功能测试用例 | SB04、SB11 | 4 | 陈曦 | 8 | 8 |
| SB21 | 接口测试执行 | 测试保障 | 验证用户、打卡、记录接口的正确性 | SB20 | 3 | 陈曦 | 8 | 8 |
| SB22 | 前端功能测试执行 | 测试保障 | 验证登录、打卡、记录页面的功能完整性 | SB21 | 3 | 陈曦 | 9 | 9 |
| SB23 | Alpha 阶段 bug 修复 | 全模块 | 修复测试发现的接口报错、前端显示异常 | SB22 | 4 | 全员协作 | 9 | 9 |
| SB24 | Alpha 任务文档整理 | 文档保障 | 整理任务分解表、进度跟踪记录、bug 修复清单,形成 Alpha 阶段总结文档 | SB23 | 2 | 白子璇 | 10 | 10 |
| SB25 | Alpha 冲刺验收准备 | 项目管理 | 协调全员确认功能完整性、整理验收清单 | SB24 | 1(每天跟进) | 辜艺淇 | 1-10 | 10 |
甘特图
| 任务 | 开始时间 | 持续时间(天) | 结束时间 |
|---|---|---|---|
| 后端基础支撑 | 1 | 1 | 1 |
| 用户管理模块 | 2 | 2 | 3 |
| 核心打卡模块 | 4 | 2 | 5 |
| 基础数据展示 | 6 | 1 | 6 |
| 简易提醒功能 | 6 | 2 | 7 |
| 跨模块测试与 | Bug 修复 | 8 | 2 |
| 任务文档整理与 | Alpha | 验收准备 | 10 |

四、测试计划
重点测试功能
| 功能模块 | 测试重点 | 优先级 |
|---|---|---|
| 提醒管理 | 运动/饮食/饮水提醒规则逻辑 | 高 |
| 打卡管理 | 数据快速录入、历史记录查看 | 高 |
| 数据统计 | 日/周/月数据自动汇总 | 高 |
| 数据导出 | 导出数据完整性验证 | 中 |
| 性能安全 | 响应速度、数据安全 | 中 |
时间安排
| 任务 | 负责人 | 截止日期 | 状态 | 优先级 |
|---|---|---|---|---|
| 制定整体测试计划 | 陈曦、白子璇 | 2025-11-18 | ✅ 已完成 | 中 |
| 设计提醒规则功能测试用例 | 陈曦 | 2025-12-05 | ⏳ 未开始 | 高 |
| 设计数据导出功能测试用例 | 陈曦 | 2025-12-07 | ⏳ 未开始 | 低 |
| 执行功能测试与集成测试 | 陈曦 | 2025-12-14 | ⏳ 未开始 | 高 |
| 性能与安全测试 | 白子璇 | 2025-12-14 | ⏳ 未开始 | 中 |
核心测试流程
- 端到端测试:使用 Selenium 脚本模拟真实用户流程,“提醒 → 打卡 → 统计 → 建议”
- 模块测试:使用 pytest 对后端接口与业务逻辑进行模块级测试
- 自动化回归测试:结合 pytest + Selenium 执行关键路径回归测试,保障迭代稳定性
- 验收测试:邀请真实用户参与体验测试
测试方法
| 测试类型 | 使用技术 | 说明 |
|---|---|---|
| 功能测试 | pytest + Selenium | 覆盖核心业务流程及边界值场景 |
| UI 交互测试 | Selenium | 验证界面元素可操作性和三步内完成关键操作 |
| 数据准确性测试 | pytest | 对统计计算逻辑进行断言校验 |
| 兼容性测试 | Selenium + 多浏览器 | Chrome / Edge / Firefox |
| 回归测试 | pytest + Selenium | 每次迭代执行自动化测试套件 |
测试工具
| 工具类别 | 工具名称 | 用途 |
|---|---|---|
| 单元与模块测试 | pytest | 用于后端接口与业务逻辑断言验证 |
| 自动化UI测试 | Selenium | 自动执行用户流程、兼容性与回归测试 |
| 性能测试 | JMeter | 压力测试与性能基线检测 |
| 缺陷管理 | Jira / 禅道 | 缺陷记录与跟踪 |
资源需求
1. 人力资源
- 测试负责人:陈曦(总体协调、测试设计)
- 性能测试:白子璇(性能与安全测试)
- 开发支持:开发团队(问题修复)
2. 环境需求
- 测试环境:云服务器,配置接近生产环境
- 浏览器:Chrome、Firefox、Edge最新版本
- 测试数据:100名虚拟用户模拟数据

浙公网安备 33010602011771号