Alpha冲刺 - Day 3
Alpha冲刺 - Day 3
团队名称: 书海拾贝队
冲刺日期: 2025年11月26日
冲刺阶段: Alpha阶段 Day 3/7
一、站立式会议
1.1 会议信息
- 会议时间: 2025年11月26日 14:00-14:10
- 会议地点: 图书馆三楼讨论区
- 会议时长: 10分钟
- 参会人员: 杨浩、戴宏翔、莫圣韬、赖顺炜、陈东楷、刘霆浩
- 会议主持: 杨浩
- 会议记录: 陈东楷
1.2 会议照片

二、团队成员工作情况
2.1 杨浩(组长 - 前端开发)
昨天已完成的工作:
- 书籍发布前端页面开发
- 与后端进行用户模块接口联调
- 修复前端表单验证问题
今天计划完成的工作:
- 书籍列表前端页面开发
- 书籍搜索前端组件开发
- 优化书籍发布页面用户体验
工作中遇到的困难:
- 书籍列表的分页组件与Vuetify的Table组件集成有些问题
- 解决中:查阅官方文档,尝试使用v-data-table组件
2.2 戴宏翔(PM - 后端开发)
昨天已完成的工作:
- 与前端进行接口联调测试
- 购物车后端接口开发
- 优化用户模块代码
今天计划完成的工作:
- 个人信息后端接口开发
- 收货地址后端接口开发
- 进行代码重构和优化
工作中遇到的困难:
- 购物车数据结构设计需要优化,考虑使用Redis缓存
- 已解决:决定先用MySQL实现,后续再优化为Redis
2.3 莫圣韬(测试工程师)
昨天已完成的工作:
- 完成用户模块单元测试用例
- 对用户注册登录接口进行测试
- 编写书籍模块测试用例
今天计划完成的工作:
- 对书籍发布接口进行测试
- 对书籍列表和搜索接口进行测试
- 编写测试报告
工作中遇到的困难:
- 发现书籍发布接口在ISBN不存在时返回的错误信息不够友好
- 已反馈:已提交Bug #029,开发人员正在修复
2.4 赖顺炜(后端+DBA)
昨天已完成的工作:
- 书籍列表后端接口开发
- 书籍详情后端接口开发
- 数据库索引优化
今天计划完成的工作:
- 书籍搜索后端接口开发
- 订单创建后端接口开发
- 数据库查询性能优化
工作中遇到的困难:
- 书籍搜索需要支持模糊查询,担心性能问题
- 解决方案:使用MySQL全文索引,并限制搜索结果数量
2.5 陈东楷(需求+文档)
昨天已完成的工作:
- 更新接口文档(新增书籍模块接口)
- 编写开发日志
- 协助测试人员编写测试报告
今天计划完成的工作:
- 更新用户手册(新增书籍模块)
- 整理Bug列表和优先级
- 编写Alpha冲刺Day3博客
工作中遇到的困难:
- 暂无
2.6 刘霆浩(全栈+运维)
昨天已完成的工作:
- 书籍详情前端页面开发
- 优化图片上传组件
- 协助解决跨域问题
今天计划完成的工作:
- 购物车前端页面开发
- 集成书籍列表和详情页面
- 服务器性能监控
工作中遇到的困难:
- 购物车页面的商品数量修改和删除逻辑比较复杂
- 解决中:参考电商网站的购物车设计,优化交互流程
三、项目燃尽图
3.1 Day 3 燃尽图

图例:
红线 理想剩余工时
蓝线 实际剩余工时
3.2 燃尽图数据
| 日期 | 理想剩余工时 | 实际剩余工时 | 完成工时 |
|---|---|---|---|
| Day 1 | 138h | 138h | 0h |
| Day 2 | 118h | 115h | 23h |
| Day 3 | 98h | 98h | 17h |
| Day 4 | 78h | - | - |
| Day 5 | 58h | - | - |
| Day 6 | 38h | - | - |
| Day 7 | 0h | - | - |
四、代码/文档签入记录
4.1 今日签入统计
| 成员 | 签入次数 | 代码行数 | 文件数 | 主要内容 |
|---|---|---|---|---|
| 杨浩 | 1 | +312 | 2 | 书籍发布页面完成 |
| 戴宏翔 | 1 | +385 | 3 | 购物车接口 |
| 莫圣韬 | 1 | +268 | 3 | 测试用例 |
| 赖顺炜 | 1 | +295 | 3 | 书籍列表和详情接口 |
| 陈东楷 | 1 | +312 | 4 | 文档更新 |
| 刘霆浩 | 1 | +356 | 3 | 书籍详情页面 |
4.2 Git提交记录

