docs: update docs_v1.0/ documentation

- 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
This commit is contained in:
Warren
2026-04-30 15:10:41 +08:00
parent 8f05a7c188
commit 4d75b2e251
185 changed files with 21071 additions and 1605 deletions

View File

@@ -0,0 +1,249 @@
# 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 UUIDBirth 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 状态
```sql
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 启动
1. 检查 YOLO processor 错误日志
2. 启动 ASRX processor
3. 等待 processor_results 完成
### Phase 2: Rule 1 测试
1. 启动 Job Worker
2. 执行 Rule 1 处理
3. 验证 chunks metadata:
- speaker_id (来自 ASRX)
- yolo_objects (来自 YOLO)
- face_ids (来自 face_detections)
### Phase 3: Identity 绑定
1. 创建 identity_binding_v4.rs
2. Face → Identity 直接绑定
3. 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` | 删除旧表 | ✅ |
---
## 代码质量
### 编译验证
```bash
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 完整流程。