团队作业3
需求&原型改进
一、功能瘦身方案(聚焦核心功能)
- 学术资源循环站(核心)
 
- 简化为教材/笔记交易模块
 - 采用"学科+课程编号"手动标签系统(替代复杂DNA匹配)
 - 增加扫码查书功能(扫描教材ISBN码自动识别)
 
- 校园时间银行(特色)
 
- 保留基础技能交换功能
 - 采用"1学分=1小时"简化计量单位
 - 学长咨询改为预约制(去除拍卖机制)
 
- 宿舍经济特区(刚需)
 
- 拼单功能简化为楼栋群聊
 - 床位出租改为假期闲置登记(手动审核)
 
- 移除NFT等复杂模块
 
- 成长体系改为积分制(1交易=10积分)
 - 数字学生证改为普通实名认证
 
- 校际贸易改为校园文创专区
 
- 聚焦本校纪念品交易
 
二、技术方案降级
- 前端技术
 
- 框架:Uni-app(一套代码多端发布)
 - UI库:uView基础组件库
 - 地图定位:腾讯位置服务基础API
 
- 后端技术
 
- 
框架:Node.js + Express
 - 
数据库:MySQL单库(表结构示例):
sql
复制
-- 商品表 CREATE TABLE items ( id INT PRIMARY KEY AUTO_INCREMENT, type ENUM('教材','服务','日用品','其他'), title VARCHAR(60), owner_id INT, price DECIMAL(10,2), location VARCHAR(20) -- 楼栋编号 ); -- 交易记录 CREATE TABLE transactions ( id INT PRIMARY KEY AUTO_INCREMENT, item_id INT, buyer_id INT, status ENUM('待支付','已完成','已取消') ); 
- 部署方案
 
- 服务器:腾讯云轻量应用服务器(2核4G)
 - 存储:OSS对象存储(图片/文件)
 - 监控:简单云监控(CPU/内存报警)
 
三、安全与性能优化
- 简化安全措施:
 
- 微信一键登录(免密认证)
 - 交易资金走微信支付分担保
 - 敏感字段AES加密存储
 
- 性能保障:
 
- 限制图片大小<500KB
 - 采用CDN静态资源加速
 - 定时任务清理过期数据
 
四、实施路线图
gantt
    title 项目开发路线图
    dateFormat  YYYY-MM-DD
    section 基础版本
    用户系统       :2023-10-01, 15d
    商品发布系统   :2023-10-16, 20d
    即时通讯模块   :2023-11-05, 15d
    
    section 进阶版本
    学分兑换系统   :2023-11-20, 10d
    扫码查书功能   :2023-12-01, 7d
    楼栋拼单功能   :2023-12-08, 10d
五、成本控制方案
- 人力成本:
 
- 开发团队:2人(全栈开发+UI设计)
 - 周期:3个月(基础版1.5个月)
 
- 云资源成本:
 
- 服务器:约500元/年
 - 域名+SSL证书:200元/年
 - 短信验证:0.05元/条(按需使用)
 
六、运营建议
- 冷启动策略:
 
- 建立"教材漂流"活动(捐赠教材送积分)
 - 举办寝室带货大赛(拼单量竞赛)
 
- 用户激励:
 
- 完成首单送食堂代金券(与学校食堂合作)
 - 邀请3位同学得打印店优惠
 
- 风险控制:
 
- 设置交易黑名单机制(3次差评自动封号)
 - 敏感词过滤系统(基于百度内容审核API)
 
系统设计
一、系统架构设计
# 架构分层
前端(Web/H5) 
  ↔ RESTful API 
  ↔ 后端服务(Django) 
  ↔ 数据库(MySQL) 
  ↔ 第三方服务(微信登录/支付)
二、模块划分
1. 用户模块
# 伪代码示例
class UserService:
  def login_by_wechat(code):  # 微信快捷登录
    → 调用微信API获取openid
    → 创建本地用户记录
    → 返回JWT token
  def get_user_profile(uid):  # 获取用户资料
    → 返回{name, avatar, credit_score, dorm_building}
2. 商品模块
class ItemService:
  def create_item(uid, type, title, price, isbn=None):  # 发布商品
    → 校验用户宿舍楼栋
    → 如果是教材类,验证ISBN有效性
    → 存入数据库
  def search_items(keyword, dorm, item_type):  # 商品搜索
    → 按楼栋/类型过滤
    → 返回分页列表