4.3 Issue关联
Issue链接: https://github.com/Bookmatescope/ReuseBook/issues
五、Code Review
5.1 Review记录
Review 1: 书籍发布模块
- Reviewer: 刘霆浩
- Reviewee: 杨浩、赖顺炜
Review内容:
- ✅ 代码规范:符合团队编码规范
- ✅ 功能完整:ISBN查询、手动录入、图片上传都实现
- ✅ 用户体验:交互流畅,提示清晰
- ✅ 异常处理:API失败有降级方案
- ⚠️ 建议:ISBN查询结果可以缓存,减少API调用
改进措施:
- 实现ISBN查询结果缓存(Redis)
- 添加查询历史记录
代码示例:
// ISBN查询组件
async queryISBN(isbn) {
try {
// 先查缓存
let bookInfo = await this.getFromCache(isbn);
if (!bookInfo) {
// 缓存未命中,调用API
bookInfo = await this.$api.queryISBN(isbn);
// 存入缓存
await this.saveToCache(isbn, bookInfo);
}
this.fillBookInfo(bookInfo);
} catch (error) {
this.$message.error('ISBN查询失败,请手动填写');
}
}
Review 2: 购物车模块
- Reviewer: 赖顺炜
- Reviewee: 戴宏翔
Review内容:
- ✅ 代码规范:符合编码规范
- ✅ 接口设计:RESTful风格,参数清晰
- ✅ 数据验证:参数校验完整
- ⚠️ 建议:购物车数据可以考虑用Redis存储
- ⚠️ 建议:添加购物车商品库存检查
改进措施:
- 后续版本迁移到Redis
- 添加库存检查逻辑
代码示例:
// 添加商品到购物车
@PostMapping("/cart")
public Result addToCart(@RequestBody CartItem item) {
// 参数验证
if (item.getBookId() == null || item.getQuantity() <= 0) {
return Result.error("参数错误");
}
// 检查商品是否存在
Book book = bookService.getById(item.getBookId());
if (book == null) {
return Result.error("商品不存在");
}
// 检查库存
if (book.getStock() < item.getQuantity()) {
return Result.error("库存不足");
}
// 添加到购物车
cartService.addItem(item);
return Result.success("添加成功");
}
Review 3: 书籍列表模块
- Reviewer: 戴宏翔
- Reviewee: 杨浩、赖顺炜
Review内容:
- ✅ 代码规范:符合编码规范
- ✅ 分页功能:分页逻辑正确
- ✅ 性能优化:使用了索引,查询效率高
- ✅ 前端展示:列表布局美观
- ⚠️ 建议:可以添加书籍排序功能(价格、时间)
改进措施:
- 添加排序参数
- 前端增加排序选择器
代码示例:
// 书籍列表查询(支持排序)
@GetMapping("/books")
public Result getBookList(
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "20") Integer size,
@RequestParam(required = false) String sortBy,
@RequestParam(required = false) String order
) {
// 构建排序条件
String orderBy = "create_time DESC"; // 默认按时间降序
if ("price".equals(sortBy)) {
orderBy = "price " + ("ASC".equals(order) ? "ASC" : "DESC");
}
// 分页查询
PageInfo<Book> pageInfo = bookService.getList(page, size, orderBy);
return Result.success(pageInfo);
}
六、项目运行截图/代码
6.1 书籍发布页面

