use serde::Serialize;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TeachingContext {
pub embedding_model_id: String,
pub active_profile_id: Option<i64>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct LearningAcknowledgement {
pub generation: u64,
pub event_ids: Vec<i64>,
pub message_key: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct FaceLearningStatus {
pub generation: u64,
pub trained_generation: u64,
pub status: String,
pub last_profile_id: Option<i64>,
pub last_candidate: Option<String>,
pub last_error: Option<String>,
pub feedback_needed: Option<String>,
pub pending_questions: usize,
pub active_profile: Option<ActiveProfile>,
pub summary: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct ActiveProfile {
pub profile_id: i64,
pub stage: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct TrainedProfileSummary {
pub profile_id: i64,
pub model_kind: String,
pub promoted: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
pub struct QuestionAnswerOutcome {
pub status: String,
pub acknowledgement: Option<LearningAcknowledgement>,
}
#[derive(Serialize, Clone)]
pub struct PersonData {
pub label: String,
pub full_name: String,
pub face_ids: Vec<i64>,
pub representative_id: i64,
pub hashes: Vec<String>,
}
#[derive(Serialize, Clone)]
pub struct ClusterData {
pub cluster_id: i64,
pub face_ids: Vec<i64>,
pub hashes: Vec<String>,
}
#[derive(Serialize, Clone)]
pub struct SingletonData {
pub face_id: i64,
pub hash: String,
}
#[derive(Serialize, Clone, Default)]
pub struct FacesData {
pub people: Vec<PersonData>,
pub clusters: Vec<ClusterData>,
pub singletons: Vec<SingletonData>,
}
#[derive(Serialize, Clone)]
pub struct ClusterFaceData {
pub face_id: i64,
pub hash: String,
pub path: String,
}
#[derive(Serialize, Clone)]
pub struct ClusterDetail {
pub cluster_id: i64,
pub faces: Vec<ClusterFaceData>,
}
#[derive(Serialize, Clone)]
pub struct PersonFaceData {
pub face_id: i64,
pub hash: String,
pub path: String,
pub is_primary: bool,
}
#[derive(Serialize, Clone)]
pub struct PersonDetail {
pub label: String,
pub full_name: String,
pub faces: Vec<PersonFaceData>,
}