团队作业3

需求&原型改进

一、功能瘦身方案(聚焦核心功能)

  1. 学术资源循环站(核心)
  • 简化为教材/笔记交易模块
  • 采用"学科+课程编号"手动标签系统(替代复杂DNA匹配)
  • 增加扫码查书功能(扫描教材ISBN码自动识别)
  1. 校园时间银行(特色)
  • 保留基础技能交换功能
  • 采用"1学分=1小时"简化计量单位
  • 学长咨询改为预约制(去除拍卖机制)
  1. 宿舍经济特区(刚需)
  • 拼单功能简化为楼栋群聊
  • 床位出租改为假期闲置登记(手动审核)
  1. 移除NFT等复杂模块
  • 成长体系改为积分制(1交易=10积分)
  • 数字学生证改为普通实名认证
  1. 校际贸易改为校园文创专区
  • 聚焦本校纪念品交易

二、技术方案降级

  1. 前端技术
  • 框架:Uni-app(一套代码多端发布)
  • UI库:uView基础组件库
  • 地图定位:腾讯位置服务基础API
  1. 后端技术
  • 框架: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('待支付','已完成','已取消')
    );
    
  1. 部署方案
  • 服务器:腾讯云轻量应用服务器(2核4G)
  • 存储:OSS对象存储(图片/文件)
  • 监控:简单云监控(CPU/内存报警)

三、安全与性能优化

  1. 简化安全措施:
  • 微信一键登录(免密认证)
  • 交易资金走微信支付分担保
  • 敏感字段AES加密存储
  1. 性能保障:
  • 限制图片大小<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

五、成本控制方案

  1. 人力成本:
  • 开发团队:2人(全栈开发+UI设计)
  • 周期:3个月(基础版1.5个月)
  1. 云资源成本:
  • 服务器:约500元/年
  • 域名+SSL证书:200元/年
  • 短信验证:0.05元/条(按需使用)

六、运营建议

  1. 冷启动策略:
  • 建立"教材漂流"活动(捐赠教材送积分)
  • 举办寝室带货大赛(拼单量竞赛)
  1. 用户激励:
  • 完成首单送食堂代金券(与学校食堂合作)
  • 邀请3位同学得打印店优惠
  1. 风险控制:
  • 设置交易黑名单机制(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
);

五、安全设计

  1. 认证机制

    • 使用JWT Token,有效期为24小时
    • 接口访问必须携带Authorization头
  2. 敏感数据处理

    # 伪代码:AES加密
    def encrypt_wechat_info(data):
      → 使用AES-256-GCM模式加密
      → 返回密文+IV+Tag
    
  3. 交易安全

    • 资金流转全程依赖微信支付担保交易
    • 订单状态变更需验证签名

六、性能优化设计

  1. 缓存策略

    # 伪代码:楼栋商品缓存
    def get_dorm_items(dorm):
      cache_key = f"items:{dorm}"
      if not redis.exists(cache_key):
        → 查询数据库并缓存10分钟
      return redis.get(cache_key)
    
  2. 异步处理

    # 伪代码:消息发送
    @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前   提交当日代码(强制要求)

风险应对方案

  1. 接口延迟风险

    • 采取"接口先行"策略,BE提前1天提供Mock数据
    • FE使用EasyMock工具模拟接口
  2. 微信审核延误

    • 准备备用方案:手机号+验证码登录(隐藏功能)
  3. 性能瓶颈

    • 对商品搜索接口做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主流机型

    九、交付物标准

    1. 测试报告模板
    ## 测试总结报告
    - 测试范围:覆盖4大核心模块
    - 缺陷统计:发现S1缺陷0个,S2缺陷3个
    - 性能指标:交易接口平均响应时间<1.2s
    - 上线建议:通过/不通过
    
    1. 质量红线
    • 所有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任务分配计划&测试计划
posted @ 2025-04-17 19:59  莫思娅_Mosya  阅读(77)  评论(0)    收藏  举报