用户侧反馈提交复用 base-account 登录态(跨子域 cookie 自动携带),按 serviceKey 标识来源项目;管理员处理在 Admin Console 反馈看板。
提交反馈(Bug/建议/咨询),可选附带已上传的截图 url。
Auth: access_token
展开查看请求/响应示例
Request
{ "serviceKey": "little-bee", "type": "BUG", "description": "登录按钮无反应", "attachments": ["https://.../a.png"] }Response
{ "feedback": { "id": "fb-1", "status": "PENDING" } }Errors
- invalid_input(400): 描述为空 / 类型非枚举 / 附件 url 非 https
- too_many_attachments(400): 附件数 > 4
- invalid_service_key(400): serviceKey 未注册
- unauthorized(401): 未登录
- rate_limited(429): 单用户 60s 内提交 > 3 条
查看我的反馈列表(含对外消息 messages,仅 PUBLIC;不含内部备注)。
Auth: access_token
展开查看请求/响应示例
Response
{ "feedbacks": [{ "id": "fb-1", "status": "PENDING", "messages": [{ "authorRole": "ADMIN", "content": "已收到" }] }] }Errors
POST/api/feedback/attachments上传单张截图(multipart file),返回 blob url。校验 image/* + ≤2MB。
Auth: access_token
展开查看请求/响应示例
Request
multipart/form-data: file=<image/png>
Response
{ "url": "https://.../a.png", "size": 102400 }Errors
- invalid_file_type(400): 非 image/*
- file_too_large(413): > 2MB
- unauthorized(401)
POST/api/feedback/:id/messages用户在反馈下追加消息(双向对话,通知管理员邮箱)。
Auth: access_token
展开查看请求/响应示例
Request
{ "content": "补充:重启后恢复" }Response
{ "message": { "id": "cm-1", "content": "补充:重启后恢复", "createdAt": "..." } }Errors
- invalid_input(400): 内容为空
- forbidden(403): 反馈不属于该用户(横向越权)
- feedback_not_found(404)
管理员看板列表:按 serviceKey/type/status 筛选 + 描述搜索 + 游标分页。
Auth: admin
展开查看请求/响应示例
Request
?serviceKey=little-bee&status=PENDING&q=登录&limit=50
Response
{ "feedbacks": [{ "id": "fb-1", "userEmail": "a@x.com", "status": "PENDING" }], "total": 1 }Errors
GET/api/admin/feedback/:id管理员详情:反馈全文 + 附件 + 全部 comments(含 INTERNAL 备注 + PUBLIC 消息 + authorRole/visibility)。
Auth: admin
展开查看请求/响应示例
Response
{ "feedback": {...}, "attachments": [...], "comments": [{ "authorRole": "ADMIN", "visibility": "PUBLIC", "content": "..." }] }Errors
- feedback_not_found(404)
- forbidden(403): 非管理员
PATCH/api/admin/feedback/:id/status状态流转(PENDING/IN_PROGRESS/RESOLVED/IGNORED)。状态变更不再自动发邮件。
Auth: admin
展开查看请求/响应示例
Request
{ "status": "RESOLVED" }Response
{ "feedback": { "id": "fb-1", "status": "RESOLVED" } }Errors
- invalid_status(400): 非法状态值
- feedback_not_found(404)
- forbidden(403)
POST/api/admin/feedback/:id/comments添加内部备注(visibility=INTERNAL,仅管理员可见,用户看不到)。
Auth: admin
展开查看请求/响应示例
Request
{ "content": "已复现,排期本周修" }Response
{ "comment": { "id": "cm-1", "content": "已复现,排期本周修", "createdAt": "..." } }Errors
- invalid_input(400): 内容为空
- feedback_not_found(404)
- forbidden(403)
POST/api/admin/feedback/:id/reply回复用户(visibility=PUBLIC,用户可见 + 触发回访邮件,正文含回复内容)。
Auth: admin
展开查看请求/响应示例
Request
{ "content": "已修复,请升级到最新版" }Response
{ "message": { "id": "cm-2", "content": "已修复,请升级到最新版", "createdAt": "..." } }Errors
- invalid_input(400): 内容为空
- feedback_not_found(404)
- forbidden(403)