EE308FZ - 6th Assignment - PoopCare Sprint Essays - Backend Group

832302122李炳言 2026-01-02 22:05:42

EE308FZ - 6th Assignment - PoopCare Sprint Essays - Backend Group

Beta Sprint 1 冲刺日志后端组

Course of the AssignmentEE308FZ Software Engineering
Assignment RequirementsAssignment 6 - Beta Sprint (Backend Group Sprint Log)
Objectives of This Assignment记录后端组在冲刺阶段的服务器搭建,数据库调整,API接口调试
Other References《阿里巴巴Java开发手册(终极版)v1.3.0》、《小程序设计指南·微信开放平台》、微信小程序开发文档、后端代码规范文档
Project/Group NameGroup 2 —— PoopCare
Frontend Group Members李炳言、王洛森、苏子妍

一、SCRUM 部分

1. 每日会议成员工作记录

成员已完成任务已用时间剩余时间遇到的问题下一步计划
李炳言搭建Express框架Web服务器,配置环境变量与监听端口;集成安全中间件;调试数据加载与日期筛选联动逻辑,修复页面首次进入未触发渲染的问题;构建系统安全防护体系并验证效果6h0h初始未明确数据加载时机与日期筛选的联动机制,导致页面首次进入无法自动渲染数据,需手动操作触发配合测试人员完成系统安全防护与数据加载功能的回归测试;整理逻辑优化说明文档与系统配置手册
王洛森设计MySQL2/Promise数据库连接池,优化并发访问能力;定义用户、健康记录等核心数据模型;开发基于布里斯托大便分类法的健康评分加权算法;补充数据模型中缺失的字段映射关系6h0h部分核心字段未在数据模型中明确映射关系,导致前端提交数据后无法正常渲染展示同步后端字段定义文档至前端组;验证多场景下字段提交与显示效果,完善数据完整性校验规则
苏子妍设计RESTful API路由架构,划分公开接口与认证接口权限;开发用户、健康记录、统计模块的控制器逻辑;集成Swagger文档并编写接口说明;调试路由参数传递逻辑6h0h路由跳转时参数传递格式错误,导致目标页面接收的分工数据不匹配,影响前后端数据交互配合测试人员完成多场景下的API接口测试;完善路由参数容错处理机制,添加参数校验与默认值兜底

2. 成果说明

2.1 核心架构与基础服务

作为整个后端系统的基础框架,负责服务器初始化、安全防护、中间件管理和系统稳定性保障。

主要组成

  • 服务器初始化:基于Express框架构建Web服务器,配置监听端口、环境变量和基本服务
  • 安全中间件
    • CORS配置:允许跨域请求,保障前端与后端的正常通信
    • 认证中间件:实现JWT令牌验证,确保API访问的安全性
    • 速率限制:防止API滥用和DDoS攻击

技术特点

  • 采用模块化设计,便于扩展和维护
  • 集成多种安全防护措施,保障系统安全性

示例代码

// backend/app.js - 核心架构初始化
const app = express();

// 配置安全相关的HTTP头
app.use(helmet({
  contentSecurityPolicy: {
    directives: {
      defaultSrc: ["'self'"],
      scriptSrc: ["'self'", "'unsafe-inline'"],
      styleSrc: ["'self'", "'unsafe-inline'"],
      imgSrc: ["'self'", 'data:', 'https:'],
    },
  },
}));

// 启用CORS
app.use(cors({
  origin: config.cors?.origins || ['*'],
  methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
  credentials: true,
}));

2.2 数据层与模型

负责数据存储、业务逻辑处理和数据模型定义,是系统的核心业务处理层。

主要组成

  • 数据库连接:使用MySQL2/Promise创建连接池,提高数据库访问效率和并发能力
  • 数据模型:定义用户、健康记录、健康评分等核心数据结构
  • 业务逻辑:实现健康评分计算、数据验证、业务规则处理等核心功能

技术特点

  • 健康评分算法:基于布里斯托大便分类法、颜色、排便感受等因素,使用加权算法计算健康评分
  • 数据映射:将前端传入的数据转换为数据库存储格式,处理各种数据格式兼容性问题
  • 数据验证:确保数据的完整性和有效性

