From 258fa492593f920274f2f7effd0c353b28314aa2 Mon Sep 17 00:00:00 2001 From: QiuSW Date: Wed, 22 Jul 2026 16:05:36 +0800 Subject: [PATCH] chore(tasks): start T-303 Go event regression --- docs/06-tasks.md | 2 +- docs/current-state.md | 4 ++-- progress.md | 9 +++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/06-tasks.md b/docs/06-tasks.md index 16d25e7..327d209 100644 --- a/docs/06-tasks.md +++ b/docs/06-tasks.md @@ -45,7 +45,7 @@ | --- | --- | --- | --- | --- | | T-301 | 锁定 V1 模型并导出 ONNX 一致性工件 | T-205 | 记录 `.pt` 与 ONNX 哈希、输入尺寸、导出命令;同一帧关键点与 Python 在约定容差内。 | DONE | | T-302 | 完成 Go 推理与视频/UI 技术 Spike | T-301 | Windows 上可读取录像和 ONNX Pose;选定运行时与 UI 方案并记录取舍。 | DONE | -| T-303 | 实现 Go 的事件引擎与 V1 回归对比 | T-302 | 同一录像的确认事件、无报警案例和延迟满足 V1 基线。 | TODO | +| T-303 | 实现 Go 的事件引擎与 V1 回归对比 | T-302 | 同一录像的确认事件、无报警案例和延迟满足 V1 基线。 | DOING | | T-304 | 完成 Go 实时演示、报警和打包 | T-303 | 实时 RTSP、红色画面、声音、弹窗和截图可运行;新环境按文档启动。 | TODO | ## Backlog diff --git a/docs/current-state.md b/docs/current-state.md index 1af45a2..d6e2ed5 100644 --- a/docs/current-state.md +++ b/docs/current-state.md @@ -5,7 +5,7 @@ ## 当前快照 - 日期:2026-07-22 -- 阶段:V1 客户演示闭环、T-301 模型导出一致性与 T-302 Go 技术 Spike 已验收;下一个任务是 T-303(复现 V1 事件引擎并做录像回归)。判定灵敏度默认已放宽(低位俯视:持续水平即可疑,膝踝可缺,水平阈值 45°),确认窗为主防误报闸。 +- 阶段:V1 客户演示闭环、T-301 模型导出一致性与 T-302 Go 技术 Spike 已验收;T-303 正在复现 V1 事件引擎并做录像回归。判定灵敏度默认已放宽(低位俯视:持续水平即可疑,膝踝可缺,水平阈值 45°),确认窗为主防误报闸。 - 已验证环境:Windows PowerShell;Python 3.8.10;Ultralytics 8.3.205;PyQt5 可导入。注意:当前 WSL/Linux 环境未安装 PyQt5,且其 ultralytics/torch 版本与该基线不兼容(模型前向不可用),故 GUI 可视化与真实模型端到端渲染只在 Windows 验证;本环境用 Qt-free 的 `view_model.py` 单元测试与假适配器管线冒烟覆盖视图逻辑。 - 旧生产基线:`demo/main.py`、`demo/fall_detection_gui.py`、`demo/detect_fall.py`、`demo/best.pt`。 - V1 代码:已建立安全配置、显式 Replay/Stream 视频源、Pose、轻量跟踪、质量/几何证据、倒地领域规则、按 ID 四态事件机及 `v1/pipeline.py` 事件管线;运行事件带非敏感 `config_version`,缺帧/低质量/断流会中断证据确认。新增 `v1/view_model.py`(Qt-free 监控视图状态与设置草稿三份隔离)、`v1/gui.py` 薄 PyQt5 双 Tab 外壳与 `v1/app.py` 装配(`FrameWorker` 只发出已判定的 `FrameAnalysis`,窗口只渲染)。新增 `v1/alerts.py`:按 `event_id` 去重,对首次 CONFIRMED 保存带标注截图、追加 JSONL 事件行,并经可注入 `AlertSink`(Windows 侧 `QtAlertSink` 提供声音与一次性弹窗)触发一次声音/弹窗。新增 `v1/camera.py`(RTSP URL 构建 + 有界连接测试抓帧)与 `config.py` 的结构化来源(host/端口/通道/账号/密码,凭证百分号编码)、`write_local_camera_source`;设置页新增摄像头连接分组、测试连接与预览,以及传输协议/连接超时/低延迟三项抓流调优(由 `config` 存值、`app` 开流前写入 `OPENCV_FFMPEG_CAPTURE_OPTIONS`)。真实海康流已用 `VideoSource(STREAM)` 连通(1920×1080)。 @@ -34,7 +34,7 @@ - 已完成:T-000、T-101~T-106(V1 地基与事件管线)、T-201(PyQt 双 Tab)、T-202(本地报警/截图/JSONL)、T-203(海康 RTSP 与断流恢复)、T-204(正反例录像与现场验收)、T-205(客户演示脚本与发布包)、T-206(结构化摄像头配置与连接测试)、T-207(抓流低延迟参数)、T-208(每帧诊断叠加)、T-209(放宽俯视灵敏度)、T-210(截图 ASCII 标注)、T-211(灵敏度设置页)、T-212(实时流最新帧)、T-213(截图中文标注)、T-301(ONNX 一致性)、T-302(Go 推理、视频/UI Spike)。 - 正在进行:无。 -- 下一个可领取:T-303(实现 Go 事件引擎与 V1 回归对比)。 +- 正在进行:T-303(实现 Go 事件引擎与 V1 回归对比)。 ## 当前可运行内容 diff --git a/progress.md b/progress.md index 76e510a..b5e63fc 100644 --- a/progress.md +++ b/progress.md @@ -478,3 +478,12 @@ - 决策:CPU Pose 使用 `onnxruntime_go` v1.31.0 加显式、发布时锁定的 ONNX Runtime DLL;视频解码使用受控 FFmpeg 子进程;UI 选择 Walk。Fyne 因 OpenGL/CGO 首次构建超时而拒绝,GoCV 因本机没有开发绑定而不选。当前缓存 DLL 只用于 Spike,绝不作为发布依赖。 - 阻塞:无任务阻塞;但 Go 尚未复现 V1 的预后处理、NMS、关键点解析、跟踪、状态机、延迟回归、RTSP 和报警,不能作为客户演示版。 - 下一步:T-303,按 V1 合约实现事件引擎并在同一录像上比较关键点、确认事件、无报警案例和延迟。 + +## 【2026-07-22】T-303 实现 Go 事件引擎与 V1 回归对比 + +- 状态:DOING +- 变更:任务从 TODO 落为 DOING;将把 V1 的 Pose 解析、轻量跟踪、质量/几何证据、倒地策略和四态确认机迁移为 Go,并建立可重复回归。 +- 验证:开始前 `./init.ps1` 通过(88 passed、1 skipped);T-302 的 Go 测试此前通过。当前仓库没有可提交的正例摔倒录像或 `testdata/expected_events.json`;`demo/1.mp4` 只能作为本机无报警回放材料,真实正例录像仍保持本机工件。 +- 阻塞:无代码阻塞。任务验收将明确区分“提交的合成契约回归 / 本机 demo 无报警回放”与“需本机正例录像才能证实的录像级确认事件、延迟”。 +- 决策:不复制或提交客户录像;先忠实复现 V1 的纯领域合约,并让回归工具接收外部本机录像和基线 JSON。 +- 下一步:先为 Go Pose 后处理与事件状态机编写失败测试。