mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-05-14 20:08:42 +08:00
fix(extension): /task_status 拆 ResponseWrapper,进度条不再为空
backend /api/task_status/{id} 实际形状是 R.success({status, message, task_id, result?})
即外面再套一层 {code, msg, data}。原来 getTaskStatus 直接 fetch().json() 没拆包,
导致 res.status 一直是 undefined,TaskProgress 渲染不出阶段标签、进度条全灰,
"最近任务" 列表的状态字段也是空的。
同时把 backend 任务失败时的 R.error(message, code=500) 翻译成 {status:'FAILED', message},
让 UI 能正确显示失败终态、停止轮询,而不是被 request() 抛错卡在那里循环重试。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -185,11 +185,17 @@ export async function generateNote(payload: GenerateRequest): Promise<{ task_id:
|
||||
}
|
||||
|
||||
export async function getTaskStatus(taskId: string): Promise<TaskStatusResponse> {
|
||||
// /task_status/{id} 返回的是裸对象(非 ResponseWrapper 包装),见 routers/note.py
|
||||
// /task_status 永远 HTTP 200;body 是 ResponseWrapper:
|
||||
// 成功:{code:0, data:{status, message, task_id, result?}}
|
||||
// 任务失败:{code:500, msg:'xxx', data:null}
|
||||
// 这里手动拆,把任务失败翻译成 status:'FAILED',避免 request() 抛错让 UI 收不到状态
|
||||
const res = await fetch(`${backendUrl()}/api/task_status/${taskId}`)
|
||||
if (!res.ok)
|
||||
throw new Error(`HTTP ${res.status}`)
|
||||
return (await res.json()) as TaskStatusResponse
|
||||
const body = (await res.json()) as { code: number, msg: string, data: TaskStatusResponse | null }
|
||||
if (body.code === 0 && body.data)
|
||||
return body.data
|
||||
return { status: 'FAILED', message: body.msg || '任务失败', task_id: taskId }
|
||||
}
|
||||
|
||||
export async function ping(): Promise<boolean> {
|
||||
|
||||
Reference in New Issue
Block a user