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

1.3 会议要点
- 前三天进度超前,团队信心倍增
- 今日重点:完成搜索功能和订单创建功能
- 讨论:订单状态流转逻辑,确保业务正确性
- 提醒:订单模块是核心功能,需要仔细测试
- 决议:明天进行一次完整的功能演示
二、团队成员工作情况
2.1 杨浩(组长 - 前端开发)
昨天已完成的工作:
- 书籍列表前端页面开发
- 书籍搜索前端组件开发
- 优化书籍发布页面用户体验
今天计划完成的工作:
- 订单创建前端页面开发
- 个人中心前端页面开发
- 前后端联调测试
工作中遇到的困难:
- 订单创建页面需要展示多个商品,布局比较复杂
- 解决中:参考淘宝、京东的订单页面设计
2.2 戴宏翔(PM - 后端开发)
昨天已完成的工作:
- 个人信息后端接口开发
- 收货地址后端接口开发
- 代码优化和重构
今天计划完成的工作:
- 面交地址接口开发(卖家提供)
- 订单确认与面交流程处理
- 订单模块代码Review
工作中遇到的困难:
- 面交流程需要考虑买卖双方约定时间地点
- 已解决:设计面交地址字段,卖家发布书籍时填写,买家下单后可查看卖家面交地址进行当面交易
2.3 莫圣韬(测试工程师)
昨天已完成的工作:
- 对书籍搜索接口进行测试
- 对购物车接口进行测试
- 编写测试报告
今天计划完成的工作:
- 对订单创建接口进行测试
- 对个人信息和地址接口进行测试
- 整理Bug列表
工作中遇到的困难:
- 发现购物车删除接口在商品不存在时返回500错误
- 已反馈:提交Bug #033,优先级P1
2.4 赖顺炜(后端+DBA)
昨天已完成的工作:
- 书籍搜索后端接口开发
- 订单创建后端接口开发
- 数据库性能测试
今天计划完成的工作:
- 订单查询后端接口开发
- 订单状态流转逻辑
- 评价功能后端接口开发
工作中遇到的困难:
- 订单状态流转需要考虑多种场景,逻辑比较复杂
- 解决方案:画状态机图,明确每个状态的转换条件
2.5 陈东楷(需求+文档)
昨天已完成的工作:
- 更新用户手册(新增书籍模块)
- 整理Bug列表和优先级
- 编写Alpha冲刺Day3博客
今天计划完成的工作:
- 更新接口文档(订单模块)
- 编写用户使用指南
- 准备明天的功能演示PPT
工作中遇到的困难:
- 暂无
2.6 刘霆浩(全栈+运维)
昨天已完成的工作:
- 购物车前端页面开发
- 集成购物车接口
- 服务器监控
今天计划完成的工作:
- 订单列表前端页面开发
- 收货地址前端页面开发
- 优化前端性能
工作中遇到的困难:
- 购物车页面的商品选择逻辑有些复杂,需要优化
- 已解决:使用Vuex管理购物车状态,简化逻辑
三、项目燃尽图
3.1 Day 4 燃尽图

图例:
红线 理想剩余工时
蓝线 实际剩余工时
3.2 燃尽图数据
| 日期 | 理想剩余工时 | 实际剩余工时 | 完成工时 |
|---|---|---|---|
| Day 1 | 138h | 138h | 0h |
| Day 2 | 118h | 115h | 23h |
| Day 3 | 98h | 98h | 17h |
| Day 4 | 75h | 75h | 23h |
| Day 5 | 58h | - | - |
| Day 6 | 38h | - | - |
| Day 7 | 0h | - | - |
四、代码/文档签入记录
4.1 今日签入统计
| 成员 | 签入次数 | 代码行数 | 文件数 | 主要内容 |
|---|---|---|---|---|
| 杨浩 | 2 | +198 | 2 | 书籍搜索功能 |
| 戴宏翔 | 1 | +412 | 4 | 个人信息和地址接口 |
| 莫圣韬 | 1 | +185 | 2 | 测试用例 |
| 赖顺炜 | 1 | +485 | 5 | 搜索和订单接口 |
| 陈东楷 | 1 | +278 | 3 | 文档更新 |
| 刘霆浩 | 1 | +425 | 4 | 购物车页面 |
4.2 Git提交记录

