mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-20 16:07:11 +08:00
35 lines
4.7 KiB
Markdown
35 lines
4.7 KiB
Markdown
# ADR-0533:原生 Console 的任务、定时与运行列表分页
|
||
|
||
- 状态:Accepted(D-431 exact 双架构 Console 阶段实物已交付并复核)
|
||
- 日期:2026-09-04
|
||
- 关联:QL-RFC-0001 D-431、ADR-0532
|
||
|
||
## 问题
|
||
|
||
原生 Console 已能创建任务、配置定时、运行和读取日志,但 Task、Trigger、Run 列表在第 64 条后要求操作者自行调用 API。超过一屏的数据无法从页面到达,不能作为日常管理体验。后端已有三类规范 keyset API,不需要新增分页服务或恢复旧 Cron 权威。
|
||
|
||
## 决策
|
||
|
||
- 三类列表共用当前静态客户端中的小型分页逻辑,不新增 workspace package、依赖或后端路由。页脚提供“下一页”“回到首页”“刷新当前页”;顶部刷新、切换栏目和管理写入后的列表刷新从首页开始。
|
||
- 每个显式动作最多一个列表 GET、64 条记录,替换当前 DOM;只保留当前请求边界,不缓存历史页、累积记录、自动翻页、轮询或增加总数扫描。Run 详情和日志仍按既有显式选择流程读取。
|
||
- Task/Trigger 分别按 `taskId`/`triggerId` 升序;Run 按 `createdAtMs`、同时间戳下 `runId` 降序。客户端核对页内及跨页顺序、重复 ID、64 条上限、继续标志、完整 cursor 字段与最后一行一致性。异常页不显示继续操作。
|
||
- 查询使用正式 HTTP parser 接受的 canonical ASCII ID;这些 ID 不含查询分隔符,不能把合法冒号编码成 parser 不接受的别名。新增测试将真实客户端生成的 URL 送入生产 HTTP surface,验证三类 continuation 被解析成正确的 typed cursor。
|
||
- 每轮刷新绑定 Project、栏目与不含 credential 的请求代次;过期成功、失败和 finally 不覆盖新的列表、连接状态或 busy 状态。刷新清空旧详情选择;Task/Trigger 详情响应也绑定选择代次和列表代次。Secret 仍保持原有有界目录,但列表响应在提交 catalog/DOM 前同样检查代次。
|
||
- 页脚在旧 DOM 被替换后不能再发起请求;重复点击同一个页脚只提交一次。失败的后续页保留当前边界重试与回首页入口,空的后续页不会被误报为整个 Project 没有数据。
|
||
|
||
## 明确边界
|
||
|
||
这不是数据库快照:浏览期间新建或更新的数据可能需要回首页重读。没有虚构总页数、随机跳页或无界上一页历史。它不包含 Secret 全目录分页、Run Event/Step 分页、筛选搜索、Cluster UI 或旧面板写操作。默认 headless 的资源和安装闭包不变。
|
||
|
||
## 验证
|
||
|
||
客户端测试直接执行发布的 `console.js`,覆盖三类第 65 条到达、刷新/回首页、同时间戳 Run、空页、503 重试、错误 cursor/顺序、重复点击、切换栏目、断开、同栏目重读、旧详情和旧 Secret catalog 丢弃;含真实 HTTP parser 集成合计 15/15。完整 Local API 为 114/114,无失败或跳过;完整后端 1685 项(1683 pass / 2 环境条件 skip / 0 fail)。Local image 与 18-package boundary audit 均 compatible。
|
||
|
||
原生 JS 为 80,336 bytes,三项静态资产共 111,857 bytes,仍小于单文件 96 KiB / 合计 192 KiB。D-430 的 `12ed38b7` 构建不含本切片;本地测试不等于 exact 双架构产物交付。
|
||
|
||
真实 Chromium 使用当前原生静态资产与合成 HTTP 数据验证了 Task、Trigger、Run 的第 65 条可达,任务详情可从第二页打开,DOM 每次只保留当前页。请求记录包含三个规范 continuation URL,浏览期间没有自动列表轮询。该浏览器证据验证交互,不冒充真实数据库、Owner 写入或双架构镜像验收。
|
||
|
||
提交 `ce8c3a7d2afdbb11b2a33f4884702454d1d22a53` 的主 CI [run 33796190607](https://github.com/whyour/qinglong/actions/runs/33796190607) 与 Console artifact [run 33797144811](https://github.com/whyour/qinglong/actions/runs/33797144811) 均已完成并成功。上传清单包含 amd64 `9910148271`(239,038,659 bytes)、arm64 `9910153237`(234,438,339 bytes)及 milestone `9910185111`(6,797 bytes)。三份已实际下载,SHA256SUMS、双 bundle v8 auditor、milestone v7 auditor 均通过,两份 bundle manifest digest 与 milestone 一致。Docker archive 内 application 最终层的 `console.js` 均为 80,336 bytes、SHA256 `febac949f0f72ebeda41fe743909074762d5add0804895ca6802b54d0d51a6a5`,与该提交逐字节一致。amd64 archive SHA256 为 `dffa8606ee30e6cbf45bd1166ad0c716450e15ac21c07e7e15e539db140d3281`,arm64 为 `25cad723858afea09f2787cf42160db4150e48690e03afdbb0ac396eb1bcb8c9`。
|
||
|
||
因本机空间不足,完成审计后已删除本轮两份临时 Docker archive,保留 manifest 等小文件;归档可从上述 run 重新下载。这些实物仍为 Alpha,不包含后续 ADR-0534 的客户端连接代次修复或 ADR-0535 的旧面板执行管理。
|