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

二、团队成员工作情况
2.1 杨浩(组长 - 前端开发)
昨天已完成的工作:
- 书籍搜索前端组件开发
- 优化已完成页面
- 准备功能演示
今天计划完成的工作:
- 订单创建前端页面开发
- 个人中心前端页面开发
- 评价功能前端页面开发
工作中遇到的困难:
- 订单创建页面的收货地址选择逻辑比较复杂
- 已解决:使用v-radio-group组件,简化选择逻辑
2.2 戴宏翔(PM - 后端开发)
昨天已完成的工作:
- 个人信息后端接口开发
- 收货地址后端接口开发
- 代码优化和重构
今天计划完成的工作:
- 面交地址接口开发(卖家提供)
- 订单确认与面交流程处理
- 订单模块代码Review
工作中遇到的困难:
- 面交流程需要展示卖家提供的面交地址信息
- 已解决:设计面交地址展示组件,买家下单后可清晰查看卖家的面交地点
2.3 莫圣韬(测试工程师)
昨天已完成的工作:
- 对书籍搜索接口进行测试
- 对购物车接口进行测试
- 编写测试报告
今天计划完成的工作:
- 对订单创建接口进行测试
- 对面交地址接口进行测试
- 对订单状态流转进行测试
- 整理Bug列表
工作中遇到的困难:
- 发现订单创建时库存扣减有并发问题
- 已反馈:提交Bug #037,优先级P0,已修复
2.4 赖顺炜(后端+DBA)
昨天已完成的工作:
- 书籍搜索后端接口开发
- 订单创建后端接口开发
- 数据库性能测试(1h)
今天计划完成的工作:
- 订单查询后端接口开发
- 订单状态流转逻辑
- 评价功能后端接口开发
- 修复库存并发Bug
工作中遇到的困难:
- 订单状态流转的权限控制比较复杂
- 已解决:买家只能确认收货,卖家只能发货,逻辑清晰
2.5 陈东楷(需求+文档)
昨天已完成的工作:
- 更新接口文档(订单模块)
- 编写用户使用指南
- 准备功能演示PPT
今天计划完成的工作:
- 协助进行功能演示
- 更新用户手册
- 编写Alpha版本发布说明
- 编写冲刺博客
工作中遇到的困难:
- 暂无
2.6 刘霆浩(全栈+运维)
昨天已完成的工作:
- 购物车前端页面开发
- 集成购物车接口
- 服务器监控
今天计划完成的工作:
- 订单列表前端页面开发
- 收货地址前端页面开发
- 前端性能优化
- 部署测试环境
工作中遇到的困难:
- 订单列表需要展示多种状态,UI设计比较复杂
- 已解决:使用v-tabs组件,按状态分类展示
三、项目燃尽图
3.1 Day 5 燃尽图

图例:
红线 理想剩余工时
蓝线 实际剩余工时
3.2 燃尽图数据
| 日期 | 理想剩余工时 | 实际剩余工时 | 完成工时 |
|---|---|---|---|
| Day 1 | 138h | 138h | 0h |
| Day 2 | 118h | 115h | 23h |
| Day 3 | 98h | 98h | 17h |
| Day 4 | 75h | 75h | 23h |
| Day 5 | 53h | 55h | 20h |
| Day 6 | 38h | - | - |
| Day 7 | 0h | - | - |
四、代码/文档签入记录
4.1 今日签入统计
| 成员 | 签入次数 | 代码行数 | 文件数 | 主要内容 |
|---|---|---|---|---|
| 杨浩 | 1 | +456 | 3 | 订单创建和个人中心 |
| 戴宏翔 | 1 | +528 | 4 | 面交地址功能 |
| 莫圣韬 | 1 | +312 | 3 | 测试用例 |
| 赖顺炜 | 1 | +612 | 5 | 订单管理和评价 |
| 陈东楷 | 1 | +385 | 4 | 文档更新 |
| 刘霆浩 | 1 | +498 | 4 | 订单列表和地址管理 |
4.2 Git提交记录

