Skip to content

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

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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions