docs: 同步事件时间轴删除视频功能到 README/PROGRESS
补充 §5.1/§5.2 新增的 POST /api/oracle/video/delete + DELETE /api/ui/videos/<id> 端点说明、FAM-UI 页面表格、§12 当前进度;PROGRESS.md 记录完整变更 + 端到端 验证过程。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
17
PROGRESS.md
17
PROGRESS.md
@@ -1,17 +1,28 @@
|
||||
# 项目进度追踪
|
||||
|
||||
> 最后更新: 2026-08-23
|
||||
> 最后更新: 2026-08-24
|
||||
|
||||
## 服务运行状态
|
||||
|
||||
| 服务 | 节点 | 地址 | 状态 | 验证结果 |
|
||||
|------|------|------|------|---------|
|
||||
| FAM-Core | NAS | 0.0.0.0:8000 | ✅ 运行中 | health=ok, gunicorn 单 worker;Oracle-Sync + MotionNotifier 轮询 SS 事件推送(游标 DB 续用/失败重试) |
|
||||
| FAM-Edge | Oracle | 0.0.0.0:5000 | ✅ 运行中 | systemd 守护(fam-edge.service);素材→运动片段分割→只分析片段;问答改为转发 AI-Gateway;队列消费正常 |
|
||||
| FAM-Core | NAS | 0.0.0.0:8000 | ✅ 运行中 | health=ok, gunicorn 单 worker;Oracle-Sync + MotionNotifier 轮询 SS 事件推送(游标 DB 续用/失败重试);已部署事件时间轴删除功能 |
|
||||
| FAM-Edge | Oracle | 0.0.0.0:5000 | ✅ 运行中 | systemd 守护(fam-edge.service);素材→运动片段分割→只分析片段;问答改为转发 AI-Gateway;队列消费正常;已部署 `/api/oracle/video/delete` |
|
||||
| **AI-Gateway** | Oracle | 0.0.0.0:5100 | ✅ 运行中 | systemd 守护(ai-gateway.service),2026-08-23 新增;独立仓库/独立部署;`/health` 正常,端到端问答实测成功(provider=nvidia) |
|
||||
| MariaDB | NAS | 127.0.0.1:3306 | ✅ 运行中 | 10.11.11, 6 张表, utf8mb4 |
|
||||
| Ollama | Oracle | 127.0.0.1:11434 | ✅ 运行中 | qwen2.5:7b,仅智能问答兜底(不参与视觉/融合);**被 AI-Gateway 调用,不再被 FAM-Edge 直接调用** |
|
||||
|
||||
## 2026-08-24 事件时间轴支持删除视频会话
|
||||
|
||||
- **决策**:用户要求事件时间轴能删除某个视频会话;调研确认项目里没有任何 delete 类端点先例,且增量同步(`get_sync_delta`)只做 upsert 感知不到 Oracle 端的物理删除,NAS 镜像必须显式清理,不能靠 `trigger_now()` 拉增量。用户明确要求连同磁盘上的视频文件一起删除,明确选择不做"防止误删事件被重新分割"的额外保护机制(风险极低:素材一旦标记 done 就不会被生产者重新捡起)
|
||||
- **三端实现**(commit `28397e9`):
|
||||
- fam-edge:`oracle_db.py` 新增 `delete_video(video_id)`(写锁保护,先删 events 再删 videos,再删磁盘文件;不清理 `ss_motion_events` 源事件);`api_gateway.py` 新增 `POST /api/oracle/video/delete`
|
||||
- fam-core:`oracle_sync.py` 新增 `push_video_delete()`;`db_layer.py` 新增 `delete_sync_video()`(项目里第一个"NAS 直接写自己镜像表"的函数);`ui_api.py` 新增 `DELETE /api/ui/videos/<id>`(先回推 Oracle 成功后才清本地镜像,回推失败 502 不改本地状态,避免数据不一致)
|
||||
- fam-ui:`Timeline.vue` 详情卡片新增"🗑 删除会话"按钮(原生 `confirm()` 二次确认,删除成功后从本地列表移除 + 重新选中 + 刷新统计卡);`api.js` 新增 `deleteVideo()`
|
||||
- **测试**:`test_oracle_db.py` 新增 6 个 `delete_video` 单元测试(正常删除/磁盘文件删除/文件已缺失不报错/不存在返回 None/不影响 ss_motion_events);fam-edge 全量 130/130 通过
|
||||
- **端到端验证**:全程用自造测试数据(`motion_TESTDELETE*`),未触碰任何真实监控记录——Oracle 侧直接调 `/api/oracle/video/delete` 验证记录+文件删除+幂等 404;NAS 侧手动插入镜像行模拟已同步状态,登录后调 `DELETE /api/ui/videos/<id>`,验证 Oracle 记录+文件、NAS 镜像记录均被清理
|
||||
- **已知限制**:前端浏览器 UI 层面未做可视化验证(fam-core 全站要求登录,出于"不代用户输入密码"的原则没有走浏览器交互式登录),只验证了 `npm run build` 编译通过 + 完整 API 链路
|
||||
|
||||
## 2026-08-23 问答链路抽离为独立 ai-gateway 服务
|
||||
|
||||
- **决策**:原本嵌在 FAM-Edge 里的问答模型降级链(NVIDIA 文字模型链 → Gemini 非 flash 文字模型链 → 本地 Ollama 兜底,含 key 轮换/熔断)跟视频分析业务无关,是通用能力,抽成独立服务(OpenAI 兼容协议 `/v1/chat/completions`),除了 FAM-Edge 自己(改为转发调用),别的项目也能直接接入
|
||||
|
||||
Reference in New Issue
Block a user