diff --git a/CLAUDE.md b/CLAUDE.md index d15356d..b84e2aa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,11 +8,12 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co pnpm dev # 启动 Vite 开发服务器 pnpm build # 生产构建 pnpm preview # 预览生产构建 +npx eslint . # 代码检查(@antfu/eslint-config,Vue 支持,无 TypeScript) ``` ## 技术栈 -Vue 3 (Composition API) + Vite 7 + Pinia + Vue Router + Element Plus + Less + pnpm +Vue 3 (Composition API) + Vite 7 + Pinia + Vue Router + Element Plus + `vue-element-plus-x`(多媒体编辑) + Less + pnpm ## 架构概览 @@ -56,6 +57,7 @@ src/ │ ├── modelConfig.js # Video 旧架构:从远程 JSON 加载 workflow 配置 │ └── auth.ts # token 存取工具(localStorage) ├── config/ +│ ├── plugins.js # Vite 插件配置(unplugin-auto-import + unplugin-vue-components) │ ├── index.js # 平台配置入口(目前仅导出 runninghub 供 Video 使用) │ ├── runninghub/ # RunningHub 平台适配器:Playload() 构造和 result() 解析(Video 专用) │ └── models/ # Painting 模型参数配置:每模型一个 JS 文件,定义 params schema @@ -116,6 +118,23 @@ src/ | `cancelOrCollect` | POST `/collect/toggle` | 收藏/取消收藏 | | `deleteGenerateHistory` | DELETE `/taskRecordHistory/delete` | 删除历史记录 | +### 任务响应格式 + +```json +// GET /suanli/v1/tasks/:id 返回结构 +{ + "code": 0, + "data": { + "task_id": "uuid", + "status": "completed", // queued | processing | completed | failed + "outputs": [ // ⚠️ 扁平数组,不是 { images: [...] } + { "url": "https://...", "type": "png" } + ], + "vendor_error": "..." // 仅 failed 时有值 + } +} +``` + ### 请求拦截器路由 拦截器统一设置 `Authorization: `(不带 Bearer 前缀),根据 URL 前缀切换后端: diff --git a/src/utils/websocket.js b/src/utils/websocket.js index 1f2facc..627979f 100644 --- a/src/utils/websocket.js +++ b/src/utils/websocket.js @@ -140,7 +140,7 @@ export async function generate(data, generateData) { useDisplay.isSubGerenate = false // 提取结果 URL - const urls = taskData.outputs?.images?.map(img => img.url) || [] + const urls = taskData.outputs?.map(img => img.url) || [] if (urls.length > 0) { useDisplay.updateItemToSuccess(taskId, urls) websocketSuccess()