示例代码

// backend/models/HealthRecord.js - 健康评分算法
exports.calculateHealthScore = (recordData) => {
  let score = 100;
  
  // 基于布里斯托大便分类法评分 (占40%)
  const shapeScores = {
    'type_1': 40, // 非常硬,严重便秘
    'type_4': 100, // 正常
    'type_7': 40  // 水样,严重腹泻
  };
  
  // 基于颜色评分 (占30%)
  const colorScores = {
    'brown': 100,  // 最理想
    'red': 30,     // 可能带血
    'black': 50    // 可能有问题
  };
  
  // 计算最终评分
  score = Math.round(Math.min(100, Math.max(0,
    (shapeScores[recordData.shape] || 0) * 0.4 +
    (colorScores[recordData.color] || 0) * 0.3 +
    (feelingScores[recordData.feeling] || 0) * 0.2 +
    (recordData.has_blood ? 0 : 100) * 0.1
  )));
  
  return score;
};

2.3 API接口层

作为前后端交互的桥梁,提供RESTful API接口,实现数据的输入输出和业务流程控制。

主要组成

  • 路由配置:定义API路由结构,实现权限控制和请求分发
  • 控制器:处理API请求,调用业务逻辑,生成响应结果
  • 响应格式化:统一API响应格式,提高前后端交互的一致性
  • 文档生成:集成Swagger文档,提供API接口说明和测试功能

设计特点

  • 采用RESTful设计风格,API接口语义清晰
  • 实现权限分级,部分接口需要认证,部分接口公开访问
  • 统一响应格式,包含状态码、消息和数据字段
  • 集成API文档,方便前端开发和测试

示例代码

// backend/routes/index.js - API路由配置
const router = express.Router();
const authMiddleware = require('../middleware/authMiddleware');