3. 交易模块
class TransactionService:
  def create_order(uid, item_id):  # 创建订单
    → 检查商品状态
    → 调用微信支付生成预支付单
    → 冻结商品
  def complete_order(order_id):  # 确认收货
    → 解冻资金
    → 增加双方信用积分
4. 积分模块
class CreditService:
  def exchange_credits(uid, action):  # 积分兑换
    if action == "交易完成":
      user.credits += 10
    elif action == "兑换食堂券":
      if user.credits >= 100:
        → 生成电子优惠券
5. 即时通讯模块
class ChatService:
  def send_dorm_message(uid, content):  # 楼栋群聊
    → 根据用户宿舍号路由消息
    → 存储最近50条消息
三、接口设计示例
1. 用户登录
// 请求
POST /api/login 
{ code: "微信临时code" }
// 响应
{
  token: "jwt_token",
  profile: {uid: 123, name: "张三", dorm: "3号楼"}
}
2. 商品发布
// 请求
POST /api/items
Headers: {Authorization: Bearer <token>}
{
  type: "教材",
  title: "高等数学 第七版",
  isbn: "9787040375343",
  price: 15.00
}
// 响应
{ item_id: 789, status: "已发布" }
3. 楼栋拼单
// 请求
GET /api/chat/dorm?last_id=0
→ 返回最新楼栋消息列表
四、数据库设计
-- 用户表
CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  wx_openid VARCHAR(64) UNIQUE,  -- 微信唯一标识
  dorm VARCHAR(20),              -- 宿舍楼栋
  credits INT DEFAULT 0          -- 积分
);
-- 商品表
CREATE TABLE items (
  id INT PRIMARY KEY AUTO_INCREMENT,
  user_id INT,
  type ENUM('教材','服务','日用品'),
  title VARCHAR(60),
  isbn VARCHAR(13),             -- 教材ISBN
  dorm VARCHAR(20),             -- 所属楼栋
  status ENUM('在售','已下架')
);
-- 交易记录
CREATE TABLE transactions (
  id INT PRIMARY KEY,
  item_id INT,
  buyer_id INT,
  wechat_order_no VARCHAR(32),  -- 微信支付单号
  status ENUM('待支付','已完成')
);
-- 消息表(楼栋群聊)
CREATE TABLE dorm_chat (
  id INT PRIMARY KEY,
  dorm VARCHAR(20),
  content TEXT,
  created_at DATETIME
);
五、安全设计
- 
认证机制:
- 使用JWT Token,有效期为24小时
 - 接口访问必须携带Authorization头
 
 - 
敏感数据处理:
# 伪代码:AES加密 def encrypt_wechat_info(data): → 使用AES-256-GCM模式加密 → 返回密文+IV+Tag - 
交易安全:
- 资金流转全程依赖微信支付担保交易
 - 订单状态变更需验证签名
 
 
六、性能优化设计
- 
缓存策略:
# 伪代码:楼栋商品缓存 def get_dorm_items(dorm): cache_key = f"items:{dorm}" if not redis.exists(cache_key): → 查询数据库并缓存10分钟 return redis.get(cache_key) - 
异步处理:
# 伪代码:消息发送 @background_task def async_send_message(msg): → 入库操作 → 清理过期消息 
七、部署架构
                   +-----------------+
                   |  腾讯云CDN      |
                   | (静态资源加速)   |
                   +--------+--------+
                            ↓
+-----------------+     +--------+-----------------+
| 前端部署         |     | Nginx 反向代理           |
| (Vue.js打包)     | ← → | → Django API (Gunicorn)  |
+-----------------+     +--------+-----------------+
                            ↓
                   +--------+--------+
                   |  MySQL 数据库   |
                   +-----------------+
