Files
HomeAgent/cmd
JianFeeeee f3fa0e8f5b feat(ohos): 运行态面板 —— 阶段管道 + 中断队列(落在设置页二级明细顶部)
接上一条腿:桌面版已同步,这次补鸿蒙端缺的运行态面板。
落点按之前的建议放在「设置 → 运行状态」二级明细页最前:明细卡回答「内核有哪些
东西、多少」,运行态回答「现在在干什么」,后者是进这个页面最先想看的。

## 新增

- `common/StageTrail.ets`:阶段轨迹单例(SSE 驱动)。由 ChatSse 的 stage 分支
  喂入,面板读取。**不并进 StatusStore**:轨迹来自 SSE 流,与 /status、/kernel
  的轮询是两条独立数据源,生命周期与失败模式都不同(SSE 断连不该让状态卡变空,
  状态轮询失败也不该清掉轨迹)。七阶段归并成五格,同阶段同一条累加计数,
  2.5s 无新事件自动回空闲。
- `components/RuntimePanel.ets`:等大表框面板。
  - 四个数字块(排队/中断/栈/子代理)
  - 阶段管道:每格 = 阶段名 + 本阶段本轮事件;当前阶段整框点亮
  - 中断队列:5 格(L4/L3/L2/L1 + 排队),级别色贯穿框头/槽位/描边;
    有积压整框描边点亮;排队队列虚线框区分(另一类别,不是另一优先级)
  - 格槽固定可见:深度为 0 时也有形状,不会剩一片空白

## 改动

- `StatusStore`:新增 `/runtime` 采集与 `RuntimeSnapshot`/`RuntimeQueue`
  (明细与运行态分开取、分开存);失败保留上一次快照,旧后端无此端点时
  面板显示「运行态数据不可用」。
- `ChatSse`:stage 分支先喂轨迹,再管聊天侧角标。
- `SettingsPage`:`stageTrail.init()`。
- `StatusCards`:二级明细顶部渲染 `RuntimePanel()`。

## 关于宽度

模拟器(API 24,1256x2760 ≈ 360vp 宽)上 5 框一行会让「内核独占」这类标签被
挤成省略号,所以按项目已有的 `isWideScreen` 分两支:宽屏 5 框一行,手机 3+2
(补一个占位格保证框宽对齐)。两档都是等大框。

## 验证

- `hvigorw assembleHap` → **BUILD SUCCESSFUL**;`clean` 后全量重建,
  本次新增/改动的 6 个文件 **零 ArkTS 告警**。
- 未上机实测:本机签名 profile 无法授予 `ohos.permission.READ_PASTEBOARD`
  (module.json5 里已有的一项,非本次改动),`hdc install -r` 报
  `error: install failed due to grant request permissions failed`。
  没有为此卸载设备上的应用(会丢用户已存的连接配置),也没有改权限列表
  (属产品决定)。要上机的话,我可以临时去掉那一条权限打个一次性包验证。
2026-09-14 19:05:46 +08:00
..