/** * 帮助与反馈 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; } }