feat: 请求层泛型化并收紧默认超时

This commit is contained in:
2026-08-27 21:48:28 +08:00
parent 468bba8670
commit f1fcae0dac
8 changed files with 130 additions and 68 deletions
+15 -7
View File
@@ -1,4 +1,5 @@
import request from "@/utils/request";
import type { ApiResponse } from "@/utils/request";
// ============ 标准思维导图 ============
@@ -31,14 +32,17 @@ export interface RecallRecord {
createdTime: string;
}
/** 获取/自动生成标准思维导图 */
// AI 聚合类接口耗时较长,统一放宽到 5 分钟(默认全局 30s)
const AI_TIMEOUT = { timeout: 300_000 };
/** 获取/自动生成标准思维导图(首次访问会触发 AI 生成) */
export const getStandardMindMap = (taskNum: string) => {
return request.get(`/review/standard-mind-map/${taskNum}`);
return request.get<StandardMindMap>(`/review/standard-mind-map/${taskNum}`, {}, AI_TIMEOUT);
};
/** 强制重新生成标准思维导图(全量或增量) */
export const regenerateStandardMindMap = (taskNum: string, mode: "full" | "incremental" = "full") => {
return request.post(`/review/standard-mind-map/${taskNum}/regenerate?mode=${mode}`);
return request.post<StandardMindMap>(`/review/standard-mind-map/${taskNum}/regenerate?mode=${mode}`, null, AI_TIMEOUT);
};
/** 用户编辑标准思维导图(大纲文本) */
@@ -47,18 +51,22 @@ export const updateStandardMindMap = (taskNum: string, outline: string) => {
};
/** 用户提交回忆大纲,与标准导图对比(可选指定起始节点路径) */
export const recallCompare = (taskNum: string, recallOutline: string, focusPath?: string) => {
export const recallCompare = (
taskNum: string,
recallOutline: string,
focusPath?: string,
): Promise<ApiResponse<StandardMindMap>> => {
const body: Record<string, any> = { recallOutline };
if (focusPath) body.focusPath = focusPath;
return request.post(`/review/standard-mind-map/${taskNum}/recall`, body);
return request.post(`/review/standard-mind-map/${taskNum}/recall`, body, AI_TIMEOUT);
};
/** 在标准导图中查找与内容最匹配的节点 */
export const findNode = (taskNum: string, content: string) => {
return request.post(`/review/standard-mind-map/${taskNum}/find-node`, { content });
return request.post<{ path: string }>(`/review/standard-mind-map/${taskNum}/find-node`, { content });
};
/** 获取该任务的所有回忆对比记录 */
export const listRecallRecords = (taskNum: string) => {
return request.get(`/review/standard-mind-map/${taskNum}/recall-records`);
return request.get<RecallRecord[]>(`/review/standard-mind-map/${taskNum}/recall-records`);
};