fa4127b9e5
Reviewed-on: #128
2.2 KiB
2.2 KiB
/admin/api/feedbacks — 反馈审核族(采纳/拒绝/标记处理/统计)
所属:Admin·反馈 组(前缀
/admin/api/feedbacks) | 鉴权:Bearer admin_token(角色:operator,super_admin恒通过,require_role("operator");summary 任意 admin) | ← 返回 API 索引列表见 admin-feedbacks-list。#94 引入 采纳(发金币)/拒绝 审核语义,#105 加运营回复
admin_reply;旧「标记已处理」保留。
POST /admin/api/feedbacks/{feedback_id}/approve — 采纳并发金币(#94)
- body:
{reward_coins?(int,可 0), admin_reply?(string,用户可见), review_note?(string,内部)} - 行为:
status → adopted;reward_coins > 0时走grant_coins同事务发币(流水coin_transaction);写审计(detail.after="adopted")。已终态(非 pending/new)→400。 - 出参:更新后的 FeedbackOut。
POST /admin/api/feedbacks/{feedback_id}/reject — 拒绝采纳(#94)
- body:
{reject_reason(string,用户可见), admin_reply?, review_note?} - 行为:
status → rejected;写审计(detail.after="rejected")。已终态 →400。
GET /admin/api/feedbacks/summary — 审核统计
- 出参:各状态计数(
pending/adopted/rejected/handled),审核台顶部卡片用;任意 admin 可读。
POST /admin/api/feedbacks/{feedback_id}/handle — 标记反馈已处理(旧口径)
入参
- 路径:
feedback_id(int) - body:无
出参
响应 200:OkResponse = { "ok": true }
幂等说明:将该反馈 status 置为 handled(不校验原状态,重复调用结果一致)。
错误码
401未带/无效/过期 admin token、管理员被禁用(头带WWW-Authenticate: Bearer)403角色不足(需operator或super_admin)404反馈不存在(detail: "反馈不存在")422feedback_id非合法 int
说明
- 写操作记审计 admin_audit_log:
action="feedback.handle"、target_type="feedback"、target_id=<feedback_id>、detail={"before": <原 status>, "after": "handled"}、ip=<客户端 IP>。 - 状态变更与审计写入在同一事务(
commit=False后统一db.commit())。 - 关联表 feedback。