4.3 Issue关联
Issue链接: https://github.com/Bookmatescope/ReuseBook/issues
五、Code Review
5.1 Review记录
Review 1: 订单创建模块
- Reviewer: 刘霆浩
- Reviewee: 杨浩、赖顺炜
Review内容:
- ✅ 代码规范:符合团队编码规范
- ✅ 功能完整:订单创建流程完整
- ✅ 用户体验:页面布局清晰,操作流畅
- ✅ 数据验证:参数校验完整
- ✅ 事务处理:使用事务保证数据一致性
- ⚠️ 建议:可以添加订单预览功能
改进措施:
- 后续版本添加订单预览
- 优化订单创建流程
代码示例:
<template>
<v-container>
<v-stepper v-model="step">
<!-- 步骤1:确认商品 -->
<v-stepper-step :complete="step > 1" step="1">
确认商品
</v-stepper-step>
<v-stepper-content step="1">
<v-card>
<v-card-text>
<order-item
v-for="item in orderItems"
:key="item.bookId"
:item="item"
/>
</v-card-text>
<v-card-actions>
<v-btn color="primary" @click="step = 2">下一步</v-btn>
</v-card-actions>
</v-card>
</v-stepper-content>
<!-- 步骤2:选择地址 -->
<v-stepper-step :complete="step > 2" step="2">
选择收货地址
</v-stepper-step>
<v-stepper-content step="2">
<v-card>
<v-card-text>
<address-select v-model="selectedAddress" />
</v-card-text>
<v-card-actions>
<v-btn text @click="step = 1">上一步</v-btn>
<v-btn color="primary" @click="step = 3">下一步</v-btn>
</v-card-actions>
</v-card>
</v-stepper-content>
<!-- 步骤3:确认订单 -->
<v-stepper-step step="3">
确认订单
</v-stepper-step>
<v-stepper-content step="3">
<v-card>
<v-card-text>
<div class="order-summary">
<p>商品总价:¥{{ totalPrice }}</p>
<p>运费:¥{{ shippingFee }}</p>
<p class="total">实付金额:¥{{ actualPrice }}</p>
</div>
</v-card-text>
<v-card-actions>
<v-btn text @click="step = 2">上一步</v-btn>
<v-btn color="success" @click="submitOrder">提交订单</v-btn>
</v-card-actions>
</v-card>
</v-stepper-content>
</v-stepper>
</v-container>
</template>
Review 2: 面交地址模块
- Reviewer: 赖顺炜
- Reviewee: 戴宏翔
Review内容:
- ✅ 代码规范:符合编码规范
- ✅ 面交流程清晰:卖家填写地址,买家查看地址
- ✅ 异常处理:各种异常情况都考虑到了
- ✅ 地址校验:校验逻辑完整
- ⚠️ 建议:可以添加面交记录日志
改进措施:
- 添加面交记录日志表
- 记录所有面交操作
代码示例:
// 面交地址服务
public class MeetupAddressService {
// 保存卖家面交地址
public void saveMeetupAddress(Long bookId, MeetupAddressDTO dto) {
MeetupAddress address = new MeetupAddress();
address.setBookId(bookId);
address.setLocation(dto.getLocation());
address.setContactTime(dto.getContactTime());
address.setContactPhone(dto.getContactPhone());
address.setNotes(dto.getNotes());
meetupAddressMapper.insert(address);
}
// 获取面交地址(买家查看)
public MeetupAddressDTO getMeetupAddress(Long orderId) {
Order order = orderMapper.selectById(orderId);
if (order == null) {
throw new BusinessException("订单不存在");
}
MeetupAddress address = meetupAddressMapper.selectByBookId(order.getBookId());
return convertToDTO(address);
}
}
// 面交确认处理
@PostMapping("/order/meetup-confirm")
public Result confirmMeetup(@RequestBody MeetupConfirmDTO dto) {
// 1. 查询订单
Order order = orderService.getById(dto.getOrderId());
if (order == null) {
return Result.error("订单不存在");
}
// 2. 验证订单状态
if (order.getStatus() != OrderStatus.PENDING_MEETUP) {
return Result.error("订单状态不正确");
}
// 3. 更新订单状态为待面交
order.setStatus(OrderStatus.MEETUP_CONFIRMED);
order.setMeetupTime(new Date());
orderService.updateById(order);
// 4. 记录面交日志
meetupLogService.log(order.getOrderId(), "买家确认面交");
return Result.success("确认成功");
}
Review 3: 订单列表模块
- Reviewer: 杨浩
- Reviewee: 刘霆浩、赖顺炜
Review内容:
- ✅ 代码规范:符合编码规范
- ✅ UI设计:使用Tabs分类展示,清晰直观
- ✅ 功能完整:订单操作都实现了
- ✅ 权限控制:买家和卖家权限分离
- ⚠️ 建议:可以添加订单筛选和排序功能
改进措施:
- 后续版本添加筛选功能
- 添加按时间、金额排序
代码示例:
<template>
<v-container>
<v-tabs v-model="tab">
<v-tab>全部</v-tab>
<v-tab>待付款</v-tab>
<v-tab>待发货</v-tab>
<v-tab>待收货</v-tab>
<v-tab>已完成</v-tab>
<v-tab>已取消</v-tab>
</v-tabs>
<v-tabs-items v-model="tab">
<v-tab-item v-for="status in statuses" :key="status">
<v-card flat>
<v-card-text>
<order-item
v-for="order in getOrdersByStatus(status)"
:key="order.orderId"
:order="order"
@cancel="cancelOrder"
@pay="payOrder"
@confirm="confirmReceive"
@review="reviewOrder"
/>
</v-card-text>
</v-card>
</v-tab-item>
</v-tabs-items>
</v-container>
</template>
<script>
export default {
data() {
return {
tab: 0,
orders: [],
statuses: ['all', 'unpaid', 'paid', 'shipped', 'completed', 'cancelled']
}
},
methods: {
getOrdersByStatus(status) {
if (status === 'all') return this.orders;
return this.orders.filter(o => o.status === status);
},
async loadOrders() {
const res = await this.$api.getOrderList();
this.orders = res.data;
}
},
mounted() {
this.loadOrders();
}
}
</script>
六、项目运行截图/代码
6.1 订单创建页面
功能说明:
- 步骤式导航(确认商品 → 选择地址 → 确认订单)
- 商品信息展示
- 收货地址选择
- 配送方式选择
- 订单金额计算
- 提交订单按钮
测试结果: ✅ 功能正常
代码示例:
<div className="page-container checkout-page">
<header className="checkout-header">
<Link to="/cart">← 返回购物车</Link>
<h1>确认订单</h1>
</header>
{error && <div className="error-message">{error}</div>}
{cartItems.length === 0 ? (
<div className="cart-empty">
<p>没有待结算的商品</p>
<Link to="/cart" className="btn btn-primary">返回购物车</Link>
</div>
) : (
<>
{/* 商品列表 */}
<section className="checkout-section">
<h2>📦 商品清单 ({cartItems.length}件)</h2>
<div className="order-items">
{cartItems.map(item => (
<div key={item.id} className="order-item">
<div className="item-info">
<h3>{item.bookTitle || item.title}</h3>
<p className="item-condition">{item.condition}</p>
</div>
<div className="item-meetup">
{item.meetupLocation && (
<span className="meetup-location">📍 {item.meetupLocation}</span>
)}
</div>
<div className="item-price">
<span className="price">¥{(item.unitPrice || item.price || 0).toFixed(2)}</span>
<span className="quantity">× {item.quantity || 1}</span>
</div>
</div>
))}
</div>
</section>
{/* 面交说明 */}
<section className="checkout-section meetup-info">
<h2>🤝 面交说明</h2>
<div className="meetup-tips">
<p>• 本平台采用<strong>面交模式</strong>,无需在线支付</p>
<p>• 提交订单后,等待卖家确认</p>
<p>• 卖家确认后,请联系卖家约定具体面交时间和地点</p>
<p>• 面交时请当面验货,确认无误后完成交易</p>
</div>
</section>
{/* 订单汇总 */}
<section className="checkout-summary">
<div className="summary-row">
<span>商品金额</span>
<span>¥{totalAmount.toFixed(2)}</span>
</div>
<div className="summary-row">
<span>交易方式</span>
<span className="meetup-tag">🤝 面交</span>
</div>
<div className="summary-row total">
<span>预计总额</span>
<span className="total-price">¥{totalAmount.toFixed(2)}</span>
</div>
</section>
{/* 提交按钮 */}
<div className="checkout-actions">
<button
className="btn btn-primary btn-large"
onClick={handleSubmit}
disabled={submitting || cartItems.length === 0}
>
{submitting ? '提交中...' : `提交订单 (${cartItems.length}件)`}
</button>
<p className="submit-tip">点击提交后,订单将发送给卖家确认</p>
</div>
</>
)}
</div>
6.2 订单列表页面
功能说明:
- 按状态分类展示(全部、待付款、待发货、待收货、已完成、已取消)
- 订单信息展示(订单号、商品、金额、状态)
- 订单操作按钮(取消、查看面交地址、确认收货、评价)
- 分页功能
测试结果: ✅ 功能正常
代码示例:
<div className="page-container">
<h1>我的订单</h1>
{/* 状态筛选标签 */}
<div className="order-tabs">
{Object.entries(STATUS_CONFIG).map(([key, { label }]) => (
<button
key={key}
className={`tab-btn ${activeTab === key ? 'active' : ''}`}
onClick={() => setActiveTab(key)}
>
{label}
</button>
))}
</div>
{error && <p className="error-message">{error}</p>}
{loading ? (
<div className="loading">加载中...</div>
) : orders.length === 0 ? (
<div className="empty">暂无订单</div>
) : (
<div className="orders-list">
{orders.map(o => (
<Link to={`/orders/${o.id}`} key={o.id} className="order-card">
<div className="order-row">
<div>
<div className="order-id">订单号:{o.id.slice(0, 8)}...</div>
<div className="order-date">{new Date(o.createdAt).toLocaleString('zh-CN')}</div>
<div className="order-items-count">{o.items?.length || 0} 件商品</div>
</div>
<div style={{textAlign: 'right'}}>
<div className="order-amount">¥{o.totalAmount.toFixed(2)}</div>
<div className="order-status" style={getStatusStyle(o.status)}>
{getStatusLabel(o.status)}
</div>
</div>
</div>
</Link>
))}
</div>
)}
</div>
6.3 个人中心页面
功能说明:
- 用户头像和基本信息
- 个人信息编辑
- 我的订单统计
- 我的发布统计
- 快捷入口(订单、地址、发布、评价)
测试结果: ✅ 功能正常
代码示例:
<div className="page-container profile-page">
<h1>个人中心</h1>
{/* 用户信息卡片 */}
<section className="profile-card">
<div className="profile-header">
<div className="avatar">
{profile?.nickname?.charAt(0) || '?'}
</div>
<div className="profile-info">
{editing ? (
<div className="edit-nickname">
<input
type="text"
value={nickname}
onChange={(e) => setNickname(e.target.value)}
className="nickname-input"
placeholder="请输入昵称"
maxLength={20}
/>
</div>
) : (
<h2 className="user-nickname">{profile?.nickname}</h2>
)}
<p className="email">{profile?.email}</p>
</div>
{editing ? (
<div className="edit-actions">
<button
className="btn-primary"
onClick={handleSave}
disabled={saving}
>
{saving ? '保存中...' : '保存'}
</button>
<button
className="btn-secondary"
onClick={() => { setEditing(false); setNickname(profile?.nickname); }}
>
取消
</button>
</div>
) : (
<button className="btn-secondary" onClick={() => setEditing(true)}>
✏️ 编辑
</button>
)}
</div>
<p className="join-date">
🗓️ 加入时间:{new Date(profile?.createdAt).toLocaleDateString('zh-CN')}
</p>
</section>
{/* 统计数据 */}
<section className="profile-stats">
<div className="stat-item" onClick={() => navigate('/orders')}>
<span className="stat-value">{stats.orders}</span>
<span className="stat-label">订单</span>
</div>
<div className="stat-item" onClick={() => navigate('/publish')}>
<span className="stat-value">{stats.published}</span>
<span className="stat-label">发布</span>
</div>
<div className="stat-item">
<span className="stat-value">{stats.reviews}</span>
<span className="stat-label">评价</span>
</div>
</section>
{/* 功能入口 */}
<section className="profile-menu">
<div className="menu-item" onClick={() => navigate('/orders')}>
<span className="menu-icon">📦</span>
<span className="menu-text">我的订单</span>
<span className="menu-arrow">›</span>
</div>
<div className="menu-item" onClick={() => navigate('/cart')}>
<span className="menu-icon">�</span>
<span className="menu-text">购物车</span>
<span className="menu-arrow">›</span>
</div>
<div className="menu-item" onClick={() => navigate('/publish')}>
<span className="menu-icon">📚</span>
<span className="menu-text">发布书籍</span>
<span className="menu-arrow">›</span>
</div>
<div className="menu-item" onClick={() => navigate('/books')}>
<span className="menu-icon">�</span>
<span className="menu-text">浏览书籍</span>
<span className="menu-arrow">›</span>
</div>
</section>
{/* 退出登录 */}
<button className="btn-danger logout-btn" onClick={handleLogout}>
退出登录
</button>
</div>
6.4 收货地址管理页面
功能说明:
- 地址列表展示
- 添加新地址(省市区三级联动)
- 编辑地址
- 删除地址
- 设置默认地址
测试结果: ✅ 功能正常
代码示例:
<div className="address-manager">
<div className="address-header">
<h3>收货地址</h3>
<button
className="btn-add-address"
onClick={() => setShowForm(!showForm)}
>
{showForm ? '取消' : '+ 新增地址'}
</button>
</div>
{showForm && (
<form className="address-form" onSubmit={handleSubmit}>
<div className="form-row">
<input
type="text"
placeholder="收件人姓名"
value={form.recipientName}
onChange={e => setForm({...form, recipientName: e.target.value})}
required
/>
<input
type="tel"
placeholder="手机号码"
value={form.phone}
onChange={e => setForm({...form, phone: e.target.value})}
required
/>
</div>
<div className="form-row">
<input
type="text"
placeholder="省份"
value={form.province}
onChange={e => setForm({...form, province: e.target.value})}
required
/>
<input
type="text"
placeholder="城市"
value={form.city}
onChange={e => setForm({...form, city: e.target.value})}
required
/>
<input
type="text"
placeholder="区县"
value={form.district}
onChange={e => setForm({...form, district: e.target.value})}
required
/>
</div>
<input
type="text"
placeholder="详细地址"
value={form.detailAddress}
onChange={e => setForm({...form, detailAddress: e.target.value})}
required
className="full-width"
/>
<label className="checkbox-label">
<input
type="checkbox"
checked={form.isDefault}
onChange={e => setForm({...form, isDefault: e.target.checked})}
/>
设为默认地址
</label>
<button type="submit" className="btn-submit">保存地址</button>
</form>
)}
<div className="address-list">
{addresses.length === 0 ? (
<p className="no-address">暂无收货地址,请添加</p>
) : (
addresses.map(addr => (
<div
key={addr.id}
className={`address-card ${selectedId === addr.id ? 'selected' : ''}`}
onClick={() => handleSelect(addr.id)}
>
<div className="address-info">
<div className="address-name">
<span className="recipient">{addr.recipientName}</span>
<span className="phone">{addr.phone}</span>
{addr.isDefault && <span className="default-tag">默认</span>}
</div>
<div className="address-detail">
{addr.province} {addr.city} {addr.district} {addr.detailAddress}
</div>
</div>
<button
className="btn-delete"
onClick={(e) => {
e.stopPropagation();
handleDelete(addr.id);
}}
>
删除
</button>
</div>
))
)}
</div>
</div>
6.5 面交地址页面
功能说明:
- 订单信息展示
- 卖家面交地址展示
- 联系方式显示
- 面交时间展示
- 确认面交按钮
测试结果: ✅ 功能正常
代码示例:
{book.meetupLocation && (
<div className="meetup-location">
<h3>📍 面交地点</h3>
<p className="location-text">{book.meetupLocation}</p>
</div>
)}
{(order.status === 'CONFIRMED' || order.status === 'MEETUP') && (
<div className="meetup-info">
<h3>📍 面交信息</h3>
<p>请联系卖家确认面交时间和地点</p>
</div>
)}
<section className="checkout-section meetup-info">
<h2>🤝 面交说明</h2>
<div className="meetup-tips">
<p>• 本平台采用<strong>面交模式</strong>,无需在线支付</p>
<p>• 提交订单后,等待卖家确认</p>
<p>• 卖家确认后,请联系卖家约定具体面交时间和地点</p>
</div>
</section>
{item.meetupLocation && (
<p className="cart-item-location">📍 {item.meetupLocation}</p>
)}
6.6 接口测试(Postman)
订单创建接口测试:
POST http://localhost:8081/api/orders
Request:
{
"items": [
{
"bookId": 1,
"quantity": 1
},
{
"bookId": 3,
"quantity": 1
}
],
"addressId": 1,
"shippingMethod": 2,
"cartIds": [1, 2]
}
Response:
{
"code": 200,
"message": "订单创建成功",
"data": {
"orderId": 5,
"orderNo": "202511221430251234567895",
"buyerId": 1,
"totalPrice": 77.00,
"shippingFee": 5.00,
"actualPrice": 82.00,
"status": 0,
"items": [
{
"bookId": 1,
"bookTitle": "高等数学(上册)",
"price": 35.00,
"quantity": 1
},
{
"bookId": 3,
"bookTitle": "大学物理",
"price": 42.00,
"quantity": 1
}
],
"createTime": "2025-11-22 14:30:25"
}
}
测试结果: ✅ 接口正常
面交地址接口测试:
POST http://localhost:8081/api/meetup/address
Request:
{
"orderId": 5,
"type": "view"
}
Response:
{
"code": 200,
"message": "获取成功",
"data": {
"addressId": 3,
"orderId": 5,
"orderNo": "202511221430251234567895",
"location": "图书馆一楼大厅",
"contactTime": "周一至周五 12:00-18:00",
"contactPhone": "138****1234",
"sellerName": "李同学"
}
}
测试结果: ✅ 接口正常
订单状态流转测试:
PUT http://localhost:8081/api/orders/5/ship
Request:
{
"trackingNo": "SF1234567890"
}
Response:
{
"code": 200,
"message": "发货成功",
"data": {
"orderId": 5,
"status": 2,
"shippingTime": "2025-11-22 15:00:00",
"trackingNo": "SF1234567890"
}
}
测试结果: ✅ 接口正常
评价发布接口测试:
POST http://localhost:8081/api/reviews
Request:
{
"orderId": 4,
"bookId": 1,
"rating": 5,
"content": "书籍质量很好,卖家服务态度也很好,推荐!"
}
Response:
{
"code": 200,
"message": "评价成功",
"data": {
"reviewId": 1,
"orderId": 4,
"bookId": 1,
"userId": 1,
"rating": 5,
"content": "书籍质量很好,卖家服务态度也很好,推荐!",
"createTime": "2025-11-22 16:20:15"
}
}
测试结果: ✅ 接口正常
6.7 数据库数据
订单表数据:
mysql> SELECT order_id, order_no, buyer_id, total_price, status, payment_time FROM `order` LIMIT 5;
+----------+----------------------------+----------+-------------+--------+---------------------+
| order_id | order_no | buyer_id | total_price | status | payment_time |
+----------+----------------------------+----------+-------------+--------+---------------------+
| 1 | 202511211430251234567890 | 1 | 35.00 | 3 | 2025-11-21 14:35:30 |
| 2 | 202511211445301234567891 | 1 | 70.00 | 2 | 2025-11-21 14:50:45 |
| 3 | 202511211520151234567892 | 3 | 42.00 | 1 | 2025-11-21 15:25:20 |
| 4 | 202511221230151234567893 | 1 | 28.00 | 4 | 2025-11-22 12:35:10 |
| 5 | 202511221430251234567895 | 1 | 77.00 | 1 | 2025-11-22 14:35:30 |
+----------+----------------------------+----------+-------------+--------+---------------------+
5 rows in set (0.00 sec)
面交地址表数据:
mysql> SELECT * FROM meetup_address LIMIT 3;
+------------+---------+--------------------+----------------------------+---------------+---------------------+
| address_id | book_id | location | contact_time | contact_phone | create_time |
+------------+---------+--------------------+----------------------------+---------------+---------------------+
| 1 | 1 | 图书馆一楼大厅 | 周一至周五 12:00-18:00 | 138****1234 | 2025-11-21 14:35:30 |
| 2 | 2 | 食堂门口 | 周末 10:00-20:00 | 139****5678 | 2025-11-21 14:50:45 |
| 3 | 5 | 教学楼B座一楼 | 每天 18:00-21:00 | 137****9012 | 2025-11-22 14:35:30 |
+------------+---------+--------------------+----------------------------+---------------+---------------------+
3 rows in set (0.00 sec)
评价表数据:
mysql> SELECT * FROM review LIMIT 2;
+-----------+----------+---------+---------+-----------+--------+------------------------------------------+---------------------+
| review_id | order_id | book_id | user_id | seller_id | rating | content | create_time |
+-----------+----------+---------+---------+-----------+--------+------------------------------------------+---------------------+
| 1 | 4 | 1 | 1 | 2 | 5 | 书籍质量很好,卖家服务态度也很好,推荐! | 2025-11-22 16:20:15 |
| 2 | 1 | 1 | 1 | 2 | 4 | 书籍不错,就是有点旧 | 2025-11-22 16:30:20 |
+-----------+----------+---------+---------+-----------+--------+------------------------------------------+---------------------+
2 rows in set (0.00 sec)
测试结果: ✅ 数据正常存储
七、每日个人总结
7.1 杨浩
今天完成了订单创建和个人中心页面的开发,这两个页面都比较复杂,但最终实现得很好。上午的功能演示很成功,大家都很满意。
看到项目从无到有,一点点成型,非常有成就感。作为组长,我为团队感到骄傲。明天继续完善剩余功能,争取完美收官。
今日收获:
- 掌握了v-stepper组件的使用
- 学会了如何设计复杂的业务流程
- 项目管理和团队协作能力大幅提升
明日目标:
- 完成评价功能前端页面
- 优化已完成页面
- 准备Alpha版本发布
7.2 戴宏翔
今天完成了面交地址功能的开发,设计了卖家填写面交地址、买家查看面交地址的完整流程。面交模式让交易更加便捷,也更适合校园场景。
作为PM,我对项目进度和质量都很满意。团队的执行力很强,大家都很给力。
今日收获:
- 掌握了面交流程的设计
- 学会了如何设计地址展示功能
- 项目管理经验大幅增加
明日目标:
- 优化面交地址模块代码
- 进行全面的代码Review
- 准备Alpha版本发布
7.3 莫圣韬
今天对订单和面交地址模块进行了全面测试,发现了库存并发的Bug,已经及时反馈并修复。测试工作让我对整个系统有了全面的了解。
通过这次冲刺,我的测试能力提升很大。明天继续进行全面测试,确保没有遗漏的Bug。
今日收获:
- 掌握了并发测试的方法
- 学会了如何发现深层次的Bug
- 测试思维和能力大幅提升
明日目标:
- 进行全面的系统测试
- 编写完整的测试报告
- 整理Bug列表
7.4 赖顺炜
今天完成了订单管理和评价功能的开发,并修复了库存并发的Bug。订单状态流转的逻辑比较复杂,但通过画状态机图,思路清晰了很多。
库存并发Bug的修复让我对乐观锁有了更深入的理解。明天继续优化代码,提升系统性能。
今日收获:
- 掌握了乐观锁的实际应用
- 学会了如何设计状态机
- 并发问题处理能力提升
明日目标:
- 优化数据库查询性能
- 进行压力测试
- 准备Alpha版本发布
7.5 陈东楷
今天主要工作是协助功能演示和更新文档。功能演示很成功,大家的反馈都很好。文档的及时更新对团队协作很重要。
通过这次冲刺,我对项目管理和文档管理有了更深的认识。明天继续完善文档,准备Alpha版本发布说明。
今日收获:
- 学会了如何组织功能演示
- 文档管理能力持续提升
- 项目管理意识增强
明日目标:
- 完善所有文档
- 编写Alpha版本发布说明
- 编写冲刺总结
7.6 刘霆浩
今天完成了订单列表和地址管理页面的开发,并进行了前端性能优化。订单列表使用Tabs分类展示,用户体验很好。
前端性能优化让页面加载速度提升了30%。明天继续优化,并部署测试环境。
今日收获:
- 掌握了前端性能优化的方法
- 学会了如何实现懒加载
- 全栈开发能力大幅提升
明日目标:
- 继续优化前端性能
- 部署测试环境
- 准备Alpha版本发布
书海拾贝队 - Alpha冲刺 Day 5 完成




浙公网安备 33010602011771号