docs: update PROGRESS.md - 时区统一北京时区修复

This commit is contained in:
ericwyuan
2026-08-20 17:42:35 +08:00
parent 795e8acc6c
commit 3817609d1b

View File

@@ -1,6 +1,6 @@
# 项目进度追踪
> 最后更新: 2026-08-20 17:25
> 最后更新: 2026-08-20 17:45
## 服务运行状态
@@ -161,6 +161,22 @@
19. **chunk_size 变更防护** - Edge 端 upload_chunk 检测 total_chunks 变更(由 chunk_size 变化导致),自动清理旧分块防止混合不同大小分块导致 assemble 后文件损坏。NAS 端 _query_uploaded_chunks 比对 expected_total != edge_total 时跳过断点续传
20. **看门狗机制** - app.py 启动 daemon 看门狗线程,每 60s 检查 scheduler/dispatcher/poller 线程 is_alive(),崩溃自动 check_and_restart()。/api/status 改用 thread.is_alive() 替代 _running 标志,防止线程假死误报
## 时区统一北京时区 (2026-08-20 17:45, commit 795e8ac)
**背景**: Oracle Edge 机器实际为 UTC 时区(非凤凰城 MSTNAS 与视频均为北京时间,网页要求统一北京时区。
**排查结论**: NAS 端dispatcher 的 `fromtimestamp(mtime)`、MariaDB NOW()、db_layer `_dt.now()`)与 UI直读 MariaDB 时间全部正确——正常链路数据无误event 15/16/18/19 验证)。问题集中在 Edge 端UTC 机器)三处:
| # | 位置 | 问题 | 修复 |
|---|------|------|------|
| 1 | queue_manager7 处) | `datetime('now','localtime')` 在 UTC 机器=UTC队列时间戳慢 8h | 改 `datetime('now','+8 hours')`SQLite 原生时区修饰符) |
| 2 | compute_timestamps fallback | event_start_time 缺失时用 Edge 本地时间(UTC) | 改 `datetime.now(timezone(+8h))`ISO 带时区输入统一转北京 |
| 3 | nvidia_adapter._ts_to_seconds | 不支持生产格式 `YYYY-MM-DD HH:MM:SS`,解析全失败→集锦永远为空→视频模式永远降级逐帧(上一轮引入的 bugHH:MM:SS 测试格式未暴露) | partition 取时间部分drawtext 标签/提示词同步完整时间戳 |
**数据修正**: event 17task 298 手动测试缺 event_start_time 导致 start=end=落库时刻、frame 全 UTC按视频文件名 04:34:10 重算Edge 队列存量时间戳 +8h。
**验证**: 单测三例通过;部署后 task 41 队列时间正确写入北京时间 17:36:52。注意 SQLite `+8 hours` 修饰符写入的是 wall-clock 北京时间,与 MariaDB/SYSTEM 时区无关。
## NVIDIA 原生视频输入切换 (2026-08-20 17:25, commit 55633d3)
**调研结论**(免费托管 API `integrate.api.nvidia.com`40 RPM 无限次调用):