- 复制来源: /home/yueli/track @ 192c8ee (feature/ai-audit-update) - 组织隔离目标: LICA - 端口规划: 前端 8030 / 后端 8031 / 数据库 8032 - 已排除 deploy.sh、deploy_full.sh、docker-compose.prod.yml(IRIS 生产发布脚本) - 已排除工作区未提交改动,取干净的 192c8ee 状态
38 lines
1.6 KiB
JavaScript
38 lines
1.6 KiB
JavaScript
/**
|
||
* 帮助与反馈 API。
|
||
*
|
||
* ⚠️ 后端目前【没有】feedback 接口(已核对 openapi 路由表)。这里不直接写死
|
||
* 一个假函数,而是「先真后假」:先按最终契约 POST /feedback/,只有拿到
|
||
* 404(端点尚未实现)才回退到本地 mock 成功。这样等后端补上接口后,前端
|
||
* 一行都不用改就能自动接上真实链路;而 400/422/断网等真实错误仍会照常
|
||
* 抛出,不会被 mock 悄悄吞掉 —— 否则工人会以为反馈提交成功了,其实没有。
|
||
*/
|
||
import request from "../utils/request";
|
||
|
||
/** 反馈问题类型(与页面选择项一一对应) */
|
||
export const FEEDBACK_TYPES = [
|
||
{ value: "system", label: "系统问题" },
|
||
{ value: "device", label: "设备故障" },
|
||
{ value: "other", label: "其他" },
|
||
];
|
||
|
||
/**
|
||
* 提交一条反馈。
|
||
* @param {{type: string, content: string, images?: string[], user_id?: string}} payload
|
||
* @returns {Promise<{id?: string, mocked?: boolean}>}
|
||
*/
|
||
export async function submitFeedback(payload) {
|
||
try {
|
||
// silent:404 会走到下面的 mock 分支,不能先弹一句「请求失败 (404)」再弹「感谢反馈」
|
||
return await request({ url: "/feedback/", method: "POST", data: payload, silent: true });
|
||
} catch (e) {
|
||
// 只认「端点不存在」这一种情况回退 mock;其余错误(校验失败/网络断)
|
||
// 必须原样抛给页面去提示,不能让用户误以为提交成功
|
||
if (e && e.statusCode === 404) {
|
||
console.warn("[feedback] 后端暂无 /feedback/ 接口,回退本地 mock");
|
||
return { id: null, mocked: true };
|
||
}
|
||
throw e;
|
||
}
|
||
}
|