功能说明:
- ISBN输入框,支持自动查询
- 书籍信息自动填充
- 图片上传(最多5张)
- 价格和新旧程度选择
- 书籍描述输入
测试结果: ✅ 功能正常
代码片段:
<template>
<v-container>
<v-card>
<v-card-title>发布书籍</v-card-title>
<v-card-text>
<!-- ISBN输入 -->
<v-text-field
v-model="isbn"
label="ISBN号"
@blur="queryISBN"
:loading="isbnLoading"
/>
<!-- 书籍信息 -->
<v-text-field v-model="bookInfo.title" label="书名" required />
<v-text-field v-model="bookInfo.author" label="作者" />
<!-- 图片上传 -->
<image-upload v-model="bookInfo.images" :max="5" />
<!-- 价格和新旧程度 -->
<v-text-field v-model="bookInfo.price" label="价格" type="number" />
<v-select v-model="bookInfo.condition" :items="conditions" label="新旧程度" />
<!-- 描述 -->
<v-textarea v-model="bookInfo.description" label="描述" />
</v-card-text>
<v-card-actions>
<v-btn color="primary" @click="submit">发布</v-btn>
</v-card-actions>
</v-card>
</v-container>
</template>
6.2 书籍列表页面
功能说明:
- 书籍卡片展示(封面、书名、价格、新旧程度)
- 分页功能
- 加载状态提示
- 点击跳转详情页
测试结果: ✅ 功能正常
代码片段:
<template>
<v-container>
<v-row>
<v-col v-for="book in books" :key="book.bookId" cols="12" sm="6" md="4" lg="3">
<v-card @click="goToDetail(book.bookId)">
<v-img :src="book.coverImage" height="200" />
<v-card-title>{{ book.title }}</v-card-title>
<v-card-subtitle>
<span class="price">¥{{ book.price }}</span>
<v-chip small>{{ book.conditionText }}</v-chip>
</v-card-subtitle>
</v-card>
</v-col>
</v-row>
<!-- 分页 -->
<v-pagination
v-model="page"
:length="totalPages"
@input="loadBooks"
/>
</v-container>
</template>
<script>
export default {
data() {
return {
books: [],
page: 1,
totalPages: 0
}
},
methods: {
async loadBooks() {
const res = await this.$api.getBookList(this.page, 20);
this.books = res.data.list;
this.totalPages = res.data.pages;
}
},
mounted() {
this.loadBooks();
}
}
</script>
6.3 书籍详情页面
功能说明:
- 书籍图片轮播
- 书籍详细信息(书名、作者、价格、新旧程度、描述)
- 卖家信息
- 加入购物车按钮
- 立即购买按钮
测试结果: ✅ 功能正常
代码片段:
<template>
<v-container>
<v-row>
<!-- 左侧:图片轮播 -->
<v-col cols="12" md="6">
<v-carousel height="400">
<v-carousel-item
v-for="(image, i) in book.images"
:key="i"
:src="image"
/>
</v-carousel>
</v-col>
<!-- 右侧:书籍信息 -->
<v-col cols="12" md="6">
<h1>{{ book.title }}</h1>
<p class="author">作者:{{ book.author }}</p>
<p class="price">¥{{ book.price }}</p>
<v-chip>{{ book.conditionText }}</v-chip>
<v-divider class="my-4" />
<p>{{ book.description }}</p>
<v-divider class="my-4" />
<!-- 卖家信息 -->
<div class="seller-info">
<v-avatar><v-img :src="book.seller.avatar" /></v-avatar>
<span>{{ book.seller.username }}</span>
</div>
<!-- 操作按钮 -->
<v-btn color="primary" @click="addToCart">加入购物车</v-btn>
<v-btn color="success" @click="buyNow">立即购买</v-btn>
</v-col>
</v-row>
</v-container>
</template>
6.4 接口测试(Postman)
书籍列表接口测试:
GET http://localhost:8081/api/books?page=1&size=20
Response:
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"bookId": 1,
"title": "高等数学(上册)",
"author": "同济大学数学系",
"price": 35.00,
"originalPrice": 58.00,
"condition": 3,
"conditionText": "八成新",
"coverImage": "https://oss.example.com/book1.jpg",
"sellerId": 2,
"sellerName": "戴宏翔"
},
// ... 更多书籍
],
"total": 156,
"page": 1,
"size": 20,
"pages": 8
}
}
测试结果: ✅ 接口正常
书籍详情接口测试:
GET http://localhost:8081/api/books/1
Response:
{
"code": 200,
"message": "success",
"data": {
"bookId": 1,
"isbn": "9787040396621",
"title": "高等数学(上册)",
"author": "同济大学数学系",
"publisher": "高等教育出版社",
"price": 35.00,
"originalPrice": 58.00,
"condition": 3,
"conditionText": "八成新",
"description": "教材使用一学期,有少量笔记,不影响阅读",
"images": [
"https://oss.example.com/book1-1.jpg",
"https://oss.example.com/book1-2.jpg"
],
"stock": 1,
"sales": 0,
"seller": {
"userId": 2,
"username": "戴宏翔",
"avatar": "https://oss.example.com/avatar2.jpg"
},
"createTime": "2025-11-20 10:30:25"
}
}
测试结果: ✅ 接口正常
购物车添加接口测试:
POST http://localhost:8081/api/cart
Request:
{
"bookId": 1,
"quantity": 1
}
Response:
{
"code": 200,
"message": "添加成功",
"data": {
"cartId": 1,
"userId": 1,
"bookId": 1,
"quantity": 1,
"createTime": "2025-11-20 14:25:30"
}
}
测试结果: ✅ 接口正常
6.5 数据库数据
书籍表数据:
mysql> SELECT book_id, title, author, price, condition, status FROM book LIMIT 5;
+---------+------------------------+----------------------+-------+-----------+--------+
| book_id | title | author | price | condition | status |
+---------+------------------------+----------------------+-------+-----------+--------+
| 1 | 高等数学(上册) | 同济大学数学系 | 35.00 | 3 | 1 |
| 2 | 线性代数 | 同济大学数学系 | 28.00 | 2 | 1 |
| 3 | 大学物理 | 张三峰 | 42.00 | 3 | 1 |
| 4 | C程序设计 | 谭浩强 | 25.00 | 4 | 1 |
| 5 | 数据结构 | 严蔚敏 | 38.00 | 2 | 1 |
+---------+------------------------+----------------------+-------+-----------+--------+
5 rows in set (0.00 sec)
购物车表数据:
mysql> SELECT * FROM cart;
+---------+---------+---------+----------+---------------------+
| cart_id | user_id | book_id | quantity | create_time |
+---------+---------+---------+----------+---------------------+
| 1 | 1 | 1 | 1 | 2025-11-20 14:25:30 |
| 2 | 1 | 3 | 1 | 2025-11-20 14:30:15 |
+---------+---------+---------+----------+---------------------+
2 rows in set (0.00 sec)
测试结果: ✅ 数据正常存储
七、每日个人总结
7.1 杨浩
今天完成了书籍发布页面和书籍列表页面的开发,进度很顺利。书籍发布页面集成了ISBN查询功能,用户体验很好。书籍列表页面使用了卡片布局,视觉效果不错。
在开发过程中遇到了分页组件的问题,最终选择了手动控制分页逻辑,虽然代码多了一些,但更灵活。明天开始书籍搜索功能的开发,这是一个重要功能。
今日收获:
- 掌握了Vuetify分页组件的使用
- 学会了如何优化图片加载性能
- 前端布局设计能力提升
明日目标:
- 完成书籍搜索前端组件
- 开始订单创建页面开发
- 优化已完成页面的用户体验
7.2 戴宏翔
今天完成了购物车接口的开发,实现了购物车的增删改查功能。在数据结构设计上纠结了一会儿,最终决定先用MySQL实现,后续再优化。
购物车模块的代码质量不错,通过了Code Review。明天开始个人信息和收货地址模块的开发,这两个模块相对简单。
今日收获:
- 学会了如何权衡技术方案
- 购物车业务逻辑理解更深入
- 代码设计能力提升
明日目标:
- 完成个人信息后端接口
- 完成收货地址后端接口
- 优化购物车接口性能
7.3 莫圣韬
今天完成了用户模块和书籍模块的测试用例编写,并对相关接口进行了测试。在测试过程中发现了一个Bug:ISBN不存在时的错误提示不够友好,已经反馈给开发人员。
测试工作让我对业务逻辑有了更全面的理解。明天继续对书籍搜索和购物车模块进行测试。
今日收获:
- 测试用例编写能力提升
- 学会了如何发现和反馈Bug
- 对业务逻辑理解更深入
明日目标:
- 对书籍搜索接口进行测试
- 对购物车接口进行测试
- 编写测试报告
7.4 赖顺炜
今天完成了书籍列表和详情接口的开发,并优化了数据库查询性能。在实现搜索功能时,研究了MySQL的全文索引,配置了ngram解析器支持中文搜索。
ISBN查询的API适配器也完成了,统一了不同API的返回格式。明天继续书籍搜索接口和订单创建接口的开发。
今日收获:
- 掌握了MySQL全文索引的使用
- 学会了如何设计API适配器
- 数据库优化经验增加
明日目标:
- 完成书籍搜索后端接口
- 完成订单创建后端接口
- 数据库性能测试
7.5 陈东楷
今天主要工作是更新文档和整理Bug列表。接口文档的更新需要与开发人员密切沟通,确保文档的准确性和及时性。
通过整理Bug列表,我对项目的质量有了更清晰的认识。明天继续完善用户手册,并编写今天的冲刺博客。
今日收获:
- 文档管理能力提升
- 学会了如何整理和分类Bug
- 项目管理意识增强
明日目标:
- 更新用户手册
- 整理测试报告
- 编写冲刺博客
7.6 刘霆浩
今天完成了书籍详情页面的开发,实现了图片轮播、书籍信息展示、卖家信息展示等功能。在优化图片加载性能时,实现了懒加载和预加载。
明天开始购物车页面的开发,这是一个比较复杂的页面,需要实现商品列表、数量修改、删除、结算等功能。
今日收获:
- 掌握了图片懒加载的实现方法
- 学会了如何优化页面性能
- 前端组件设计能力提升
明日目标:
- 完成购物车前端页面
- 集成购物车接口
- 优化页面交互体验
书海拾贝队 - Alpha冲刺 Day 3 完成




浙公网安备 33010602011771号