diff --git a/CLAUDE.md b/CLAUDE.md index ba9071a..9471e5d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -168,7 +168,7 @@ props: (config) => ({ 1. 用户选择模型 → `platform.loadConfig(modelName, modelType)` → 调用 `GET /suanli/v1/models/:id/config`(优先 60s 缓存)加载参数 schema 2. 参数 schema 驱动 `controls` 渲染 UI,用户填写参数 3. 用户点击发送 → `handleStart()` → `platform.buildTaskBody({ prompt, referenceImages })` 返回扁平 `modelParams` -4. `taskPolling.js` 直接读取 `data.body` → `getModelId(type, modelName)` 查找 UUID → POST `/suanli/v1/tasks`(`X-Session-Id` header) +4. `taskPolling.js` 直接读取 `data.body` → `getModelId(type, modelName)` 查找 UUID → POST `/suanli/v1/tasks`(请求体含 `sessionId`) 5. 20s 间隔轮询直至完成/失败 ### 模型标识与查找 @@ -298,8 +298,7 @@ Music 平台与 Painting/Video 的关键差异: ### 关键注意事项 -- **`sessionId`** 来自登录接口返回的 `userInfo.sessionId`,存储在 `useUserStore().userInfo` 中。`taskPolling.js` 必须使用该值,禁止随机生成。 -- **`X-Session-Id`** 自定义 header 需要 nginx 在 `/suanli/` location 的 `Access-Control-Allow-Headers` 中加入,否则 POST 请求会触发 CORS 预检失败。 +- **`sessionId`** 来自登录接口返回的 `userInfo.sessionId`,存储在 `useUserStore().userInfo` 中,通过请求体 `sessionId` 字段传递给创建任务接口。`taskPolling.js` 必须使用该值,禁止随机生成。 - **模型列表缓存**:`modelApi.js` 中 `fetchPlatformModels` 使用 localStorage 30 秒 TTL + `pendingRequests` Map 并发去重。 - **模型配置缓存**:`modelApi.js` 中 `getModelConfig` 使用 localStorage 60 秒 TTL + `pendingConfigRequests` Map 并发去重。`loadModels()` 会在获取模型列表后调用 `preloadModelConfigs` 批量预加载。 - **平台包预加载**:dialogBox 顶层 `import` Painting 和 Video 平台包,触发自注册,确保首次使用时 registry 已就绪。 @@ -344,7 +343,7 @@ Music 平台与 Painting/Video 的关键差异: | 函数 | 端点 | 用途 | |------|------|------| -| `requestCreateTask` | POST `/suanli/v1/tasks` | 创建任务(带 `X-Session-Id` header) | +| `requestCreateTask` | POST `/suanli/v1/tasks` | 创建任务(请求体含 `sessionId`) | | `requestTaskStatus` | GET `/suanli/v1/tasks/:id` | 查询单个任务状态 | | `requestTaskHistory` | GET `/suanli/v1/tasks/history` | 历史任务列表(支持 `user_id`/`platform_code`/`page`/`pageSize`) | | `fetchPlatformModels` | GET `/suanli/v1/platforms/:code/models` | 获取平台模型列表(返回 `{id(UUID), name, display_name, tags, disabled?}`)。`id`=UUID 主键,`name`=内部标识,`display_name`=用户可见名 | diff --git a/src/apis/display/index.js b/src/apis/display/index.js index de62ac4..087703f 100644 --- a/src/apis/display/index.js +++ b/src/apis/display/index.js @@ -15,10 +15,8 @@ export function deleteGenerateHistory(query) { // ==================== 任务 API(axios,经由 /suanli 前缀路由到算力调度后端) ==================== // 创建生成任务(HTTP POST /suanli/v1/tasks) -export function requestCreateTask(body, sessionId) { - return service.post('/suanli/v1/tasks', body, { - headers: { 'X-Session-Id': sessionId } - }) +export function requestCreateTask(body) { + return service.post('/suanli/v1/tasks', body) } // 查询任务状态 / 获取历史任务结果(HTTP GET /suanli/v1/tasks/:id) diff --git a/src/utils/taskPolling.js b/src/utils/taskPolling.js index 1ae44b2..5948a97 100644 --- a/src/utils/taskPolling.js +++ b/src/utils/taskPolling.js @@ -100,11 +100,12 @@ export async function generate(data, generateData) { model_id: data.modelId, body, request: data.request, - platform_code: getPlatformCode(data.type) + platform_code: getPlatformCode(data.type), + sessionId } // POST 创建任务 - const createResult = await requestCreateTask(requestBody, sessionId) + const createResult = await requestCreateTask(requestBody) if (createResult.code !== 0) { ElNotification({