From 93462d78efda1e15cc02c00776ce377711da8033 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Fri, 12 Jun 2026 09:13:09 +0800 Subject: [PATCH] =?UTF-8?q?docs(spec):=20=E5=9B=9E=E5=A1=AB=E5=BC=82?= =?UTF-8?q?=E6=AD=A5=E5=8C=96=E8=BF=9B=E5=BA=A6=20=E2=80=94=20=E5=AF=BC?= =?UTF-8?q?=E8=88=AA(Part=20A)+=E7=99=BB=E5=BD=95(Part=20B)=E5=B7=B2?= =?UTF-8?q?=E8=90=BD=E5=9C=B0,=20B3/A6=20=E5=88=A0=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=9B=A0=20ProjectListDialog=20=E4=BB=8D=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=80=8C=20BLOCKED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../specs/2026-06-11-apiclient-async-design.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/superpowers/specs/2026-06-11-apiclient-async-design.md b/docs/superpowers/specs/2026-06-11-apiclient-async-design.md index c526728..944151a 100644 --- a/docs/superpowers/specs/2026-06-11-apiclient-async-design.md +++ b/docs/superpowers/specs/2026-06-11-apiclient-async-design.md @@ -7,14 +7,18 @@ **DatasetDetail 试点:✅ 已完成并通过评审。** 实现计划 `plans/2026-06-11-apiclient-async-datasetdetail.md`(8 任务,逐任务 spec+质量双评审 + 整体评审)。测试 75 → 89(+14 离线用例)全绿。落地原语:`IApiCall`/`ApiCall`/`ApiBatch`(net)、`ChartLoad`/`GridLoad`/`IAsyncDatasetRepository`(data)、控制器 abort-and-replace + 句柄身份比对 + 退出契约、`LoadingOverlay` 网格懒加载遮罩。核心收益落地:详情路径不冻 UI、慢请求可 abort 不回灌、多请求并发 + fail-fast。 -**未完成(本期非目标,待后续铺开):** -- **导航路径**(`ApiProjectRepository`:空间/项目/结构树/数据集列表/异常树/动态表单)仍同步阻塞。 -- **登录路径**(`AuthService`:验证码→校验→login2)仍同步阻塞。 -- `ApiClient` 同步 `get/postJson` 保留供上述路径使用,尚未移除。 +**铺开进展(2026-06-12 更新):** +- **导航路径 ✅**(计划 `plans/2026-06-11-apiclient-async-rollout.md` Part A):新增 `ApiChain`(串行依赖链原语)、`NavRequest`(单请求句柄,QVariant payload)、`IAsyncProjectRepository`;`WorkbenchNavController` 全异步(NavRequest 续延 + 并发计数 + abort-and-replace + 身份比对,删 busy_/drain,busyChanged=在飞存在性)。 +- **登录路径 ✅**(同计划 Part B:B1/B2/B4):`AuthService` 异步(`CaptchaLoad`/`LoginLoad` + `ApiChain` 编排 verify→RSA→login2);`LoginWindow` 不冻 + 可取消(析构 abort);`test_auth` live 异步化。 +- 测试 89 → 116。每块逐任务 spec+质量双评审 + 整体评审通过。 -可选 follow-up(评审建议,非阻断):删 `DatasetDetailController::ChartData.grid/gridScale` 死字段;补 `qRegisterMetaType>()`(为 cross-thread 铺开准备)。 +**仍未完成(BLOCKED,同根:`ProjectListDialog` 仍同步消费 `IProjectRepository`):** +- 删除 `ApiClient` 同步 `get/postJson`(Part B 的 B3)+ 删除同步 `IProjectRepository`(Part A 的 A6)。解锁前置:先把 `ProjectListDialog` 迁移到 `IAsyncProjectRepository`。 +- 故 `ApiProjectRepository` 暂同时实现同步+异步两接口(过渡技术债)。 -> 全 App 异步化铺开的实现计划另见:`plans/2026-06-11-apiclient-async-rollout.md`(如已生成)。 +可选 follow-up(评审建议,非阻断):删 `DatasetDetailController::ChartData.grid/gridScale` 死字段;补 `qRegisterMetaType>()`。 + +> 铺开实现计划:`plans/2026-06-11-apiclient-async-rollout.md`(Part A/B 已落地,B3 BLOCKED)。 ## 1. 背景