yuming
|
3dd66529a2
|
fix: 增大滚动距离406px→1200px,避免误判到底
|
2026-09-18 21:55:48 +08:00 |
|
yuming
|
011eb51cfb
|
fix: 打勾检测改用全局蓝色角标计数,不受列表滚动漂移影响
根因:等待期间列表轻微滚动(约50px),用点击时的旧行坐标检测打勾
位置偏移,导致明明已打勾却检测不到0/6,误判为下载失败。
修复:
- 新增 count_checked_badges():扫描整屏蓝色角标总数,不依赖行坐标
- 等待逻辑改为:点击前记基线→等待期间统计当前总数→
增量>=点击数即完成
- 重试逻辑同步改用全局计数
|
2026-09-18 21:44:17 +08:00 |
|
yuming
|
317bd3020d
|
fix: 修复等待逻辑,避免未完成就滚动导致漏下载
问题:旧逻辑等30秒就超时,重试点击一次后再等30秒就滚动。
大文件30秒下不完,队列满时重试点击无效,导致卡片漏下载。
修复:
- max_wait_per_round 从30秒增加到120秒
- 等待逻辑改为三轮:先等120s→再等120s→重试点击→再等120s
- 总最长等待6分钟,足够6个小文件全部下载完
- 队列满时不立即重试点击,先让正在下载的完成腾出位置
|
2026-09-18 21:22:44 +08:00 |
|
yuming
|
2e01d9e774
|
fix: 每轮点击数从9降到6,匹配萤石并发上限避免超发空转
|
2026-09-18 20:58:55 +08:00 |
|
yuming
|
028fcbe990
|
fix: 修复批量下载漏检测稀疏行和底部半行
根因:
1. std 横向采样区 x=350-1050 不覆盖左列卡片(中心x=201),
导致只有左列有卡片的稀疏行 std 被拉低到27,低于阈值28被误判为间隙
2. 扫描范围 ROW_Y1=2300 太靠上,底部半行被边缘过滤
3. 每轮只处理前3行(full_rows[:3]),后续行即使检测到也被跳过
修复:
- ROW_STD_X0 350→50, ROW_STD_W 700→980(覆盖全部3列)
- ROW_STD_LOW 28→18(分组标签std=0不会误判)
- ROW_Y1 2300→2380(扩大底部扫描范围)
- 处理所有检测到的行,未打勾格子最多取前9个避免超并发
|
2026-09-18 18:05:33 +08:00 |
|
yuming
|
913b0c9ca7
|
test: 新增automate.py Pillow图像函数回归测试(9个用例)
覆盖 detect_card_rows 行检测、count_blue_pixels 蓝勾检测、
sample_rgb_from_file 像素采样、std_profile 标准差剖面、
date_label_hash/screenshot_hash 哈希稳定性。全部通过。
|
2026-09-18 16:13:22 +08:00 |
|
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 |
|