# /admin/api/feedbacks — 反馈审核族(采纳/拒绝/标记处理/统计) > 所属:Admin·反馈 组(前缀 `/admin/api/feedbacks`) | 鉴权:Bearer admin_token(角色:`operator`,`super_admin` 恒通过,`require_role("operator")`;summary 任意 admin) | [← 返回 API 索引](../../README.md) > > 列表见 [admin-feedbacks-list](./admin-feedbacks-list.md)。#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: "反馈不存在"`) - `422` `feedback_id` 非合法 int ## 说明 - 写操作记审计 [admin_audit_log](../../../database/admin_audit_log.md):`action="feedback.handle"`、`target_type="feedback"`、`target_id=`、`detail={"before": <原 status>, "after": "handled"}`、`ip=<客户端 IP>`。 - 状态变更与审计写入在同一事务(`commit=False` 后统一 `db.commit()`)。 - 关联表 [feedback](../../../database/feedback.md)。