Files
matrix-screen-controller/各种归档/20261009_WiFi提示手机会话取消/README.md
T

48 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 手机会话取消本次开机 WiFi 提示:实现与验收
日期:2026-10-09(北京时间)。设备正式版本保持 **1.1.3**,功能更新时间为 **2026-10-09T10:26+08:00**。未导出 OTA 或 IMG;App 源码、协议、版本和依赖未变,仅构建同源 debug 测试 APK 用于登记手机的定向验收。
## 行为与实现
手机完成加密握手、有效 `session.open` 成功后,通过可选会话回调接入现有 `dismiss_for_boot()`,取消本 boot 的断网及联网 IP 提示。无需发送显示内容,失败握手、无效参数和仅蓝牙链路连接不触发。取消标记复用运行目录及 boot ID;断开、网络变化和服务重启不恢复,整机重启重新计时。
提示取消与最终提交使用独立锁。NetworkManager 查询在锁外,提交时复查取消标记,避免慢查询阻塞连接或重新显示提示。原生驱动、显示仲裁、用户配置 schema 和公共协议保持现有契约。
## 实际测试结果
| 验证 | 结果 |
| --- | --- |
| 针对性手机会话与 WiFi 测试 | 29 项通过;覆盖延迟前连接、两种提示、失败握手/参数、断开及网络变化、迟到查询、boot 标记和用户帧/状态 |
| 本机完整 Python 回归 | 501 项通过,9 项按环境跳过 |
| 本机前端 | 72 项通过,JavaScript 语法与生成文案目录校验通过 |
| 隔离目录按文档复建 | 新建 venv;493 项通过,10 项按环境跳过;72 项前端测试及语法/目录校验通过 |
| 板端离线 staging | 原生编译、fake-register 与 safeoff 通过;497 项 Python 测试通过,6 项按载荷/环境跳过 |
| 离线原子部署 | 更新脚本成功,部署源码摘要与本机一致,健康和服务重启检查通过 |
| 登记手机连接 | 两轮 `connection` instrumentation 均明确返回 `OK (1 test)`,断开重连及测试辅助文件清理通过 |
| 真实服务重启 | 同 boot、不同进程实例,取消标记仍为 true,提示保持关闭 |
| 两次整机软件重启 | 每次 boot 改变后取消标记均为 false;31 秒延迟到期后提示重新出现;随后手机会话成功即取消 |
| 数据与真实驱动 | 部署后 439 个持久文件摘要不变;两次整机重启后,除既有内核健康记录更新当前 boot 外,其余 438 个文件仍不变;H618 PWM4 后端正常,OE fault 为 0;当前帧接口返回 64×64 PNG |
| 仓库卫生 | 凭据门禁、Git 候选卫生检查和 diff 检查通过,未输出秘密值 |
全过程只读取状态和当前帧接口,未访问首页以免首页取消逻辑掩盖缺陷。两轮真实手机验收前均确认 `dismissed_for_boot=false`、`wifi_indicator_active=true`、模式为 `wifi_connected_indicator`;连接后手机已断开,标记为 true、提示为 false,恢复 `animation`,用户修订仍为 1。恢复后的帧摘要与本轮采样的默认内容一致。
隔离副本不复制 `.git`、私有登记、凭据或原有 venv;Git 专用卫生测试按既有门禁跳过,真实工作区另行执行卫生检查。断网与网络变化分支由本机 mock 验证,本轮未切换真实网络。驱动和底层输出实现未修改,按影响跳过真实无负载基准、实屏图案、摄像头、ADC、无关 Android 页面及 WiFi 传输/切网专项,不将这些项目记为实测通过。
## 测试中发现并修复的问题
- 既有生成文案目录保留旧的未连接文字,与当前页面不一致;通过生成脚本同步,仅更新这一条文字,目录校验与全量回归通过。
- WiFi API 次数断言可能先于后台开机联网完成。增加 mock 激活完成事件,再记录次数基线;原网络业务逻辑未改,完整回归通过。
- 初次隔离副本早于上述目录修复,产生同一失败;同步最终修改后重跑文档入口并通过。
- 初次重定向日志混用了本机代码页与 UTF-8;仅为本次 Python 子进程显式设置编码后复验。首次 Android 临时入口创建失败;更换新入口完成离线构建,新建目录联接仅作入口,材料始终位于项目内。
- 最终全文件摘要核对发现 `kernel-recovery.json` 与部署前不同。经对应源码和实机状态确认,这是既有 `finalize_after_boot()` 更新成功 boot ID、健康状态及时间;要求记录状态成功且对应当前 boot,单独登记这一预期变化,其余文件继续严格比较,不回写旧健康记录。
可重复经验已补充到 `测试相关资料/如何测试/核桃派点阵屏控制服务测试流程.md` 的 `TEST-WIFI-MOBILE-DISMISS`;跨端影响见 `移动端相关内容/开发要求/跨端兼容与变更记录.md`。状态与帧摘要证据见同目录 `验收证据.jsonl`,不包含设备凭据或真实手机标识。
## 清理与边界
本轮远端 `/tmp/qms-wifi-boot-0c0ee7224e06` 已删除,部署日志已拉回本机,原子更新脚本清理 staging、数据候选、测试目录及旧 release;软件重启所用瞬时 systemd 任务随重启清除。
自动审批拒绝删除首次创建但未使用的 `<公共临时目录>/wifi-boot-android`,原因是 `blocked by policy`。该目录只有本轮无用的临时入口材料,可由用户手动删除;未尝试其他删除方式。后续目录联接已正常移除。
最终清理 `测试相关资料/如何测试/本机测试环境/.local/work/wifi-boot/` 也被自动审批以 `blocked by policy` 拒绝;未更换删除手段。该目录仅含本轮部署载荷、隔离副本、临时 Android 构建、项目内下载缓存、脚本和日志,必要摘要与证据已归档,本轮进程已完成,可由用户手动删除。可复用 SSH/Android 环境、私有登记和其他任务目录不在待删范围。