GDUT外卖系统设计报告
团队名称:王炸
成员及分工:
一、需求改进 & 原型优化
1. **核心功能聚焦
| 原功能模块 | 优化方案 |  | 
| 多角色系统(用户/商家/骑手) | 简化为用户+商家双角色(骑手功能由商家兼任) |  | 
| 复杂支付流程 | 保留微信支付+模拟校园卡支付(降级方案) |  | 
| 实时轨迹追踪 | 降级为订单状态推送(节省高德API成本) |  | 
| 智能推荐系统 | 改为"热销榜"静态推荐 |  | 
2. 用户痛点与解决方案  :
- 典型场景:
"学生小陈在课间通过GDUT外卖预约12:00送餐至教学楼,避免食堂排队" 
 
3. 功能四象限分析
高价值高紧迫:在线支付、订单状态通知  
高价值低紧迫:菜品收藏、历史订单  
低价值高紧迫:商家评分、投诉入口  
低价值低紧迫:个性化头像、夜间模式  
4. WBS调整(甘特图)
gantt  
    title GDUT外卖Alpha阶段计划  
    dateFormat  YYYY-MM-DD  
    section 核心功能  
    用户认证       :2025-04-23, 5d  
    菜品管理       :2025-04-28, 7d  
    订单流程       :2025-05-05, 10d  
    section 质量保障  
    接口联调       :crit, 2025-05-12, 3d  
    压力测试       :2025-05-15, 2d  
二、系统设计
1. 精简技术栈
| 层级 | 技术选型 | 降级方案 | 
| 前端 | Vue3 + Uni-app | 去除TypeScript改用ES6 | 
| 后端 | Spring Boot | 改用MyBatis替代MyBatis-Plus | 
| 数据库 | MySQL主从 | 单库+定时备份 | 
| 部署 | Docker集群 | 腾讯云轻量服务器单机部署 | 
2. 核心数据库表(ER图关键部分)
erDiagram  
    USER ||--o{ ORDER : "1:N"  
    USER {  
        bigint id PK  
        varchar(20) student_id  
        varchar(50) dorm  
    }  
    ORDER ||--|{ ORDER_DETAIL : contains  
    ORDER {  
        bigint id PK  
        varchar(10) status  
    }  
    DISH {  
        bigint id PK  
        decimal price  
        varchar(10) canteen  
    }  
3. 安全与性能优化
- 认证:JWT + 微信快捷登录
- 支付:微信支付沙箱环境(模拟校园卡支付走本地虚拟账户)
- 缓存:Redis仅缓存热门菜品(非必需可移除)
三、Alpha任务分配
1. Sprint Backlog
| 任务 | 时间 | 交付物 |  | 
| 微信登录对接 | 8h | 可获取openid的API |  | 
| 订单状态机实现 | 12h | 状态流转单元测试 |  | 
| 食堂档口选择器 | 6h | 带地理筛选的Vue组件 |  | 
2. 每日站会流程
09:00-09:15 站立会议 
09:30 更新Leangoo看板任务状态  
17:00 代码提交至GitHub主分支(强制)  
四、测试计划
1. 分层测试策略
| 测试类型 | 工具 | 覆盖率目标 | 
| 单元测试 | JUnit | 核心模块60% | 
| 接口测试 | Postman | 100%关键API | 
| UI测试 | Cypress | 主流程覆盖 | 
2. 典型测试用例
用例ID:PAY_001
- 场景:用户余额不足时支付
- 步骤:提交订单→选择校园卡支付→余额不足
- 预期:返回"余额不足"提示并保留订单30分钟
五、成本控制方案
| 项目 | 预算 | 实际方案 |  | 
| 人力 | 2人月 | 1名全栈+1名测试 |  | 
| 服务器 | 60元/年 | 腾讯云2核4G |  | 
| 域名备案 | 免费 | 使用学校二级域名 |  | 
六、风险应对
| 风险 | 应对措施 | 
| 微信支付审核延迟 | 使用沙箱环境演示 | 
| 高并发订单崩溃 | 限流降级(Alpha阶段不处理) | 
| 菜品图片存储超支 | 压缩至<300KB/张 |