Alpha任务分配计划
人员分工矩阵
| 角色 | 人员代号 | 主要职责 | 
|---|---|---|
| PM | PM1(张荣辉) | 需求管理、进度跟踪、资源协调 | 
| 前端 | FE1(周戈)/FE2(陈曦) | 实现前端界面与接口联调 | 
| 后端 | BE1(李永胜)/BE2(杨超民)/BE3(饶博勋) | 接口开发、数据库设计、系统集成 | 
| 测试 | QA1(陈培然) | 用例编写、测试执行、缺陷管理 | 
里程碑计划
gantt
    title Alpha阶段里程碑
    dateFormat  YYYY-MM-DD
    section 核心功能
    用户系统       :active, 2023-11-01, 5d
    商品交易流      :crit, 2023-11-06, 10d
    即时通讯模块    :2023-11-13, 7d
    积分兑换       :2023-11-20, 5d
    
    section 质量保障
    接口联调       :crit, 2023-11-15, 5d
    系统测试       :2023-11-25, 5d
详细任务分配(按周拆分)
第1周(11.1-11.5)基础框架搭建
| 任务 | 负责人 | 交付物 | 关键依赖 | 
|---|---|---|---|
| 需求确认与接口定义 | PM1+全体 | 接口文档v1.0 | 需11/2前冻结核心接口 | 
| 微信登录集成 | BE1 | 可返回openid的测试接口 | 需要申请微信开发者账号 | 
| 用户中心前端原型 | FE1 | 静态页面(登录/个人中心) | 等待接口文档 | 
| 数据库建表 | BE2 | 初始化SQL脚本 | PM确认字段定义 | 
| 测试环境搭建 | QA1 | 测试用例模板 | 需要服务器资源 | 
第2周(11.6-11.12)核心功能开发
| 任务 | 负责人 | 交付物 | 关键依赖 | 
|---|---|---|---|
| 商品发布功能 | BE2+FE1 | 支持教材ISBN扫码的完整流程 | 需调用ISBN查询API | 
| 商品搜索列表页 | FE2 | 带楼栋筛选的H5页面 | 需要BE3提供搜索接口 | 
| 交易担保流程 | BE3 | 微信支付回调处理逻辑 | 需联调沙箱环境 | 
| 积分计算模块 | BE1 | 交易完成自动加分逻辑 | 依赖交易状态变更事件 | 
第3周(11.13-11.19)交互优化
| 任务 | 负责人 | 交付物 | 关键依赖 | 
|---|---|---|---|
| 楼栋聊天室 | FE2+BE2 | 基于WebSocket的简易通讯 | 需解决消息存储问题 | 
| 信用分展示 | FE1 | 个人中心积分可视化 | 等待BE1提供数据接口 | 
| 异常交易处理 | BE3 | 订单超时自动取消逻辑 | 需要Celery定时任务 | 
| 压力测试方案 | QA1 | 核心接口压测报告 | 需要部署预发布环境 | 
第4周(11.20-11.30)联调测试
| 任务 | 负责人 | 交付物 | 关键依赖 | 
|---|---|---|---|
| 端到端测试 | QA1+FE | 完整交易流程验证 | 需要所有接口就绪 | 
| 安全审计 | BE1 | 敏感数据加密验证报告 | 需PM协调第三方扫描 | 
| 部署上线 | BE2 | 生产环境部署包 | 需要运维手册 | 
| 用户培训材料 | PM1 | 校园推广PPT | 需要核心功能截图 | 
每日执行节奏
09:00-09:15 每日站会(全员)→ 同步进度/阻塞问题
10:00-12:00 编码时间(开发)
14:00-15:00 接口联调(FE+BE结对)
16:00-17:00 测试用例评审(QA主导)
19:00前   提交当日代码(强制要求)
风险应对方案
- 
接口延迟风险:
- 采取"接口先行"策略,BE提前1天提供Mock数据
 - FE使用EasyMock工具模拟接口
 
 - 
微信审核延误:
- 准备备用方案:手机号+验证码登录(隐藏功能)
 
 - 
性能瓶颈:
- 对商品搜索接口做SQL优化(BE2负责)
 - 启用数据库查询缓存(BE1实施)
 
