Beta阶段冲刺博客5
| 团队名称 | U-Linker |
|---|---|
| 课程 | EE308FZ - 软件工程 |
| 要求 | Teamwork—beta Spring |
| 目标 | 记录β冲刺第9-10天的进展 |
目录
- Beta阶段冲刺博客5
- Part 1: SCRUM部分
- 1.1 成员工作进展
- 1.2 代码签入记录
- 功能模块:个性化推荐算法
- 功能模块:Docker 一键部署脚本
- 功能模块:推荐帖子 API 接口
- 1.3 测试工作成果
- 1.4 SCRUM会议照片
- Part 2: PM报告
- 2.1 项目整体进度
- 2.2 燃尽图
- 2.3 任务总量变化记录
- 2.4 项目最新运行截图
- 功能演示 1:个性化推荐列表
- 功能演示 2:Docker 一键部署
- 功能演示 3:系统健康检查
- 功能演示 4:推荐效果对比
- Part 3: 技术亮点
- 3.1 推荐算法设计
- 3.2 部署架构
Part 1: SCRUM部分
1.1 成员工作进展
| 成员 | 角色 | 过去两天完成的任务 | 遇到的困难 | 接下来的计划 |
|---|---|---|---|---|
| 颜一顺 | 后端 | 1. 配置生产环境服务器 2. 搭建推荐算法运行环境 | 服务器内存配置优化 | 协助测试组进行线上环境压力测试 |
| 曾渝 | 后端 | 1. 设计基于用户行为的简易推荐算法 2. 实现协同过滤模块 | 协同过滤计算效率优化 | 优化推荐算法性能,增加缓存机制 |
| 程一鸣 | 后端 | 1. 开发获取推荐帖子列表的 API 接口 2. 实现浏览记录接口 | 无 | 完善推荐 API 的分页和过滤功能 |
| 陶炯 | 后端 | 1. 编写 Docker Compose 编排脚本 2. 实现一键部署功能 | 容器间网络通信配置 | 编写部署文档,准备生产环境上线 |
| 陈舒薇 | 前端 | 1. 设计个性化推荐模块的前端 UI 组件 2. 完成推荐卡片样式 | 推荐理由标签布局 | 优化推荐页面交互体验 |
| 杨璐 | 前端 | 1. 配合后端进行线上环境的冒烟测试 2. 修复测试发现的 Bug | 无 | 协助完成最终验收测试 |
| 薛易明 | 前端 | 1. 在首页接入个性化推荐列表展示 2. 实现推荐分数可视化展示 | 推荐列表与普通列表切换逻辑 | 完善推荐页面的加载动画和空状态 |
| 高子言 | 前端 | 1. 编写前端 Dockerfile 2. 配置 Nginx 反向代理 | SSL 证书配置 | 优化前端构建流程,减小打包体积 |
| 林语婧 | PM | 1. 制定推荐策略规则 2. 统筹上线部署流程 | 无 | 组织最终演示彩排,准备答辩材料 |
| 黄祉睿 | 测试 | 1. 测试推荐算法的准确性 2. 验证部署后的稳定性 | 无 | 编写测试报告,总结 Bug 修复情况 |
| 陈乐晗 | 数据 | 1. 整理用户兴趣标签数据 2. 解决推荐冷启动问题 | 新用户数据不足 | 分析推荐效果,提出优化建议 |
| 张健涛 | 数据 | 1. 模拟不同用户行为 2. 生成测试推荐算法所需的数据 | 无 | 准备演示用的测试账号和数据 |
1.2 代码签入记录
GitHub链接
功能模块:个性化推荐算法
- 提交说明:实现基于用户-物品协同过滤的推荐算法,支持新用户冷启动处理。
# services/recommendation.pyimportnumpyasnpfromcollectionsimportdefaultdictclassRecommendationService:defget_recommendations(self,user_id,limit=10):""" 基于协同过滤的推荐算法 1. 获取用户历史行为(浏览、收藏、点赞) 2. 计算用户相似度矩阵 3. 推荐相似用户喜欢的帖子 """# 获取用户行为数据user_behaviors=self._get_user_behaviors(user_id)# 冷启动处理:新用户返回热门帖子ifnotuser_behaviors:returnself._get_hot_posts(limit)# 计算相似用户similar_users=self._find_similar_users(user_id,top_k=20)# 聚合推荐结果并去重recommendations=self._aggregate_recommendations(user_id,similar_users,limit)returnrecommendations功能模块:Docker 一键部署脚本
- 提交说明:完成前后端容器编排,支持一键启动所有服务。
# deploy_update.sh 核心逻辑deploy_all(){echo"===== 开始全量部署 ====="# 1. 创建 Docker 网络(如不存在)dockernetwork create u-linker-network2>/dev/null||true# 2. 部署后端服务cd/opt/u-linker-backenddockercompose-fdocker-compose.backend.yml downdockercompose-fdocker-compose.backend.yml build --no-cachedockercompose-fdocker-compose.backend.yml up-d# 3. 部署前端服务cd/opt/u-linker-frontenddockercompose-fdocker-compose.frontend-simple.yml downdockercompose-fdocker-compose.frontend-simple.yml build --no-cachedockercompose-fdocker-compose.frontend-simple.yml up-d# 4. 健康检查sleep10curl-fhttp://localhost/health&&echo"前端健康检查通过"curl-fhttp://localhost/api/health&&echo"后端健康检查通过"echo"===== 部署完成 ====="}功能模块:推荐帖子 API 接口
- 提交说明:提供个性化推荐帖子列表接口,支持分页查询。
# routes/posts.py@posts_bp.route('/recommendations',methods=['GET'])@login_requireddefget_recommendations():"""获取个性化推荐帖子列表"""page=request.args.get('page',1,type=int)per_page=request.args.get('per_page',10,type=int)# 调用推荐服务recommendation_service=RecommendationService()post_ids=recommendation_service.get_recommendations(current_user.id,limit=per_page*3# 多获取一些用于过滤)# 分页处理start=(page-1)*per_page end=start+per_page paginated_ids=post_ids[start:end]# 查询帖子详情posts=Post.query.filter(Post.id.in_(paginated_ids)).all()returnsuccess(data={'posts':[post.to_dict()forpostinposts],'has_more':len(post_ids)>end})1.3 测试工作成果
- 测试内容:推荐算法与线上部署验收
- 测试状态:全部通过
- 测试报告:
本次测试针对系统的"个性化推荐"和"生产环境部署"进行了全面验证,确保核心功能稳定可用。
- 推荐算法准确性测试
测试场景:验证推荐结果与用户兴趣的相关性。
测试过程:
- 创建 5 个测试账号,分别模拟不同兴趣偏好(学习资料、二手交易、活动组队等)。
- 每个账号进行 20+ 次浏览、收藏、点赞操作,建立行为画像。
- 调用推荐接口,检查返回帖子与用户历史行为的匹配度。
测试结果:推荐准确率达到 78%,Top-10 推荐列表中平均有 7-8 条与用户兴趣相关。
- 冷启动处理测试
测试场景:验证新用户的推荐体验。
测试过程:
- 注册全新账号,无任何历史行为数据。
- 访问首页推荐模块,检查是否返回热门帖子。
测试结果:新用户可正常获取热门推荐,无空白或报错情况。
- Docker 部署稳定性测试
测试场景:验证一键部署脚本的可靠性。
测试过程:
- 在全新服务器环境执行部署脚本。
- 检查前端、后端、数据库容器是否正常启动。
- 进行 100 次并发请求压力测试。
测试结果:部署脚本执行成功率 100%,系统在 100 并发下响应时间 < 500ms,无服务中断。总结:推荐算法初步达到预期效果,Docker 部署流程稳定可靠,系统已具备上线条件。
1.4 SCRUM会议照片
- 会议时间:2025年1月4日
Part 2: PM报告
2.1 项目整体进度
| 指标 | 数值 |
|---|---|
| 预期总任务数 | 47 |
| 已完成任务数 | 47 |
| 剩余任务数 | 0 |
| 完成百分比 | 100% |
2.2 燃尽图
说明:截止 Day 10,项目进度已全部完成(100%)。这两天我们集中攻克了推荐算法和 Docker 部署两大核心任务,成功实现了生产环境的完整部署。Day 9 完成 94%,Day 10 完成剩余所有任务,项目按时交付。
2.3 任务总量变化记录
| 日期 | 原计划任务数 | 新增任务数 | 新增原因 |
|---|---|---|---|
| 01.03 | 47 | 0 | 无新增任务,进入收尾阶段 |
反思:本次冲刺的 Docker 部署过程中,我们发现 Nginx 反向代理配置和前后端跨域问题比预期复杂。通过编写详细的部署手册(参见 U-Linker 部署手册),我们将踩过的坑记录下来,方便后续维护和团队知识传承。
2.4 项目最新运行截图
功能演示 1:个性化推荐列表
首页根据用户历史行为展示个性化推荐帖子,新用户显示热门内容。
功能演示 2:Docker 一键部署
使用 deploy_update.sh 脚本实现前后端服务的一键部署与更新。
功能演示 3:系统健康检查
部署完成后自动执行健康检查,确保服务正常运行。
$curlhttp://121.89.81.18/health{"status":"ok","service":"frontend"}$curlhttp://121.89.81.18/api/health{"status":"ok","service":"backend","database":"connected"}功能演示 4:推荐效果对比
左图为新用户(热门推荐),右图为活跃用户(个性化推荐)。
Part 3: 技术亮点
3.1 推荐算法设计
本次实现的推荐系统采用基于用户的协同过滤算法,核心思路如下:
- 行为采集:记录用户的浏览、收藏、点赞行为
- 相似度计算:使用余弦相似度计算用户间的兴趣相似性
- 推荐生成:聚合相似用户喜欢的帖子,过滤用户已交互内容
- 冷启动处理:新用户返回基于热度排序的帖子列表
3.2 部署架构
┌─────────────────────────────────────────────────────────┐ │ Nginx (端口 80) │ │ u-linker-frontend │ ├─────────────────────────────────────────────────────────┤ │ / → 静态文件 (Vue 构建产物) │ │ /api/* → 反向代理到后端容器 │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ Flask Backend (端口 5000) │ │ u-linker-web │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ MySQL (端口 3306) │ │ u-linker-mysql │ └─────────────────────────────────────────────────────────┘