mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-21 01:32:44 +08:00
36 lines
4.0 KiB
Markdown
36 lines
4.0 KiB
Markdown
# ADR-0532:原生 Console 的日志窗口导航
|
||
|
||
- 状态:Accepted(D-430 exact Console 双架构阶段实物已交付)
|
||
- 日期:2026-09-04
|
||
- 关联:QL-RFC-0001 D-430、ADR-0515、ADR-0531
|
||
|
||
## 问题
|
||
|
||
原生 3.0 Console 已能创建任务、配置定时与加密凭据,但日志超过首个 32 KiB 后仍要求部署者离开页面自行调用 API。旧面板兼容不是长期产品目标,本切片在原生页面补齐日志观察的用户操作闭环。
|
||
|
||
## 决策
|
||
|
||
- 在既有 Attempt log API 上增加“下一片段”“回到开头”“刷新当前片段”。每次用户动作只读取一个 32 KiB 窗口并替换 `<pre>`,不累计历史窗口、不自动翻页、不新增轮询或全文下载。
|
||
- 翻页固定选择时的 Project、Run 与 Attempt;刷新当前片段不会悄然切换到另一个 Attempt。重新选择 Run 才重新读取 latest Attempt、Run/Event/Step 事实。
|
||
- 验证响应 schema、Project/Run/Attempt 身份、字节范围、解码字节数与前进 cursor。异常或停滞 cursor 不生成下一页操作;pending、retired、masked absence 和 unavailable 保持显式状态。
|
||
- 选择请求使用不含凭据的内存代次标记;旧请求在切换 Run、离开运行页、断开连接或同一 Run 重选后不能覆盖当前详情。翻页按钮请求中禁用且合并重复点击,未连接到当前文档的旧节点不能启动新请求。
|
||
- 字节分片仍遵循既有 API,UTF-8 跨片字符可能显示替换符,页面明确说明;不伪造完整行、不保存跨窗口解码缓冲、不修改日志字节偏移。
|
||
|
||
## 部署边界与验证
|
||
|
||
不新增 package、dependency、schema、migration、后端 route、数据库连接、listener 或后台任务。默认 headless 与独立 Cluster Console 不变,Local 原生资产仍受单文件 96 KiB / 总计 192 KiB 限制。
|
||
|
||
客户端行为测试直接执行发布的 `console.js`,覆盖分页替换、范围/身份漂移、连续点击、过期响应、错误状态、空窗口和 UTF-8 字节边界。真实 Chromium 预览已验证首片段 → 下一片段 → 回到开头,DOM 始终只有一个日志窗口,中文与 `<script>` 字面文本安全展示,三个动作只产生三个日志 GET。
|
||
|
||
本地验证:客户端行为测试 6/6、完整 Local API 99/99、后端 1685 项(1683 pass / 2 环境条件 skip / 0 fail),Local image 与 package boundary audit 均 compatible。原生 JS 为 74,695 bytes,三项资产合计 106,216 bytes,均在既有硬上限内。
|
||
|
||
## 阶段实物
|
||
|
||
提交 `12ed38b7d72fe6366ad8f1ac84aebb1bb772f3b5` 的主 CI [run 33793623200](https://github.com/whyour/qinglong/actions/runs/33793623200) 为 42 success / 3 expected skip / 0 fail;独立 Kubernetes deployment [run 33793623184](https://github.com/whyour/qinglong/actions/runs/33793623184) 成功。显式 Console artifact [run 33793687627](https://github.com/whyour/qinglong/actions/runs/33793687627) 为 43 success / 2 expected skip / 0 fail。
|
||
|
||
该 run 交付 amd64/arm64/milestone artifact `9909229721`/`9909131639`/`9909265138`,GitHub ZIP 大小为 `239032779`/`234432459`/`6797` bytes,UTC 保留至 2026-10-03。三份实际下载产物的 `SHA256SUMS` 全部通过,两个 bundle v8 auditor 和 milestone v7 auditor 均返回 `compatible=true`,绑定相同 source revision、Console variant、workflow/run/attempt 与两个架构。
|
||
|
||
本机还将两个下载 bundle 的 manifest SHA-256 与 milestone 索引逐一比对,并直接读取 Docker archive 中 Application 最终层的 `console.js`;两者都与该提交的源码逐字节一致,均为 74,695 bytes,SHA-256 为 `ad1a7d1e8f85f158268f9375b2db5e8c52fbb03ada5888a973f57020c36d4c02`。这确认日志导航确实进入镜像,而非只改了标签或文档。本机执行的是下载后离线校验,不是额外启动真实部署。
|
||
|
||
此前 ADR-0531 的 `09ef1745` artifact 不包含本切片;本次 `12ed38b7` artifact 同样不含后续 D-431 列表分页。阶段实物仍是 `alpha_candidate_not_public_release`,不声明完整 3.0、Cluster 页面或生产升级已经完成。
|