测试计划
一、测试范围与优先级
# 测试重点矩阵(★越多优先级越高) ★★★★★ 用户注册/登录流程 ★★★★★ 商品发布与搜索 ★★★★☆ 微信支付全流程 ★★★★☆ 信用积分系统 ★★★☆☆ 楼栋聊天室 ★★★☆☆ 异常交易处理
二、测试策略
1. 分层测试策略
测试类型 执行者 工具/方法 覆盖率目标 单元测试 开发 pytest + unittest 核心模块70% 接口测试 测试+开发 Postman + 自动化脚本 100%接口 UI功能测试 测试 Cypress(关键路径) 主流程100% 性能测试 测试+BE JMeter(50并发) 交易接口90% 安全测试 测试 OWASP ZAP基础扫描 高危漏洞0 2. 测试阶段划分
gantt title 测试阶段规划 dateFormat YYYY-MM-DD section 单元测试 开发自测 :2023-11-01, 7d section 集成测试 接口联调 :2023-11-08, 5d section 系统测试 全链路测试 :2023-11-15, 10d section 验收测试 UAT测试 :2023-11-25, 3d
三、测试环境
环境类型 配置 用途 开发环境 本地Docker容器 单元测试 测试环境 腾讯云2核4G + MySQL 集成/系统测试 预生产 镜像生产环境配置 性能/安全测试 
四、测试用例设计
1. 核心功能用例示例
### 用例ID: TRANSACTION_001 **名称**: 完整教材交易流程 **步骤**: 1. 用户A发布教材(ISBN校验) 2. 用户B搜索并购买 3. 微信支付成功 4. 用户A确认收款 5. 积分系统更新 **预期结果**: - 双方积分各+10 - 商品状态变更为"已售出"2. 异常场景用例
### 用例ID: ERROR_003 **名称**: 支付超时处理 **步骤**: 1. 创建订单后不支付 2. 等待15分钟 **预期结果**: - 订单自动取消 - 商品恢复可售状态
五、测试资源
1. 测试数据准备
# 伪代码:商品测试数据生成 def generate_test_items(): for i in range(100): create_item( type="教材", isbn=f"9787040375{str(i).zfill(3)}", dorm=random.choice(["3号楼","5号楼"]) )2. 测试工具栈
工具类型 具体工具 用途 接口测试 Postman + Newman 接口自动化 性能测试 JMeter 交易接口压测 缺陷管理 禅道 缺陷跟踪 监控 Prometheus+Grafana 生产环境监控(可选) 
六、缺陷管理流程
# 缺陷生命周期 发现 → 录入禅道 → 开发确认 → 修复 → 回归测试 → 关闭 # 严重程度分级 S1-阻塞性缺陷(无法进行核心流程) S2-主要功能缺陷 S3-次要功能缺陷 S4-优化建议
七、测试执行计划
每周重点
周次 测试重点 人力分配 1 接口文档评审+单元测试督查 QA1 50% / 开发30% 2 接口自动化脚本开发 QA1 70% / FE1 30% 3 全链路场景测试+性能测试 QA1 100% + BE3协助 4 验收测试+线上监控 QA1 60% + PM支持 每日测试任务
09:30 检查昨日提交代码的单元测试报告 11:00 执行接口自动化测试套件 14:00 进行探索性测试(重点新功能) 16:00 缺陷分类与优先级调整 17:30 更新测试进度看板
八、风险与应对
风险项 应对方案 支付接口联调延迟 提前准备沙箱环境测试账号 性能测试未达标 简化测试场景,聚焦核心接口 测试数据不足 开发数据工厂工具快速生成测试数据 兼容性问题 重点覆盖iOS/Android主流机型 
九、交付物标准
- 测试报告模板:
 
## 测试总结报告 - 测试范围:覆盖4大核心模块 - 缺陷统计:发现S1缺陷0个,S2缺陷3个 - 性能指标:交易接口平均响应时间<1.2s - 上线建议:通过/不通过- 质量红线:
 
- 所有S1缺陷必须关闭
 - 核心接口成功率≥99.9%
 - 支付流程通过率100%
 
 
团队成员
| 姓名 | 学号 | 
|---|---|
| 周戈(队长) | 3123004164 | 
| 张荣辉 | 3123004162 | 
| 杨超民 | 3123004161 | 
| 饶博勋 | 3123004152 | 
| 李永胜 | 3123004148 | 
| 陈曦 | 3123004137 | 
| 陈培然 | 3123004134 | 
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/ | 
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13329 | 
| 这个作业的目标 | 需求改进&系统设计&Alpha任务分配计划&测试计划 | 
                    
                
                
            
        
浙公网安备 33010602011771号