From 8d71889d9c29b45e3a5fe97be79ed01e71de5677 Mon Sep 17 00:00:00 2001 From: ila Date: Thu, 23 Jul 2026 14:16:40 +0800 Subject: [PATCH] docs: adopt Gio for V2 UI after spike passed on Windows; add T-306 migration Co-Authored-By: Claude Opus 4.8 --- docs/04-architecture.md | 2 +- docs/06-tasks.md | 3 ++- progress.md | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/04-architecture.md b/docs/04-architecture.md index 68e3ec7..020d56b 100644 --- a/docs/04-architecture.md +++ b/docs/04-architecture.md @@ -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 导航与配置生效生命周期 diff --git a/docs/06-tasks.md b/docs/06-tasks.md index f73a1c3..a353995 100644 --- a/docs/06-tasks.md +++ b/docs/06-tasks.md @@ -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 diff --git a/progress.md b/progress.md index d31907d..87f3b3d 100644 --- a/progress.md +++ b/progress.md @@ -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` 接口不变。