Oracle→NAS 增量同步反复报 (1062, "Duplicate entry '1073-汤圆' for key 'uq_video_raw_uid'"),整批失败、游标永不推进,同步状态页卡在"同步中"。 根因:sync_identity_map 以 Oracle person_identity_map.id(代理自增键) 作 NAS 主键,但 Oracle 库重建/恢复后这个 id 会被复用——实测 Oracle 现在 的 id=744 对应 (1073,'汤圆'),NAS 上 id=744 还是旧的 (1302,'人物E')。 upsert 先按 PK id 命中旧行,UPDATE 成 (1073,'汤圆') 后与已存在的同名行 在 uq_video_raw_uid 上二次冲突。 修复:镜像表改为 NAS 本地自增 id 主键,业务键 (video_id, raw_uid) 唯一, Oracle 的 id 只落 oracle_id 列做溯源;upsert 的 UPDATE 子句不再改写 video_id/raw_uid 这两个键列,只更新 oracle_id/canonical_name/source 等。 ddl.sql 同步更新表定义。 已在 NAS 上完成现网迁移(ADD COLUMN oracle_id -> 回填 -> 主键改自增)并 验证:补拉同步成功恢复,游标正常推进,手动触发同步验证通过。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
21 lines
1.6 KiB
Markdown
21 lines
1.6 KiB
Markdown
# 2026-08-25 工作日志
|
||
|
||
## 前端迁移收尾 + 登录故障修复
|
||
- **前端最终落点**:云服务器 129.146.26.249 的 Caddy :80(`http://129.146.26.249/`),
|
||
SPA 静态在 `/var/www/fam-ui`,`/api/*` 经 frp 隧道反代回 NAS fam-core :8000。
|
||
**注意:新服务器 :8000 是 frp 隧道口(直通 NAS API),不是前端入口**,登录请用 :80。
|
||
- **登录失败根因**:重启 fam-core 时 FAM_AUTH_USER/FAM_AUTH_PASS 未固化进 .env →
|
||
auth.py fail-closed(未配置即拒绝所有登录)→ 全部 401。已补进
|
||
`/volume1/web/sentinel-home-ai/.env`(5 键:ORACLE_SYNC_TOKEN/DSM_ACCOUNT/DSM_PASSWORD/
|
||
FAM_AUTH_USER/FAM_AUTH_PASS=ericwyuan/iLoveJava5)并重启,登录恢复 200。
|
||
- **旧 IP 清理**:本地仓库 config.yaml(4 处)+ chat_handler/motion_notifier/oracle_sync
|
||
兜底默认值 + docs/DEPLOY.md + PROGRESS.md 共 6 文件旧 IP 129.146.203.203 → 129.146.26.249,
|
||
已清 __pycache__。仓库/部署/README 三处一致。**未提交**。
|
||
- 孤儿云库 sentinel_home_ai + famcore 用户已 DROP(新服务器)。
|
||
- SS Webhook:代码中为可选补充(motion_bp.py 文档明确),SS 未配行动规则故休眠,
|
||
是否删除待用户拍板。
|
||
- **用户拍板:删除 webhook + NAS 前端托管,并已提交推送**(两个 commit 已 push 到 Gitea:
|
||
`7948f55` docs 迁移文档、`cf3d145` refactor 移除 webhook/static_app 共删 329 行)。
|
||
**待办:代码尚未部署到 NAS**——需同步 fam-core 到 NAS、删 NAS fam-ui 目录 + start_ui.sh、
|
||
重启 fam-core 验证 /api 与登录(云端 :80 前端不受影响)。
|