4.3 Issue关联
Issue链接: https://github.com/Bookmatescope/ReuseBook/issues
五、Code Review
5.1 Review记录
Review 1: 书籍搜索模块
- Reviewer: 赖顺炜
- Reviewee: 杨浩、赖顺炜
Review内容:
- ✅ 代码规范:符合团队编码规范
- ✅ 搜索功能:全文搜索、排序、分页都实现
- ✅ 用户体验:搜索历史、热门推荐很实用
- ✅ 性能优化:使用了全文索引,查询速度快
- ⚠️ 建议:搜索结果可以高亮显示关键词
改进措施:
- 实现搜索关键词高亮
- 添加搜索建议功能
代码示例:
// 书籍搜索接口(支持全文搜索和排序)
@GetMapping("/books/search")
public Result search(
@RequestParam String keyword,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "20") Integer size,
@RequestParam(defaultValue = "relevance") String sortBy
) {
// 参数验证
if (StringUtils.isEmpty(keyword)) {
return Result.error("搜索关键词不能为空");
}
// 构建排序条件
String orderBy = "MATCH(title, author, description) AGAINST('" + keyword + "') DESC";
if ("price_asc".equals(sortBy)) {
orderBy = "price ASC";
} else if ("price_desc".equals(sortBy)) {
orderBy = "price DESC";
} else if ("time".equals(sortBy)) {
orderBy = "create_time DESC";
}
// 全文搜索
PageInfo<Book> pageInfo = bookService.search(keyword, page, size, orderBy);
// 记录搜索历史
searchHistoryService.save(keyword);
return Result.success(pageInfo);
}
Review 2: 购物车模块
- Reviewer: 戴宏翔
- Reviewee: 刘霆浩、戴宏翔
Review内容:
- ✅ 代码规范:符合编码规范
- ✅ 状态管理:使用Vuex管理状态,逻辑清晰
- ✅ 用户体验:商品选择、数量修改、删除都很流畅
- ✅ 总价计算:实时计算,准确无误
- ⚠️ 建议:可以添加购物车商品数量限制
改进措施:
- 限制购物车最多50件商品
- 添加购物车过期清理机制
代码示例:
// Vuex购物车状态管理
export default {
namespaced: true,
state: {
items: [],
selectedIds: []
},
getters: {
// 计算总价
totalPrice(state) {
return state.items
.filter(item => state.selectedIds.includes(item.cartId))
.reduce((sum, item) => sum + item.price * item.quantity, 0);
},
// 计算选中数量
selectedCount(state) {
return state.selectedIds.length;
}
},
mutations: {
// 设置购物车商品
SET_ITEMS(state, items) {
state.items = items;
},
// 更新商品数量
UPDATE_QUANTITY(state, { cartId, quantity }) {
const item = state.items.find(i => i.cartId === cartId);
if (item) {
item.quantity = quantity;
}
},
// 删除商品
REMOVE_ITEM(state, cartId) {
state.items = state.items.filter(i => i.cartId !== cartId);
state.selectedIds = state.selectedIds.filter(id => id !== cartId);
},
// 选择商品
TOGGLE_SELECT(state, cartId) {
const index = state.selectedIds.indexOf(cartId);
if (index > -1) {
state.selectedIds.splice(index, 1);
} else {
state.selectedIds.push(cartId);
}
},
// 全选/取消全选
TOGGLE_SELECT_ALL(state) {
if (state.selectedIds.length === state.items.length) {
state.selectedIds = [];
} else {
state.selectedIds = state.items.map(i => i.cartId);
}
}
},
actions: {
// 加载购物车
async loadCart({ commit }) {
const res = await api.getCartList();
commit('SET_ITEMS', res.data);
},
// 更新数量
async updateQuantity({ commit }, { cartId, quantity }) {
await api.updateCartQuantity(cartId, quantity);
commit('UPDATE_QUANTITY', { cartId, quantity });
},
// 删除商品
async removeItem({ commit }, cartId) {
await api.removeCartItem(cartId);
commit('REMOVE_ITEM', cartId);
}
}
}
Review 3: 订单创建模块
- Reviewer: 杨浩
- Reviewee: 赖顺炜
Review内容:
- ✅ 代码规范:符合编码规范
- ✅ 业务逻辑:订单创建流程正确
- ✅ 数据验证:参数校验完整
- ✅ 库存处理:库存检查和扣减正确
- ⚠️ 建议:订单创建需要考虑并发问题
改进措施:
- 使用数据库事务保证一致性
- 添加乐观锁防止超卖
代码示例:
// 订单创建接口
@PostMapping("/orders")
@Transactional(rollbackFor = Exception.class)
public Result createOrder(@RequestBody OrderCreateDTO dto) {
// 1. 参数验证
if (dto.getItems() == null || dto.getItems().isEmpty()) {
return Result.error("订单商品不能为空");
}
// 2. 检查库存
for (OrderItemDTO item : dto.getItems()) {
Book book = bookService.getById(item.getBookId());
if (book == null) {
return Result.error("商品不存在:" + item.getBookId());
}
if (book.getStock() < item.getQuantity()) {
return Result.error("库存不足:" + book.getTitle());
}
}
// 3. 创建订单
Order order = new Order();
order.setOrderNo(OrderUtil.generateOrderNo());
order.setBuyerId(UserContext.getUserId());
order.setStatus(OrderStatus.UNPAID);
// ... 设置其他字段
orderService.save(order);
// 4. 创建订单明细
for (OrderItemDTO item : dto.getItems()) {
OrderItem orderItem = new OrderItem();
orderItem.setOrderId(order.getOrderId());
orderItem.setBookId(item.getBookId());
orderItem.setQuantity(item.getQuantity());
// ... 设置其他字段
orderItemService.save(orderItem);
// 5. 扣减库存(使用乐观锁)
boolean success = bookService.decreaseStock(
item.getBookId(),
item.getQuantity()
);
if (!success) {
throw new BusinessException("库存扣减失败");
}
}
// 6. 清空购物车
cartService.clearByIds(dto.getCartIds());
return Result.success(order);
}
-- 使用乐观锁扣减库存
UPDATE book
SET stock = stock - #{quantity},
version = version + 1
WHERE book_id = #{bookId}
AND stock >= #{quantity}
AND version = #{version}
六、项目运行截图/代码
6.1 书籍搜索页面
功能说明:
- 搜索输入框和搜索按钮
- 搜索历史记录
- 热门搜索推荐
- 搜索结果展示(支持排序)
- 分页功能
测试结果: ✅ 功能正常
代码片段:
<div className="books-page">
<header className="books-header">
<h1>📚 二手书市场</h1>
<Link to="/publish" className="btn btn-primary">发布二手书</Link>
</header>
<div className="search-bar">
<input
type="search"
placeholder="搜索书名、作者或 ISBN..."
value={keyword}
onChange={(e) => setKeyword(e.target.value)}
/>
</div>
{paged.length === 0 ? (
<p className="empty-hint">
{keyword ? '未找到匹配的书籍' : '暂无书籍,快来发布第一本吧!'}
</p>
) : (
<>
<ul className="book-list">
{paged.map((book) => (
<li key={book.id} className="book-card">
<Link to={`/books/${book.id}`} className="book-link">
<h3 className="book-title">{book.title}</h3>
<p className="book-author">{book.author}</p>
<p className="book-price">¥{book.price?.toFixed(2)}</p>
<span className="book-condition">{book.condition}</span>
</Link>
</li>
))}
</ul>
{totalPages > 1 && (
<div className="pagination">
<button
disabled={currentPage === 1}
onClick={() => setCurrentPage((p) => p - 1)}
>
上一页
</button>
<span>
{currentPage} / {totalPages}
</span>
<button
disabled={currentPage === totalPages}
onClick={() => setCurrentPage((p) => p + 1)}
>
下一页
</button>
</div>
)}
</>
)}
<footer className="page-footer">
<Link to="/">← 返回首页</Link>
</footer>
</div>
6.2 购物车页面
功能说明:
- 商品列表展示(封面、书名、价格、数量)
- 商品选择(单选、全选)
- 数量修改(+/-按钮)
- 商品删除
- 总价实时计算
- 结算按钮
测试结果: ✅ 功能正常
代码片段:
<template>
<v-container>
<v-card>
<v-card-title>
购物车
<v-spacer />
<v-btn text color="error" @click="clearSelected">删除选中</v-btn>
</v-card-title>
<v-card-text>
<!-- 全选 -->
<v-checkbox
v-model="selectAll"
label="全选"
@change="toggleSelectAll"
/>
<!-- 商品列表 -->
<cart-item
v-for="item in cartItems"
:key="item.cartId"
:item="item"
:selected="isSelected(item.cartId)"
@select="toggleSelect"
@update-quantity="updateQuantity"
@remove="removeItem"
/>
</v-card-text>
<v-card-actions>
<v-spacer />
<div class="total-price">
总计:<span class="price">¥{{ totalPrice }}</span>
</div>
<v-btn color="primary" large @click="checkout">
结算({{ selectedCount }})
</v-btn>
</v-card-actions>
</v-card>
</v-container>
</template>
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 接口测试(Postman)
搜索接口测试:
GET http://localhost:8081/api/books/search?keyword=数学&page=1&size=20&sortBy=relevance
Response:
{
"code": 200,
"message": "success",
"data": {
"list": [
{
"bookId": 1,
"title": "高等数学(上册)",
"author": "同济大学数学系",
"price": 35.00,
"relevance": 0.95
},
{
"bookId": 2,
"title": "线性代数",
"author": "同济大学数学系",
"price": 28.00,
"relevance": 0.85
}
],
"total": 12,
"page": 1,
"size": 20
}
}
测试结果: ✅ 接口正常
订单创建接口测试:
POST http://localhost:8081/api/orders
Request:
{
"items": [
{
"bookId": 1,
"quantity": 1
}
],
"addressId": 1,
"shippingMethod": 2,
"cartIds": [1]
}
Response:
{
"code": 200,
"message": "订单创建成功",
"data": {
"orderId": 1,
"orderNo": "202511211430251234567890",
"buyerId": 1,
"totalPrice": 35.00,
"shippingFee": 5.00,
"actualPrice": 40.00,
"status": 0,
"createTime": "2025-11-21 14:30:25"
}
}
测试结果: ✅ 接口正常
个人信息接口测试:
GET http://localhost:8081/api/users/profile
Response:
{
"code": 200,
"message": "success",
"data": {
"userId": 1,
"studentId": "3123004462",
"username": "杨浩",
"email": "yanghao@example.com",
"phone": "13800138000",
"avatar": "https://oss.example.com/avatar1.jpg",
"role": 1,
"createTime": "2025-11-19 10:35:20"
}
}
测试结果: ✅ 接口正常
6.6 数据库数据
订单表数据:
mysql> SELECT order_id, order_no, buyer_id, total_price, status FROM `order` LIMIT 3;
+----------+----------------------------+----------+-------------+--------+
| order_id | order_no | buyer_id | total_price | status |
+----------+----------------------------+----------+-------------+--------+
| 1 | 202511211430251234567890 | 1 | 35.00 | 0 |
| 2 | 202511211445301234567891 | 1 | 70.00 | 0 |
| 3 | 202511211520151234567892 | 3 | 42.00 | 0 |
+----------+----------------------------+----------+-------------+--------+
3 rows in set (0.00 sec)
订单明细表数据:
mysql> SELECT * FROM order_item LIMIT 3;
+---------+----------+---------+------------------------+-------+----------+---------+
| item_id | order_id | book_id | book_title | price | quantity | subtotal|
+---------+----------+---------+------------------------+-------+----------+---------+
| 1 | 1 | 1 | 高等数学(上册) | 35.00 | 1 | 35.00 |
| 2 | 2 | 1 | 高等数学(上册) | 35.00 | 1 | 35.00 |
| 3 | 2 | 2 | 线性代数 | 28.00 | 1 | 28.00 |
+---------+----------+---------+------------------------+-------+----------+---------+
3 rows in set (0.00 sec)
收货地址表数据:
mysql> SELECT * FROM address LIMIT 2;
+------------+---------+---------------+----------------+--------+--------+----------+---------------------+------------+
| address_id | user_id | receiver_name | receiver_phone | province | city | district | detail | is_default |
+------------+---------+---------------+----------------+--------+--------+----------+---------------------+------------+
| 1 | 1 | 杨浩 | 13800138000 | 福建省 | 福州市 | 闽侯县 | 福州大学紫金港校区 | 1 |
| 2 | 1 | 杨浩 | 13800138000 | 福建省 | 福州市 | 闽侯县 | 福州大学旗山校区 | 0 |
+------------+---------+---------------+----------------+--------+--------+----------+---------------------+------------+
2 rows in set (0.00 sec)
测试结果: ✅ 数据正常存储
七、每日个人总结
7.1 杨浩
今天完成了书籍搜索功能的开发,实现了搜索历史和热门推荐,用户体验很好。开始了订单创建页面的开发,这是一个比较复杂的页面,需要展示多个商品、收货地址、配送方式等信息。
团队进度持续超前,大家都很有信心。明天准备进行一次完整的功能演示,展示我们的成果。
今日收获:
- 掌握了搜索功能的实现方法
- 学会了如何设计复杂的表单页面
- 项目管理能力提升
明日目标:
- 完成订单创建页面
- 完成个人中心页面
- 准备功能演示
7.2 戴宏翔
今天完成了个人信息和收货地址接口的开发,功能比较简单,进度很顺利。修复了购物车删除接口的Bug,提高了代码的健壮性。
明天开始面交地址功能的开发,卖家发布书籍时需要填写面交地址,买家下单后可查看卖家提供的面交地点进行当面交易。作为PM,我会继续关注项目进度和质量。
今日收获:
- 学会了如何处理异常情况
- 代码健壮性意识增强
- 项目管理经验增加
明日目标:
- 完成面交地址接口开发
- 完成订单确认与面交流程处理
- 进行代码Review
7.3 莫圣韬
今天对搜索和购物车模块进行了测试,发现了3个Bug,都已经反馈给开发人员。其中购物车删除接口的Bug已经修复,其他两个Bug正在修复中。
测试工作让我对业务逻辑有了更深入的理解。明天继续对订单模块进行测试,这是核心功能,需要仔细测试。
今日收获:
- 测试能力持续提升
- 学会了如何编写性能测试用例
- Bug跟踪管理经验增加
明日目标:
- 对订单创建接口进行测试
- 对面交地址接口进行测试
- 编写测试报告
7.4 赖顺炜
今天完成了搜索和订单创建接口的开发,这两个都是核心功能。搜索功能使用了MySQL全文索引,性能很好。订单创建使用了乐观锁防止超卖,保证了数据一致性。
明天继续订单模块的开发,完成订单查询和状态流转功能。
今日收获:
- 掌握了乐观锁的使用方法
- 学会了如何处理并发问题
- 订单业务逻辑理解更深入
明日目标:
- 完成订单查询接口
- 完成订单状态流转逻辑
- 完成评价功能接口
7.5 陈东楷
今天主要工作是更新文档和准备明天的功能演示PPT。接口文档的更新需要与开发人员密切沟通,确保文档的准确性。
功能演示PPT需要展示我们的核心功能和亮点,让大家看到我们的成果。
今日收获:
- 文档管理能力持续提升
- 学会了如何制作演示PPT
- 沟通协调能力增强
明日目标:
- 完善功能演示PPT
- 协助进行功能演示
- 编写冲刺博客
7.6 刘霆浩
今天完成了购物车页面的开发,使用Vuex管理状态,逻辑清晰,代码质量不错。购物车页面的交互比较复杂,但最终实现得很流畅。
明天开始订单列表和收货地址页面的开发,这两个页面相对简单。
今日收获:
- 掌握了Vuex状态管理的高级用法
- 学会了如何设计复杂的交互逻辑
- 前端架构设计能力提升
明日目标:
- 完成订单列表页面
- 完成收货地址页面
- 优化前端性能
书海拾贝队 - Alpha冲刺 Day 4 完成





浙公网安备 33010602011771号