Files
junhong_cmp_fiber/tests/hurl/.project-profile.md
huang 2ef8b8a705
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
fix: 修复分页字段/角色DTO/套餐详情/批量分配Bug,新增C端测试登录接口和Hurl价格验证测试
- 修复B-2:27个分页DTO字段名统一(list→items, page_size→size,删除total_pages)
- 修复B-1:角色接口统一返回DTO(id小写,消除GORM大写字段名)
- 修复C-1:套餐详情接口(GET /packages/:id)补充代理佣金字段
- 修复C-2:批量分配已存在记录由500改为静默跳过
- 修复C-3:创建系列授权响应在事务提交后构建,packages数组不再为空
- 新增C端开发测试登录接口(POST /api/c/v1/auth/dev-login,仅logging.development=true时生效)
- 新增Hurl测试:card-price-verification-flow.hurl(导入卡→分配→C端价格验证)
- 新增测试Excel数据文件和dev.env测试变量
2026-03-31 09:54:08 +08:00

1.9 KiB
Raw Blame History

项目画像Hurl 测试自动生成用)

技术栈

  • 语言: Go 1.25
  • 框架: Fiber v2.52.9
  • ORM: GORM v1.31.1
  • JSON: sonic

路由定义位置

  • 路由注册入口: internal/routes/routes.go → RegisterRoutesWithDoc()
  • 按模块拆分: internal/routes/{module}.go
  • 路由注册函数: Register(router, doc, basePath, method, path, handler, spec)
  • Admin 域挂载: /api/admin需认证
  • Auth 域挂载: /api/auth部分公开
  • C端域挂载: /api/c/v1JWT 认证)

Schema 定义位置

  • DTO 目录: internal/model/dto/
  • 命名规则: {module}_dto.go
  • 字段标签: json / validate / description
  • 通用 DTO: common.goIDReq 等)

统一响应格式

{"code": 0, "msg": "success", "data": any, "timestamp": "RFC3339"}
  • 成功: code=0, msg="success"
  • 客户端错误: code=1001~1999, HTTP 4xx
  • 服务端错误: code=2001~2999, HTTP 5xx

分页格式(两种)

模式 A部分模块shop, account, role

{"items": [], "total": int, "page": int, "size": int}

模式 B大部分模块package, package_series, shop_series_grant 等)

{"list": [], "total": int, "page": int, "page_size": int, "total_pages": int}

认证方式

  • 后台: POST /api/auth/login → $.data.access_token → Authorization: Bearer {token}
  • C端: JWT → Authorization: Bearer {token}(微信 OAuth 获取)

默认测试账号

  • 用户名: admin
  • 密码: Admin@123456
  • 手机号: 13800000000

服务端口

  • 默认: 3000

错误码与 HTTP 状态码映射

  • 1001 (CodeInvalidParam) → 400
  • 1002 (CodeMissingToken) → 401
  • 1003 (CodeInvalidToken) → 401
  • 1005 (CodeForbidden) → 403
  • 1006 (CodeNotFound) → 404
  • 冲突类 (1013/1014/1022/1024/1031/1034/1036/1101) → 409
  • 1008 (CodeTooManyRequests) → 429
  • 未明确映射的 1xxx → 400
  • 2xxx → 500