Files
shaguabijia-app-server/docs/api/feedback.md
T
ouzhou 27f76918b2 feat(admin): 运营后台跟进——review 加固 + 反馈改版 + 列表页码分页 (#51)
本 PR 汇合三块运营后台改动(原 #50 仅含其中「加固」一块,已并入本 PR 并关闭)。

## 1. review 加固 (436b2a3)
- 超管防自锁:降级/禁用最后一个 active super_admin 前校验,杜绝零超管死局
- 时间筛选统一 tz-aware(列为 timestamptz),比较绝对时刻、不依赖 DB 会话时区
- 上报审核 / 调余额(set·扣减)加行锁,防并发/连点重复发钱
- ad_audit 复算排序补 id 次级键;health-check 限 finance;调账/拒绝 reason 去空白校验

## 2. 反馈改版 (5a18dbb)
- contact 可选、截图≤6;admin 反馈列表筛选/排序;admin·wallet 接口调整 + docs

## 3. 列表页码分页 (1a7a624)
- CursorPage 加 total;新增 offset_paginate(count 与分页同源)
- 上报/审计日志从 id 游标改 offset 分页(支持跳页)
- 用户 / 提现 / 上报 / 审计日志 四页接入页码分页

测试:admin 套件 47 passed。前端配套改动见 shaguabijia-admin-web。

---------

Co-authored-by: OuYingJun1024 <1034284404@qq.com>
Reviewed-on: #51
Co-authored-by: ouzhou <ouzhou@wonderable.ai>
Co-committed-by: ouzhou <ouzhou@wonderable.ai>
2026-06-14 22:54:07 +08:00

1.7 KiB
Raw Blame History

POST /api/v1/feedback — 提交反馈

所属:Feedback 组(前缀 /api/v1/feedback | 鉴权:Bearer access_token | ← 返回 API 索引

入参

multipart/form-data:

字段 类型 必填 说明
content string 反馈正文,1-2000 字(strip 后)
contact string 联系方式(微信/QQ/手机号),≤128 字。原型改版后客户端已不再采集、不传该字段(后端默认空串);保留字段兼容旧端
images file[] 截图,最多 6 张,每张走头像同款校验(JPEG/PNG/WebP,≤ 5 MB,魔数嗅探)

出参

响应 200:

{
  "id": 123,
  "status": "new",
  "created_at": "2026-05-29T12:34:56Z"
}
字段 类型 说明
id int 反馈单 ID
status string new(待处理)/ handled(已处理)
created_at datetime 提交时间(UTC)

不返回上传的 image URL——这是给运营后台看的,客户端通常不需要。

错误码

  • 400 内容为空 / 内容超 2000 字 / 联系方式超 128 字 / 图片超 6 张 / 单图非法(空/过大/格式不对)
  • 401 未带 token / token 无效或过期 / 用户被禁用
  • 422content 字段

说明

  • 反馈绑用户:feedback.user_id = current_user.id,便于回访
  • 截图落盘:存到 settings.MEDIA_ROOT/feedback/,URL 写进 feedback.images(JSON 列,SQLite 是 TEXT、PG 是 JSON/JSONB——为不影响现有迁移用 JSON 而非 JSONB)
  • 截图可读:GET /media/feedback/<file> 静态服务暴露,详见 API 索引 — /media 静态服务
  • 文件名随机 u<user_id>_<rand>.<ext>,杜绝路径穿越