复查修掉新引入的忙等、无界项目读取与过紧的前置预算
Project CI / Repository checks (pull_request) Successful in 48s
Project CI / Frontend tests (pull_request) Failing after 2m11s
Project CI / Backend tests (pull_request) Successful in 4m23s
Project CI / Native shell tests (pull_request) Successful in 12m38s

忙等(最严重,上一条新引入):归属过滤只加在 expiredIds,没加在
resolveNextInlineGenerationDialogExpiryAt。被本会话持有的超窗占位不进 expiredIds,
却仍被算出一个已过去的到期时刻,delayMs 塌成 50ms,触发→tick→重跑→再挂,变成
每 50 毫秒一次 setState 的忙等。改为先按归属过滤出 unownedDialogs 供两处共用。

loadEditorProject 同样没传 timeoutMs,而 composeAbortSignal 缺失时不设默认值。
它是对账路径上的读取,挂住会让 catch 迟迟不结束,连带把占位拖过窗口——正是上面
那个忙等的助推。补 60 秒。

前置预算 40 秒过紧:该阶段会真的直传一张画布图层,几 MB 在较差网络下要几十秒,
用「无界」换「过紧」同样是回归。改为 90 秒,窗口同步 180→240,维持
90 + 120 = 210 < 240 并留 30 秒余量。三个常量构成的跨文件不等式新增用例钉住。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-03 11:34:04 +00:00
parent aa8ea401a9
commit 6fb2abfc60
7 changed files with 72 additions and 17 deletions
@@ -785,6 +785,10 @@ export async function loadEditorProject(projectId: string) {
`${EDITOR_PROJECT_API_BASE}/${encodeURIComponent(projectId)}`,
{ method: 'GET' },
'读取图片画布工程失败',
// 中文注释:本文件多数接口都显式写了超时,这里此前没有——而 composeAbortSignal 在
// timeoutMs 缺失时不设任何默认值。它是未知结果对账路径上的读取,挂住会让 catch 迟迟
// 不结束,本会话对占位的归属登记要到 finally 才释放,连带把占位拖过存活窗口。
{ timeoutMs: 60_000 },
);
return response.project;
}