Commit Graph

5 Commits

Author SHA1 Message Date
yuming 80e3815b2f fix: 用Pillow替代ImageMagick,修复批量下载漏下载的4个逻辑漏洞
漏下载根因:
1. ImageMagick(magick)未安装,detect_card_rows/std_profile/count_blue_pixels
   全部依赖magick命令,命令不存在时抛FileNotFoundError,sync_recent_days
   捕获异常后直接跳过当天 → 整天漏下载
2. detect_card_rows两次返回空就误判'全部已打勾'直接滚动 → 漏掉当前屏所有卡片
3. 到底清扫时检测不到行就误判'清扫完成'提前结束 → 漏掉底部卡片
4. 点击超时未打勾的卡片不重试 → 点击落在间隙/标签上的卡片永远漏下载
5. sync_recent_days某天异常直接跳过不重试 → 偶发ANR导致整天漏下载

修复:
- 全部magick调用(sample_pixel_rgb/count_blue_pixels/std_profile/date_label_hash/
  screenshot_hash)替换为Pillow实现,消除系统级外部依赖
- detect_card_rows返回空时重试3次(逐次加长等待),仍为空则跳过本轮不盲点
- 到底清扫时检测不到行重试3次,仍为空才判底部无内容
- 点击超时未打勾的卡片重试点击一次,再等一轮
- sync_recent_days每天最多重试1次(共2次尝试)
2026-09-18 16:06:50 +08:00
yuming 55361a8f58 perf: webapp事件接口加分页、motion默认隔帧采样、新增20个单元测试
- /api/events 支持 limit/offset 分页参数,默认500上限2000
- MOTION_SAMPLE_STRIDE 默认从1改为2,长视频提速一倍
- 新增 tests/test_core.py:覆盖MD5、活动窗口合并、摔倒检测、活动标签合并、Ollama解析等20个纯函数测试
2026-09-18 15:55:09 +08:00
yuming b3608f534e feat: 新增视频分析流水线、Web界面、孤儿清理工具;修复健壮性问题
- 新增 analysis/ 模块:MOG2活动检测、YOLO人物跟踪、MediaPipe摔倒检测、Ollama活动打标、缩略图抽取
- 新增 webapp/:Flask事件浏览界面,按需HEVC→H264转码缓存
- 新增 analyze.py:7阶段状态机流水线(scan→backfill→motion→person→fall→activity→thumbnail)
- 新增 cleanup_orphans.py:清理文件已删除的数据库孤儿记录
- 修复:motion/person/activity三阶段加单视频异常兜底,避免批次中断
- 修复:ollama_client加健康检查和3次重试,num_ctx从8192降到2048
- 修复:transcode_cache加fcntl文件锁,防止并发转码同一视频
- 修复:SQLite开WAL模式+busy_timeout,支持读写并发
- 修复:sync.py ffmpeg路径改为shutil.which查找,删除automate.py死代码PYTHON
- 修复:thumbnail失败加3次重试上限,避免无限重试损坏文件
- 新增:requirements.lock锁定版本、README文档
- 更新:.gitignore排除.playwright-mcp、截图、备份文件
2026-09-18 15:52:49 +08:00
yuming 203cca42a2 fix: 动态定位卡片行根治萤石批量下载重复问题
根因:批量下载列表是自绘 UI,原用写死的网格坐标 THUMB_Y 定位卡片;但列表
每隔一段插入"整点分组标签"行,滚动跨过标签会使所有卡片整行错位(实测漂移
达 174px),导致点击落空、打勾检测采样错位、已下载卡片被误判重下,重复率约 30%。

修复与优化:
- 改用亮度标准差(std)垂直剖面每屏动态实测卡片行真实中心,替代写死的 THUMB_Y
- 每轮最多点前 3 行(9 格),避免超萤石约 10 个的并发下载上限
- 到底判定改用"卡片行有没有整体平移",抗底部灰占位抖动(原像素哈希会一直空滚)
- 到底时清扫当前屏剩余未下载卡片,补下被限 3 行漏掉的底部几个
- 截图改 exec-out 一步式 + 复用检测结果 + 缩短固定等待,单轮 ~12s 降到 ~7s

实测重复率 30% → 0%,端到端跑通(启动→下载→到底清扫→拉取到本地→同步完成)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-27 15:31:40 +08:00
yuming 45d17ee576 feat: 萤石 CB60 录像每日同步初始版本
通过 ADB 自动化模拟器中的萤石 App,每天把 SD 卡里昨天的录像批量
下载到本地。云 API 方案 (sync.py/probe.py) 是备选,需先在萤石开放
平台关闭设备码流加密。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 10:41:38 +08:00