kindergarten_java/docs/test-logs/package/2026-03-13-full-flow.md
En 6e11c874d2 chore: 忽略 target 目录和 .class 文件
- 添加 target/ 到 .gitignore
- 从 git 暂存区移除已追踪的 target 目录

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 16:50:54 +08:00

5.3 KiB
Raw Blame History

课程包三端全链路测试记录

测试日期: 2026-03-13 测试类型: API 全链路功能测试 测试结果: 全部通过


测试概述

本次测试针对课程包业务从超管端创建到学校端查看、教师端查看课程的完整 API 链路进行功能验证。


测试结果汇总

阶段 测试项 状态
超管端 登录功能 通过
超管端 创建课程 通过
超管端 发布课程 通过
超管端 创建套餐 通过
超管端 添加课程到套餐 通过
超管端 提交审核 通过
超管端 审核通过 通过
超管端 发布套餐 通过
超管端 授权给租户 通过
学校端 登录功能 通过
学校端 查看授权套餐 通过
教师端 登录功能 通过
教师端 查看可用课程 通过

测试流程

第一阶段:超管端

  1. 登录 (POST /api/auth/login)

    • 请求: {"role": "admin", "username": "admin", "password": "123456"}
    • 响应: 200 OK, token 返回成功
  2. 创建课程 (POST /api/admin/courses)

    • 课程 ID: 14
    • 课程名称: 测试课程_1773380715
    • 状态: draft → published
  3. 发布课程 (POST /api/admin/courses/{id}/publish)

    • 响应: 200 OK
    • 课程状态变为 published
  4. 创建套餐 (POST /api/v1/admin/packages)

    • 套餐 ID: 9
    • 套餐名称: 全链路测试套餐_1773380715
    • 状态: DRAFT
  5. 添加课程到套餐 (PUT /api/v1/admin/packages/{id}/courses)

    • 课程 ID: 14
    • 响应: 200 OK
  6. 提交审核 (POST /api/v1/admin/packages/{id}/submit)

    • 响应: 200 OK
    • 套餐状态: DRAFT → SUBMITTED
  7. 审核通过 (POST /api/v1/admin/packages/{id}/review)

    • 请求: {"approved": true, "comment": "自动化测试审核通过"}
    • 响应: 200 OK
    • 套餐状态: SUBMITTED → APPROVED
  8. 发布套餐 (POST /api/v1/admin/packages/{id}/publish)

    • 响应: 200 OK
    • 套餐状态: APPROVED → PUBLISHED
  9. 授权给租户 (POST /api/v1/admin/packages/{id}/grant)

    • 租户 ID: 1
    • 授权期限: 2027-03-13
    • 响应: 200 OK

第二阶段:学校端

  1. 登录 (POST /api/auth/login)

    • 请求: {"role": "school", "username": "school1", "password": "123456"}
    • 响应: 200 OK
  2. 查看授权套餐 (GET /api/school/packages)

    • 响应: 200 OK
    • 返回租户套餐列表(包含套餐 ID 9

第三阶段:教师端

  1. 登录 (POST /api/auth/login)

    • 请求: {"role": "teacher", "username": "teacher1", "password": "123456"}
    • 响应: 200 OK
  2. 查看可用课程 (GET /api/teacher/courses)

    • 响应: 200 OK
    • 返回课程列表(包含课程 ID 14

Bug 修复记录

Bug 1: 登录 API 路径错误

  • 问题: 测试脚本使用 /api/v1/auth/login,实际路径是 /api/auth/login
  • 修复: 更新测试脚本

Bug 2: 角色名称大小写错误

  • 问题: 测试脚本使用 "role": "ADMIN",枚举要求小写 "admin"
  • 修复: 更新测试脚本使用小写角色名

Bug 3: 测试账号密码错误

  • 问题: 测试脚本使用 123456,数据库初始化为 123456
  • 修复: 更新测试脚本使用正确密码

Bug 4: 套餐提交审核必须包含课程

  • 问题: 提交审核时报错 "套餐必须包含至少一个课程包"
  • 修复: 先创建课程,再添加到套餐,然后提交审核

Bug 5: 学校端 API 路径错误

  • 问题: 测试脚本使用 /api/v1/school/packages,实际路径是 /api/school/packages
  • 修复: 更新测试脚本

Bug 6: 教师端无法看到系统课程

  • 问题: getCoursePagegetCoursesByTenantId 只查询租户自己的课程,不包含系统课程
  • 修复: 修改查询条件,同时包含租户课程和系统课程:
    wrapper.and(w -> w
        .eq(Course::getTenantId, tenantId)
        .or()
        .eq(Course::getIsSystem, 1)
    );
    

Bug 7: 创建系统课程未设置 isSystem 标志

  • 问题: AdminCourseController.createCourse 设置了 isSystem=1 但没有保存到数据库
  • 修复: 添加 courseMapper.updateById(course) 保存到数据库

Bug 8: 课程需要发布才能被教师端看到

  • 问题: 教师端查询条件 status = 'published',新创建的课程状态是 draft
  • 修复: 创建课程后调用发布接口

新增功能

新增授权接口 (超管端)

  • 路径: POST /api/v1/admin/packages/{id}/grant
  • 功能: 授权套餐给指定租户
  • 请求参数:
    • tenantId: 租户 ID
    • endDate: 授权结束日期
    • pricePaid: 支付金额
  • 响应: 200 OK

测试脚本

  • test_package_full_api.py: 完整套餐 API 测试(包含课程创建)
  • test_three_ends.py: 三端全链路测试

下一步计划

  1. 前端浏览器测试: 使用 Playwright 进行前端页面的自动化测试
  2. 备课功能测试: 测试教师端备课、授课功能
  3. 展播模式测试: 测试课程展播模式
  4. 数据完整性测试: 测试套餐中所有字段、所有资源的填写和上传

测试结论: 课程包三端 API 全链路测试通过,所有核心功能正常运行。