Skip to content

【Settings】兑换已使用的 redemption code 时未展示具体错误原因 #1138

@wanghuan-520

Description

@wanghuan-520

问题描述

在本地 Ornn http://localhost:8080/settings 的 Redeem Code 流程中,用户输入一个已经被兑换过的 redemption code 后,后端接口返回了明确的 409 conflict 错误和具体原因,但前端只展示了泛化错误文案,用户无法知道失败原因。

复现环境

  • 环境:本地 Ornn
  • URL:http://localhost:8080/settings
  • 用户:普通用户登录态
  • 相关接口:POST /api/v1/redemption-codes/redeem

复现步骤

  1. 启动本地 Ornn,并使用普通用户登录。
  2. 打开 http://localhost:8080/settings
  3. Redeem Code 输入框中输入一个已经被兑换过的 redemption code。
  4. 点击 REDEEM
  5. 打开 DevTools → Network,查看 POST /api/v1/redemption-codes/redeem 的响应。
  6. 观察页面上的错误提示文案。

实际结果

接口返回 409 Conflict,响应体里包含明确错误信息,例如:

{
  "title": "Resource conflict",
  "status": 409,
  "detail": "This code has already been redeemed",
  "instance": "/api/v1/redemption-codes/redeem",
  "code": "redemption_code_already_redeemed"
}

但页面只显示泛化错误:

Couldn't redeem this code. Please try again or contact admin.

用户无法判断兑换失败是因为 code 已被使用、无效、过期、权限问题,还是系统异常。

预期结果

前端应根据后端返回的 codedetail 展示具体、可操作的错误原因。

例如当后端返回:

"code": "redemption_code_already_redeemed",
"detail": "This code has already been redeemed"

页面应展示类似:

This redemption code has already been used.

如果当前语言为中文,可展示:

该兑换码已被使用。

建议优先用 code 做 i18n 映射;如果没有匹配的 code,至少 fallback 到后端 detail,避免固定展示泛化错误。

影响

  • 用户可见的错误处理问题。
  • 后端已经返回了明确错误原因,但前端未透出。
  • 用户无法自助判断下一步操作,容易误以为系统异常或需要联系管理员。

备注

这个问题来自本地 Settings → Redeem Code 真实 UI workflow 复现,不是 agentic-testing harness 的 local Ornn API only 配置拦截问题。

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions