docs: adopt Gio for V2 UI after spike passed on Windows; add T-306 migration

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ila
2026-07-23 14:16:40 +08:00
co-authored by Claude Opus 4.8
parent 43ec154075
commit 8d71889d9c
3 changed files with 12 additions and 2 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ V2 对应模块的当前落实与 T-304 目标如下:
| 事件引擎 | `v2/internal/fall` | 复现 V1 的跟踪、证据、四态状态机和 `FallEvent` | 视频解码、声音、文件 |
| 画面与证据 | `v2/internal/render`、`v2/internal/alert` | 叠加人员骨架/状态,红色仅表示 CONFIRMED;按事件 ID 保存一次 PNG 和 JSONL | 读取 RTSP、重跑事件规则、直接操作 Walk 控件 |
| 实时装配 | `v2/internal/monitor` | 在后台串联帧→Pose→事件→渲染→证据;画面只保留最新完成帧,确认事件经独立队列送 UI | 直接操作 Walk 控件、保存凭证 |
| Windows UI | `v2/internal/ui` | Walk 浅色顶部“监控/设置”Tab、渲染最新帧和已计算状态;确认事件仅在 UI 线程播放声音并弹窗 | 直接读 RTSP、执行 ONNX 或事件规则 |
| Windows UI | `v2/internal/ui` | **Gio**(替代 Walk)浅色顶部“监控/设置”Tab、渲染最新帧和已计算状态;后台更新经 `Invalidate` 上屏、UI 线程只渲染;确认事件播放声音并自绘弹窗 | 直接读 RTSP、执行 ONNX 或事件规则 |
| 应用装配 | `v2/cmd/silver-pose`(T-304) | 管理 worker 生命周期、取消、最新帧投递和依赖注入 | 重写领域规则 |
## UI 导航与配置生效生命周期
+2 -1
View File
@@ -47,7 +47,8 @@
| T-302 | 完成 Go 推理与视频/UI 技术 Spike | T-301 | Windows 上可读取录像和 ONNX Pose;选定运行时与 UI 方案并记录取舍。 | DONE |
| T-303 | 实现 Go 的事件引擎与 V1 回归对比 | T-302 | 同一录像的确认事件、无报警案例和延迟满足 V1 基线。 | DONE |
| T-304 | 完成 Go 实时演示、报警和打包 | T-303 | 实时 RTSP、红色画面、声音、弹窗和截图可运行;新环境按文档启动。 | DOING |
| T-305 | V2 UI 框架评估:Gio Spike(应对 Walk TTM_ADDTOOL 启动故障) | T-302 | 以 Gio 搭 `cmd/gio-spike`:窗口可显示并关闭、无 TTM_ADDTOOL、能贴一张 `*image.RGBA`(V2 render 输出)并有双 Tab/按钮骨架;据此决定 V2 UI 是修 Walk manifest 还是迁移 Gio。 | DOING |
| T-305 | V2 UI 框架评估:Gio Spike(应对 Walk TTM_ADDTOOL 启动故障) | T-302 | 以 Gio 搭 `cmd/gio-spike`:窗口可显示并关闭、无 TTM_ADDTOOL、能贴一张 `*image.RGBA`(V2 render 输出)并有双 Tab/按钮骨架;据此决定 V2 UI 是修 Walk manifest 还是迁移 Gio。 | DONE |
| T-306 | V2 UI 从 Walk 迁移到 Gio | T-305 | 用 Gio 重写 `internal/ui`,保持 `NewWindow/Run/Present/PresentAlert/ReportIssue` 接口;后台更新经 `Invalidate` 上屏、UI 线程只渲染;双 Tab、贴 render 的 RGBA、确认弹窗(自绘遮罩)与声音(Win32 syscall);`cmd/silver-pose` 起窗无 TTM_ADDTOOL。 | TODO |
## Backlog
+9
View File
@@ -541,3 +541,12 @@
- 阻塞:窗口能否真正显示/关闭、无 `TTM_ADDTOOL`,需用户在 Windows 目视一次(Gio 不用 Win32 common controls,理论上不会出该错)。
- 决策:Gio 从根上规避 Walk 的 comctl/manifest 问题;`internal/render` 已出 `*image.RGBA`,Gio 用 `paint.NewImageOp` 直接贴,UI 层很薄。若 Windows 目视通过,则 V2 UI 由 Walk 迁 Gio;否则回退"给 Walk 嵌 Common Controls v6 清单"方案。
- 下一步:用户在 `v2/` 下 `go run ./cmd/gio-spike` 确认起窗;通过则据此把 `internal/ui` 迁 Gio、更新架构文档。
## 【2026-07-23】T-305 V2 UI Gio Spike(完成)
- 状态:DONE
- 变更:无(延续上一条 spike 实现)。
- 验证:用户在 Windows `go run ./cmd/gio-spike` 确认——窗口正常显示、有带红边的 `*image.RGBA` 图和顶部双 Tab、**未再出现 `TTM_ADDTOOL`**。结合本环境 `GOOS=windows CGO_ENABLED=0` 交叉编译通过(11MB 纯 Go 单 exe),Gio 方案在 Windows 上可行且自包含。
- 阻塞:无。
- 决策:**V2 UI 从 Walk 迁移到 Gio**。理由:Gio 从根上不用 Win32 common controls,规避 comctl/manifest 一类问题;`internal/render` 已出 `*image.RGBA`,Gio 直接 `paint.NewImageOp` 贴,UI 层薄;纯 Go 单 exe 符合"无 Go 环境运行"且不带 WebView2。已更新架构文档 `internal/ui` 为 Gio;新增迁移任务 T-306。
- 下一步:T-306 用 Gio 重写 `internal/ui`,保持 `NewWindow/Run/Present/PresentAlert/ReportIssue` 接口不变。