修复提现审核详情点击用户后提示操作失败 #171

Merged
guke merged 1 commits from codex/fix-withdraw-detail-schema-compat into main 2026-07-24 14:04:08 +08:00
Member

问题现象

在“提现审核”页点击用户所在行后,提现单主详情可以打开,但用户统计和金币记录区域为空,页面连续提示“操作失败”。

原因说明

打开抽屉时前端会继续请求两个子接口:

  • /admin/api/users/{user_id}/reward-stats
  • /admin/api/users/{user_id}/coin-records

这两个接口原来都使用 select(AdRewardRecord) 加载完整 ORM 对象。SQLAlchemy 会把模型映射的所有列自动展开到 SQL 中,其中包括后来新增的 boost_round_id。当旧本地数据库或滚动发布中的数据库尚未补齐该列时,即使提现详情本身完全不使用这个字段,查询仍会报 no such column: ad_reward_record.boost_round_id,两个接口均返回 500。

前端的统一错误处理只会展示响应 JSON 中字符串类型的 detail;该 500 返回的是普通 Internal Server Error,因此最终回退成通用文案“操作失败”。本地前端开启了 React Strict Mode,初始化副作用在开发环境会执行两次,所以两个失败接口会形成截图中的四条“操作失败”提示。

修复方案

  • 用户奖励统计只查询实际需要的 ecpm_rawcoin 等字段。
  • 金币记录只查询页面展示、排序所需字段。
  • 同步缩小信息流广告和签到记录的字段投影,避免将来新增无关 ORM 列再次拖垮详情页。
  • 增加 SQL 级回归测试:主动拦截任何包含 ad_reward_record.boost_round_id 的详情查询,并验证两个接口仍返回 200。

该改动不会改变统计口径或返回结构。数据库迁移仍应正常执行;这里增加的是旧库及滚动发布期间的向后兼容保护。

验证结果

  • pytest tests/test_admin_read.py -q:17 passed
  • 新增回归测试覆盖 reward-statscoin-records
  • git diff --check:通过
  • 本地实际提现用户接口验证:两个接口均返回 200
## 问题现象 在“提现审核”页点击用户所在行后,提现单主详情可以打开,但用户统计和金币记录区域为空,页面连续提示“操作失败”。 ## 原因说明 打开抽屉时前端会继续请求两个子接口: - `/admin/api/users/{user_id}/reward-stats` - `/admin/api/users/{user_id}/coin-records` 这两个接口原来都使用 `select(AdRewardRecord)` 加载完整 ORM 对象。SQLAlchemy 会把模型映射的所有列自动展开到 SQL 中,其中包括后来新增的 `boost_round_id`。当旧本地数据库或滚动发布中的数据库尚未补齐该列时,即使提现详情本身完全不使用这个字段,查询仍会报 `no such column: ad_reward_record.boost_round_id`,两个接口均返回 500。 前端的统一错误处理只会展示响应 JSON 中字符串类型的 `detail`;该 500 返回的是普通 `Internal Server Error`,因此最终回退成通用文案“操作失败”。本地前端开启了 React Strict Mode,初始化副作用在开发环境会执行两次,所以两个失败接口会形成截图中的四条“操作失败”提示。 ## 修复方案 - 用户奖励统计只查询实际需要的 `ecpm_raw`、`coin` 等字段。 - 金币记录只查询页面展示、排序所需字段。 - 同步缩小信息流广告和签到记录的字段投影,避免将来新增无关 ORM 列再次拖垮详情页。 - 增加 SQL 级回归测试:主动拦截任何包含 `ad_reward_record.boost_round_id` 的详情查询,并验证两个接口仍返回 200。 该改动不会改变统计口径或返回结构。数据库迁移仍应正常执行;这里增加的是旧库及滚动发布期间的向后兼容保护。 ## 验证结果 - `pytest tests/test_admin_read.py -q`:17 passed - 新增回归测试覆盖 `reward-stats` 与 `coin-records` - `git diff --check`:通过 - 本地实际提现用户接口验证:两个接口均返回 200
linkeyu added 1 commit 2026-07-24 12:00:31 +08:00
guke merged commit 9e88ca72d3 into main 2026-07-24 14:04:08 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WonderableAI/shaguabijia-app-server#171