use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use crate::types::RerankCandidate;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RerankResult {
pub hits: Vec<RerankHit>,
pub stats: RerankStats,
pub reranker: String,
pub latency_ms: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RerankHit {
pub candidate_id: String,
pub score: f32,
pub score_breakdown: Option<ScoreBreakdown>,
pub candidate: RerankCandidate,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ScoreBreakdown {
pub signals: Vec<SignalScore>,
pub final_score: f32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SignalScore {
pub name: String,
pub raw_score: f32,
pub weight: f32,
pub contribution: f32,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RerankStats {
pub total_candidates: usize,
pub filtered_out: usize,
pub max_score: f32,
pub min_score: f32,
pub avg_score: f32,
pub median_score: f32,
pub signal_timings: HashMap<String, u64>,
}