Skip to content

perf(async): 交互端点后台化 skim/deep/embed + TaskStatus 类型对齐 + 前端轮询改造 - #45

Merged
Color2333 merged 1 commit into
mainfrom
perf/pr5-async
Jul 17, 2026
Merged

perf(async): 交互端点后台化 skim/deep/embed + TaskStatus 类型对齐 + 前端轮询改造#45
Color2333 merged 1 commit into
mainfrom
perf/pr5-async

Conversation

@Color2333

Copy link
Copy Markdown
Owner

PR5 — 交互端点后台化(高风险,依赖 PR4 轮询基建)

5a. TaskStatus 类型不一致修复(前置 bug)

  • 后端 to_dict 加 status 便利字段(由 finished/success 派生)+ progress 别名
  • 前端 TaskStatus 类型补 finished/success/progress_pct
  • 此前前端读 status.status 拿 undefined,Wiki/DailyBrief 轮询失配

5b. pipelines.py skim/deep/embed 改 global_tracker.submit

  • 同步阻塞(5s-2min 占请求线程)→ 后台任务,立即返回 {task_id, status}

5c. 前端调用方改造

  • 新建 pollTaskUntilDone helper(递归 setTimeout + 5min 超时 + 10 次错误上限 + 可取消)
  • useSkim/useDeepRead/useEmbed:拿 task_id → pollTaskUntilDone → getResult
  • useAutoAnalyze 3 处同步改 pollTaskUntilDone
  • onCancel 改用 cancelSkim/cancelDeep/cancelEmbed

不做(如实标注)

  • reasoning 后台化:保留同步(低频手动,收益小于 skim/deep,列后续)
  • 后端 cancel 端点:前端 cancel 仅退出轮询,后端任务仍跑完(后续)

验证

  • typecheck + pytest 通过;5 PR 合并零冲突 + build 通过
  • 依赖 PR4(轮询优化)

PR5 — 交互端点后台化(高风险)

5a. TaskStatus 类型不一致修复(前置 bug):
- 后端 task_tracker.to_dict 加 status 便利字段(由 finished/success 派生 running/completed/failed)
  + progress 别名(0-1 小数,前端期望)
- 前端 TaskStatus 类型补 finished/success/progress_pct/elapsed_seconds
  此前前端读 status.status 拿 undefined,Wiki/DailyBrief 轮询靠 status 判断失配

5b. pipelines.py skim/deep/embed 改 global_tracker.submit:
- 同步阻塞(5s-2min 占请求线程)→ 后台任务,立即返回 {task_id, status}
- _fn 内 progress_callback 上报进度,结果存 task.result

5c. 前端调用方改造:
- 新建 pollTaskUntilDone helper(递归 setTimeout 轮询 getStatus 直到 finished,
  5min 超时 + 10 次错误上限 + 可取消)
- useSkim/useDeepRead/useEmbed:调端点拿 task_id → pollTaskUntilDone → getResult
- onCancel 改用 cancelSkim/cancelDeep/cancelEmbed(标记 cancelledRef,轮询退出)
- useAutoAnalyze 的 3 处直接调 pipelineApi 同步改 pollTaskUntilDone
- pipelineApi.skim/deep/embed 返回类型改 {task_id, status}

不做(如实标注):
- reasoning 后台化:papers.py reasoning 保留同步(低频手动触发,收益小于 skim/deep,列后续)
- 后台任务后端 cancel 端点:前端 cancel 仅标记退出轮询,后端任务仍跑完(标注后续)
@github-actions

Copy link
Copy Markdown

🔍 OpenCode PR Review Required

这是一个受保护的分支,merge 前需要进行 code review。

请运行以下命令进行 OpenCode review:

/oc review https://github.com/Color2333/PaperMind/pull/$PR_NUM

或者在 PR 页面评论 /oc 来触发 OpenCode review。


This is an automated reminder from PR Review Gate.

@Color2333
Color2333 merged commit 9a3389c into main Jul 17, 2026
2 checks passed
@Color2333
Color2333 deleted the perf/pr5-async branch July 17, 2026 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant