# 2026-08-20 工作记录 ## NAS 瘦身 + 甲骨文同步(架构重构收尾,任务 #49/#50/#57/#59) 完成 NAS 端从「视频处理节点」到「纯管理后台」的改造: ### fam-core(NAS)改动 - 删除:scheduler / dispatcher / poller / event_receiver / video_server 五个模块 + tools/ 下 backfill 脚本(不再切片/抽帧/上传/提供视频下载) - 新增 `oracle_sync.py`:唯一后台线程,每 30 分钟 `GET /api/oracle/sync?since=&token=` 拉增量 → upsert 到本地 MariaDB `sync_*` 镜像表 → 推进 `sync_cursor`;`push_name_correct` 回推命名校正 - `db_layer.py` 重写:移除 process_tasks/event_details/monitor_events/family_members 旧逻辑,新增 sync_videos/sync_events/sync_people/sync_cursor 的 upsert/查询、`get_sync_stats`、`query_sync_events_for_person_date`、`get_sync_known_members_context` - `member_manager.py`:命名/合并改回推 Oracle `/api/oracle/people/correct` + 即时 trigger_now 拉回 - `chat_handler.py`:上下文改查 sync_events(按 person_list_json + 视频日期过滤),仍走 Oracle `/api/edge/chat/ask` - `app.py`:仅启动 OracleSync 线程,移除看门狗 - config:删除 scheduler/dispatcher/poller/video_server/storage,新增 `oracle_sync` 段(token 用 `${ORACLE_SYNC_TOKEN}` 环境变量) ### fam-ui(NAS)改动 - 改写读 sync_videos/sync_events/sync_people;事件时间轴改为「视频会话列表 + 事件时间线」(无帧图);人物管理移除照片逻辑(仅标签/规范名/命名/合并);统计改自 sync 表;侧边栏任务队列状态改为同步状态 ### DDL / 文档 - `scripts/ddl.sql` 新增 sync_videos / sync_events / sync_people / sync_cursor 四张镜像表(时间字段用 VARCHAR 规避 MariaDB 严格模式) - README §1.1/§2.2/§3.1/§3.2/§3.3/§4/§5/§8.3 全面更新到新数据流(Google 硬盘→rclone→甲骨文→同步→NAS 镜像) ### 提交 - `[阶段2]` fam-edge 重构(整视频分析+同步接口+人物服务)已 commit+push - `[阶段3]` fam-core 瘦身+Oracle-Sync+UI 改读 已 commit+push ### 待办(#51 部署验证,未做) - Oracle:rclone 配 Google 服务账号 JSON(orcLenas@gen-lang-client-0523399799.iam.gserviceaccount.com)→ systemd timer 定时同步到 /opt/fam-edge/gdrive_videos;设 ORACLE_SYNC_TOKEN 环境变量;重启 fam-edge - NAS:MariaDB 跑新 DDL 建 sync_* 表;设 ORACLE_SYNC_TOKEN;重启 fam-core + fam-ui;卸载 NAS venv 无用包(opencv/numpy 等) - 端到端验证:Google 硬盘新视频 → 甲骨文处理 → NAS 30 分钟同步可见 - 服务账号私钥未入库,部署时需单独落到 Oracle 服务器本地