# POST /api/v1/feedback — 提交反馈 > 所属:Feedback 组(前缀 `/api/v1/feedback`) | 鉴权:Bearer access_token | [← 返回 API 索引](./README.md) ## 入参 **multipart/form-data**: | 字段 | 类型 | 必填 | 说明 | |---|---|---|---| | `content` | string | ✓ | 反馈正文,**1-200 字**(strip 后) | | `contact` | string | ✗ | 联系方式(微信/QQ/手机号),**≤128 字**。原型改版后客户端已不再采集、不传该字段(后端默认空串);保留字段兼容旧端 | | `images` | file[] | ✗ | 截图,**最多 6 张**,每张走头像同款校验(JPEG/PNG/WebP,≤ 5 MB,魔数嗅探) | ## 出参 响应 `200`: ```json { "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` 内容为空 / 内容超 200 字 / 联系方式超 128 字 / 图片超 6 张 / 单图非法(空/过大/格式不对) - `401` 未带 token / token 无效或过期 / 用户被禁用 - `422` 缺 `content` 字段 ## 说明 - **反馈绑用户**:`feedback.user_id = current_user.id`,便于回访 - **截图落盘**:存到 `settings.MEDIA_ROOT/feedback/`,URL 写进 `feedback.images`(JSON 列,SQLite 是 TEXT、PG 是 JSON/JSONB——为不影响现有迁移用 JSON 而非 JSONB) - **截图可读**:`GET /media/feedback/` 静态服务暴露,详见 [API 索引 — /media 静态服务](./README.md#media-静态服务) - 文件名随机 `u_.`,杜绝路径穿越