feat: Phase 2.6 edges migration to Qdrant (TKG-only architecture)

Phase 2.6.1: co_occurrence_edges migration
- build_co_occurrence_edges_from_qdrant()
- Qdrant embeddings → frame grouping → YOLO objects
- Result: 6679 edges (vs 6701 PostgreSQL)

Phase 2.6.2: face_face_edges migration
- build_face_face_edges_from_qdrant()
- Qdrant embeddings → frame grouping → face pairs
- mutual_gaze detection preserved
- Result: 6 edges (exact match)

Phase 2.6.3: speaker_face_edges migration
- build_speaker_face_edges_from_qdrant()
- Qdrant embeddings → trace_id frame ranges
- SPEAKS_AS edge creation

Architecture:
- All edges use Qdrant payload (no face_detections queries)
- PostgreSQL fallback for empty Qdrant
- Estimated 3.6x performance improvement

Testing:
- Playground (3003): ✓ All Phase 2.6 logs verified
- Edge counts: ✓ Close match with PostgreSQL
- Fallback: ✓ Working

Docs:
- docs_v1.0/DESIGN/TKG_PHASE2_6_EDGES_MIGRATION.md
- docs_v1.0/M4_workspace/2026-06-21_phase2_6_test.md
This commit is contained in:
Accusys
2026-06-21 04:47:49 +08:00
parent 0afc70fc5b
commit 2cfcfdd1af
2926 changed files with 8311054 additions and 1390 deletions
+3 -24
View File
@@ -17,7 +17,7 @@ fn init_tracing() {
}
fn load_env() {
let _ = dotenv::from_filename("/Users/accusys/momentry_core_0.1/.env");
let _ = dotenv::from_filename("/Users/accusys/momentry_core/.env");
}
use cli::*;
@@ -116,13 +116,8 @@ async fn main() -> Result<()> {
} => {
handle_gitea(action, username, password, token_name, scopes).await?;
}
Commands::N8n {
action,
api_key,
label,
expires_in_days,
} => {
handle_n8n(action, api_key, label, expires_in_days).await?;
Commands::Agent { tool, args } => {
cli::agent::handle_agent(&tool, &args).await?;
}
Commands::Detect {
image,
@@ -360,19 +355,3 @@ async fn handle_gitea(
// TODO: Implement Gitea logic
Ok(())
}
/// Handle n8n command
async fn handle_n8n(
action: N8nAction,
api_key: Option<String>,
label: Option<String>,
expires_in_days: Option<i64>,
) -> Result<()> {
println!("n8n action: {:?}", action);
println!("API key: {:?}", api_key);
println!("Label: {:?}", label);
println!("Expires in days: {:?}", expires_in_days);
// TODO: Implement n8n logic
Ok(())
}