Files
momentry_core/src/core/tkg/models.rs
T
Accusys b98a362de5 refactor: cargo fmt across 27 files + behavioral fixes
Behavioral changes:
- postgres_db: reorder default processors (cut first), prevent overwriting completed status
- qdrant_db: fix scroll pagination exit condition (next.is_none())
- job_worker: add idempotency guards for face trace / TKG build; better error logging
- main.rs: add LineWriter for stdout buffering

Remaining diff is cargo fmt reformatting (line wrapping, import ordering).
2026-07-11 02:03:28 +08:00

106 lines
3.2 KiB
Rust

use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TkgOperationLog {
pub id: i64,
pub file_uuid: String,
pub operation: String,
pub node_type: Option<String>,
pub edge_type: Option<String>,
pub nodes_created: i32,
pub nodes_updated: i32,
pub nodes_deleted: i32,
pub edges_created: i32,
pub edges_updated: i32,
pub edges_deleted: i32,
pub status: String,
pub error_message: Option<String>,
pub started_at: String,
pub completed_at: Option<String>,
pub properties: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Default)]
pub struct TkgNodeStats {
pub created: i32,
pub updated: i32,
pub deleted: i32,
}
#[derive(Debug, Clone, Default)]
pub struct TkgEdgeStats {
pub created: i32,
pub updated: i32,
pub deleted: i32,
}
#[derive(Debug, Clone, Default)]
pub struct TkgBuildStats {
pub face_track_nodes: i32,
pub gaze_track_nodes: i32,
pub lip_track_nodes: i32,
pub text_region_nodes: i32,
pub appearance_trace_nodes: i32,
pub accessory_nodes: i32,
pub object_nodes: i32,
pub hand_nodes: i32,
pub speaker_nodes: i32,
pub co_occurrence_edges: i32,
pub speaker_face_edges: i32,
pub face_face_edges: i32,
pub mutual_gaze_edges: i32,
pub lip_sync_edges: i32,
pub has_appearance_edges: i32,
pub wears_edges: i32,
pub hand_object_edges: i32,
}
impl TkgBuildStats {
pub fn total_nodes(&self) -> i32 {
self.face_track_nodes
+ self.gaze_track_nodes
+ self.lip_track_nodes
+ self.text_region_nodes
+ self.appearance_trace_nodes
+ self.accessory_nodes
+ self.object_nodes
+ self.hand_nodes
+ self.speaker_nodes
}
pub fn total_edges(&self) -> i32 {
self.co_occurrence_edges
+ self.speaker_face_edges
+ self.face_face_edges
+ self.mutual_gaze_edges
+ self.lip_sync_edges
+ self.has_appearance_edges
+ self.wears_edges
+ self.hand_object_edges
}
pub fn to_json(&self) -> serde_json::Value {
serde_json::json!({
"face_track_nodes": self.face_track_nodes,
"gaze_track_nodes": self.gaze_track_nodes,
"lip_track_nodes": self.lip_track_nodes,
"text_region_nodes": self.text_region_nodes,
"appearance_trace_nodes": self.appearance_trace_nodes,
"accessory_nodes": self.accessory_nodes,
"object_nodes": self.object_nodes,
"hand_nodes": self.hand_nodes,
"speaker_nodes": self.speaker_nodes,
"co_occurrence_edges": self.co_occurrence_edges,
"speaker_face_edges": self.speaker_face_edges,
"face_face_edges": self.face_face_edges,
"mutual_gaze_edges": self.mutual_gaze_edges,
"lip_sync_edges": self.lip_sync_edges,
"has_appearance_edges": self.has_appearance_edges,
"wears_edges": self.wears_edges,
"hand_object_edges": self.hand_object_edges,
"total_nodes": self.total_nodes(),
"total_edges": self.total_edges(),
})
}
}