Files
junhong_cmp_fiber/openspec/changes/archive/2026-05-11-add-agent-open-api/proposal.md
huang 95fc0b0a1b
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m16s
修复一些问题,主要是生效套餐
2026-05-12 10:32:38 +08:00

3.2 KiB
Raw Blame History

Why

现有代理商需要通过开放接口对接套餐购买、卡状态、流量、实名和预充值钱包数据,但当前能力主要面向后台管理端,依赖后台登录态,不适合直接给第三方系统调用。需要新增一套签名校验的代理开放接口,在不暴露虚流量语义的前提下复用现有代理套餐、钱包支付和卡套餐数据能力。

功能 IDfeature-20260511-agent-open-api

What Changes

  • 新增代理开放接口域,提供账号密码、请求参数、时间戳、随机串和 sign 的调用校验。
  • 新增单卡开放查询接口:卡流量查询、卡状态查询、卡实名状态查询。
  • 新增代理开放套餐列表接口,分页返回代理可购买套餐,复用后台代理套餐列表的权限过滤,并返回生效零售价。
  • 新增代理预充值钱包开放接口:余额查询、流水列表查询。
  • 新增代理钱包套餐购买开放接口:一次只允许一个套餐编码,支持多张卡分开购买,允许部分成功并返回失败卡原因。
  • 流量展示对外只返回真实业务口径字段:总流量、换算后的已用流量、剩余流量;不暴露虚流量、展示倍率、停机阈值等内部字段。
  • 新增开放接口 DTO、Handler、Service、Store/查询方法和路由注册,继续遵守 Handler → Service → Store → Model 分层。
  • 新增接口文档注册,确保 OpenAPI 文档生成器包含开放接口。
  • 不新增外部依赖,签名使用 Go 标准库 HMAC-SHA256继续使用 Fiber、GORM、Viper、Zap、Redis。

Capabilities

New Capabilities

  • agent-open-api: 定义代理开放接口的认证签名、卡查询、套餐列表、钱包余额/流水和钱包购买套餐能力。

Modified Capabilities

无。现有后台套餐、订单、钱包和资产查询能力仅作为实现复用点,不改变其既有接口契约。

Impact

  • 影响代码范围:
    • internal/handler/openapi/:新增代理开放接口 Handler。
    • internal/service/agent_open_api/:新增开放接口编排服务,复用套餐、订单、钱包、资产解析等现有服务。
    • internal/model/dto/:新增开放接口请求和响应 DTO。
    • internal/model/:复用现有账号、店铺、卡、套餐和钱包模型,不新增开放接口账号授权模型。
    • internal/store/postgres/:复用现有账号和店铺 Store必要时补充按套餐编码、卡标识、钱包流水的查询方法。
    • internal/routes/:新增 /api/open/v1 路由组。
    • pkg/constants/新增开放接口相关常量、Redis nonce 防重放 key 生成函数。
    • pkg/errors/:补充开放接口认证、签名、时间戳、重放相关错误码。
    • cmd/api/docs.gocmd/gendocs/main.go:注册新增 Handler保证文档生成覆盖。
  • 数据影响:
    • 不新增开放接口账号授权表;所有启用状态的代理账号默认可调用开放接口。
    • Redis 记录开放接口 nonce防止时间窗内重放。
  • 性能影响:
    • 列表接口分页,默认 20最大 100。
    • 签名校验只做轻量 HMAC、bcrypt 校验和 Redis nonce 写入。
    • 流量查询按单卡读取当前/待生效套餐,避免设备级聚合和大范围扫描。