- Fix markdown lint issues (MD030, MD047, MD051, MD028, MD005) - Update AI agents, architecture, implementation docs - Add new identity, face recognition, and API documentation - Remove deprecated face/person API guides
6.3 KiB
6.3 KiB
V4.0 Migration 问题追踪报告
Date: 2026-04-28 20:50 Status: Phase 1 + Phase 2 完成,数据源问题修复中
已完成工作
Phase 1: 术语统一 (video_uuid → file_uuid)
| 类别 | 数量 | 状态 |
|---|---|---|
| Rust 代码 | 11 文件 | ✅ 完成 |
| Portal (PHP) | 6 文件 | ✅ 完成 |
| 文档 | 117 处 | ✅ 完成 |
| Migration 025 | DB 列重命名 | ✅ 完成 |
Phase 2: 架构简化 (person_identities 删除)
| 类别 | 状态 |
|---|---|
| Migration 026 | file_identities 表创建 ✅ |
| Migration 027 | identities.identity_id 添加 ✅ |
| Migration 028 | person_identities 删除 ✅ |
| SQLx Cache | 已更新 ✅ |
今日修复
| 问题 | 分析报告 | 修复状态 |
|---|---|---|
| UUID 长度问题 | UUID_LENGTH_ISSUE.md |
✅ 分析完成(保持兼容) |
| Videos 表命名 | VIDEOS_TABLE_NAMING_ISSUE.md |
✅ 分析完成(保持现状) |
| Rule 1 Face 数据源 | RULE1_FACE_DATA_SOURCE_FIX.md |
✅ 修复完成 |
发现的问题
问题 1: UUID 长度不一致
现象:
- 20 个 video 使用 16-char UUID(旧格式)
- 7479 个 video 使用 32-char UUID(Birth UUID)
示例: 384b0ff44aaaa1f14cb2cd63b3fea966 (16-char)
原因:
compute_uuid()取 SHA256[0:16]compute_birth_uuid()取 SHA256[0:32]
决策: 保持兼容模式(不强制迁移)
影响:
- Birth UUID 功能受限(
is_birth_uuid()返回 false) - 跨设备同步不支持
问题 2: 表命名不一致
现象:
- 表名:
videos - 术语:
file_uuid
原因: Phase 1 迁移计划缺失表重命名
对比: talents → identities 已完成,但 videos → files 未执行
决策: 短期保持现状,中期添加别名,长期完整重命名
影响:
- 文档与代码不一致
- 新开发者困惑
问题 3: Rule 1 数据源不匹配
现象:
- Face 数据在 face_detections 表
- rule1_ingest.rs 从 pre_chunks 读取
修复: fetch_face_frames() 改为从 face_detections 读取
验证: 编译通过,数据源正确
遗留: YOLO/ASRX 数据缺失
Processor 状态 (384b0ff44aaaa1f14cb2cd63b3fea966)
| Processor | processor_results | chunks_produced | 数据源状态 |
|---|---|---|---|
| ASR | completed | 3664 | pre_chunks ✅ |
| CUT | completed | 1332 | pre_chunks ✅ |
| Face | failed | 0 | face_detections 有 78 条 ⚠️ |
| YOLO | failed | 0 | pre_chunks 缺失 ❌ |
| OCR | failed | 0 | pre_chunks 缺失 ❌ |
| ASRX | 未运行 | - | pre_chunks 缺失 ❌ |
Rule 1 数据可用性
| 数据类型 | 可用 | Rule 1 可用 |
|---|---|---|
| ASR segments | ✅ 3664 | ✅ |
| CUT segments | ✅ 1332 | ✅ |
| Face frames | ✅ 78 (修复后) | ✅ |
| YOLO frames | ❌ 0 | ❌ → metadata.yolo_objects = [] |
| ASRX segments | ❌ 0 | ❌ → metadata.speaker_id = "UNKNOWN" |
待解决问题
高优先级
| 问题 | 影响 | 解决方案 |
|---|---|---|
| YOLO processor failed | YOLO objects 缺失 | 检查错误日志,修复 processor |
| ASRX processor 未运行 | Speaker ID 缺失 | 启动 ASRX processor |
| 2 个 Rule1 jobs QUEUED | Rule 1 未执行 | 启动 Job Worker |
中优先级
| 问题 | 影响 | 解决方案 |
|---|---|---|
| Face processor failed | processor_results 记录错误 | 检查错误原因 |
| chunks metadata 空 | Face/Speaker 未绑定 | 重新运行 Rule 1 |
低优先级
| 问题 | 影响 | 解决方案 |
|---|---|---|
| 20 个 16-char UUID | Birth UUID 功能受限 | 长期迁移计划 |
| videos 表命名 | 术语不一致 | 长期重命名计划 |
Jobs 状态
SELECT id, status, rule, created_at
FROM dev.jobs
WHERE asset_uuid = '384b0ff44aaaa1f14cb2cd63b3fea966';
-- Result:
id: 9e5df703... status: QUEUED, rule: rule1, created: 2026-04-21 19:04
id: 751d90b5... status: QUEUED, rule: rule1, created: 2026-04-21 16:54
问题: Job Worker 可能未运行
下一步计划
Phase 1: Processor 启动
- 检查 YOLO processor 错误日志
- 启动 ASRX processor
- 等待 processor_results 完成
Phase 2: Rule 1 测试
- 启动 Job Worker
- 执行 Rule 1 处理
- 验证 chunks metadata:
- speaker_id (来自 ASRX)
- yolo_objects (来自 YOLO)
- face_ids (来自 face_detections)
Phase 3: Identity 绑定
- 创建 identity_binding_v4.rs
- Face → Identity 直接绑定
- Chunk 自动绑定
相关文档
| 文档 | 说明 |
|---|---|
docs_v1.0/UUID_LENGTH_ISSUE.md |
UUID 长度问题分析 |
docs_v1.0/VIDEOS_TABLE_NAMING_ISSUE.md |
表命名问题分析 |
docs_v1.0/RULE1_FACE_DATA_SOURCE_FIX.md |
Face 数据源修复 |
docs_v1.0/RULE1_CHUNK_INGESTION_CHECK.md |
Rule 1 问题分析 |
docs_v1.0/RULE1_TRIGGER_MECHANISM.md |
Rule 1 启动机制 |
docs_v1.0/V4_MIGRATION_COMPLETE.md |
Migration 完成报告 |
统计数据
数据库记录
| 表 | 记录数 | 备注 |
|---|---|---|
| videos | 7499 | 20 个 16-char UUID |
| face_detections | 78 (384b0ff44...) | 通用数据 |
| chunks | 3664 | sentence 类型 |
| pre_chunks | 4996 | ASR + CUT |
Migration 文件
| 文件 | 说明 | 状态 |
|---|---|---|
025_rename_video_uuid_to_file_uuid.sql |
列重命名 | ✅ |
026_create_file_identities_table.sql |
file_identities 表 | ✅ |
027_add_identity_id_to_identities.sql |
identity_id 列 | ✅ |
028_drop_person_identities_table.sql |
删除旧表 | ✅ |
代码质量
编译验证
cargo check --lib # ✅ Passed (warnings only)
cargo test --lib # ✅ 178 tests passed
cargo clippy --lib # ✅ Passed
未修改文件
- identity_binding_v4.rs(已删除,待重写)
- Job Worker(待检查运行状态)
结论
已完成:
- ✅ V4.0 Migration Phase 1 + Phase 2
- ✅ UUID 长度问题分析(决策:保持兼容)
- ✅ Videos 表命名问题分析(决策:保持现状)
- ✅ Rule 1 Face 数据源修复
待处理:
- 🔧 YOLO/ASRX processor 启动
- 🔧 Job Worker 启动
- 🔧 Rule 1 测试验证
建议: 先解决 Processor 问题,再测试 Rule 1 完整流程。