// API文档路由(无需认证)
router.use('/api/docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));

// 认证相关路由(无需认证)
router.use('/api/auth', authRoutes);

// 需要认证的路由
const protectedRoutes = express.Router();
protectedRoutes.use(authMiddleware.verifyToken);

// 注册受保护的路由
protectedRoutes.use('/user', userRoutes);
protectedRoutes.use('/health-record', healthRecordRoutes);
protectedRoutes.use('/statistics', statisticsRoutes);

// 将受保护的路由挂载到主路由
router.use('/api', protectedRoutes);

2.4 测试图片展示

img

img


数据库连接成功

img


数据成功传输到navicat中的本地数据库中

3. SCRUM 会议照片说明

img

后端组3名成员参与Beta Sprint 1每日站会,同步3个核心问题的修改、协调协作细节

二、PM Report(项目管理报告)

1. 项目总体任务预期

项目模块预计工作量
UI设计与规范整理约20小时
前端功能页面实现约40小时
后端接口与逻辑约50小时
测试与优化约20小时
总计≈130小时

2. 当前已完成情况(截至本Sprint)

后端阶段已完成内容:
• 3个核心问题全量修复,覆盖所有核心场景与边缘场景
• 补充数据校验、容错处理与交互细节优化
• 完成前后端的连接,在小程序模拟器中输入的数据,可以在后端navicat成功连接的mysql数据库中查看到

• 已完成工作量:约23h
• 已完成任务数:3

3. 剩余工作评估

• 后端模块剩余工作量:≈20小时(含后续功能开发、功能测试、兼容性测试、界面优化)
• 项目整体剩余工作量:≈90小时

4. Burn-up Chart(说明)

时间剩余任务数已完成任务数备注
030明确核心问题范围、技术方案与分工计划
512完成核心问题1(数据加载)、2(字段映射)修复,启动核心问题3(路由参数)开发
1003完成核心问题3修复、全量回归测试与系统细节优化

5. 个人工作日志

李炳言 —— 工作日志(Beta Sprint 阶段)
✅ 搭建Express框架Web服务器,配置环境变量与监听端口(1.5小时)
✅ 集成CORS、Helmet安全头、速率限制等中间件,构建系统安全防护体系(2小时)
✅ 调试数据加载与日期筛选联动逻辑,修复页面首次渲染无数据问题(1.5小时)
✅ 整理系统配置文档,配合测试验证安全防护效果(1小时)

王洛森—— 工作日志(Beta Sprint 阶段)
✅ 设计MySQL2/Promise连接池,优化数据库访问效率与并发处理(1.5小时)
✅ 定义用户、健康记录等核心数据模型,补充缺失字段映射关系(2小时)
✅ 开发健康评分加权算法,基于大便类型、颜色等维度实现评分逻辑(1.5小时)
✅ 测试多场景数据提交与渲染效果,完善数据完整性校验规则(1小时)

苏子妍—— 工作日志(Beta Sprint 阶段)
✅ 设计RESTful API路由架构,划分公开接口与认证接口权限(1.5小时)
✅ 开发用户、健康记录、统计模块控制器逻辑,实现数据交互核心功能(2小时)
✅ 修复路由参数传递错误问题,优化参数解析与容错处理机制(1.5小时)
✅ 集成Swagger文档,编写API接口说明,配合前端联调验证(1小时)

三、本 Sprint 阶段性总结(后端组)

在Beta Sprint 1中,后端组3名成员围绕3个核心问题展开高效协作,顺利完成修复任务并通过全量测试。本次冲刺采用“模块负责+交叉验证”的分工模式,李炳言主导系统基础架构与安全防护,王洛森聚焦数据层设计与核心业务逻辑,苏子妍负责API接口体系搭建,通过跨模块联调确保系统整体兼容性。

通过本次冲刺实践,我们深刻意识到后端开发中“细节把控”与“边界处理”的重要性:数据模型字段映射遗漏、路由参数传递无容错、数据加载时序逻辑不清晰等细节问题,直接影响系统稳定性与前后端协作效率。同时,核心架构的模块化设计、安全防护措施的提前集成,为后续功能扩展奠定了良好基础。

后续将重点推进三方面工作:一是加强代码评审中的细节校验,建立字段定义、参数传递等核心环节的标准化流程;二是完善单元测试与边缘场景测试,覆盖数据库异常、接口恶意调用等极端情况;三是持续优化系统性能,重点提升数据库查询效率与API响应速度,进一步保障用户体验。

四、成员贡献分配

成员主要任务贡献比例
李炳言系统基础架构搭建、安全中间件集成、数据加载逻辑修复34%
王洛森数据库连接池实现、数据模型定义、健康评分算法开发、字段映射修复33%
苏子妍RESTful API设计与开发、路由参数容错优化、Swagger文档集成33%

五、成员个人收获与反思

李炳言:作为系统基础架构的负责人,我深刻体会到“前置防护”对后端系统的重要性。本次冲刺中,安全中间件的集成的确保障了系统安全性,但数据加载与日期筛选的联动逻辑疏忽,暴露了我对前后端交互时序考虑不足的问题。后续开发中,将更注重“架构设计+业务场景”的结合,提前预判跨模块交互的潜在风险,完善系统容错机制。

王洛森:核心业务逻辑与数据模型的开发让我意识到,“数据一致性”是后端开发的核心底线。本次字段映射遗漏导致的数据渲染问题,根源在于前期未与前端明确统一的字段定义标准。后续将建立前后端字段字典,在编码阶段添加字段完整性校验,并加强数据提交后的反向验证,从源头避免类似问题。

苏子妍:API接口层的开发与优化让我明白,接口不仅要能用,还要好用、耐用。路由参数传递错误的问题,反映了我对参数容错处理的忽视。后续将在所有API设计中添加参数校验、默认值兜底机制,同时进一步规范接口响应格式,提升接口的易用性与健壮性,降低前后端联调成本。

...全文
41 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

164

社区成员

发帖
与我相关
我的任务
社区描述
2501_MU_SE_FZU
软件工程 高校
社区管理员
  • FZU_SE_LQF
  • 助教_林日臻
  • 朱仕君
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