use super::builder::AgentService;
use uuid::Uuid;
impl AgentService {
pub(super) fn record_tool_feedback(
&self,
session_id: Uuid,
tool_name: &str,
success: bool,
error_snippet: Option<&str>,
) {
let pool = self.context.pool();
let sid = session_id.to_string();
let tname = tool_name.to_string();
let meta = error_snippet.map(|s| s.chars().take(500).collect::<String>());
tokio::spawn(async move {
let repo = crate::db::repository::FeedbackLedgerRepository::new(pool);
let event = if success {
"tool_success"
} else {
"tool_failure"
};
let val = if success { 1.0 } else { 0.0 };
if let Err(e) = repo.record(&sid, event, &tname, val, meta.as_deref()).await {
tracing::debug!("feedback ledger write failed: {e}");
}
});
}
pub(super) fn record_provider_feedback(
&self,
session_id: Uuid,
event_type: &str,
dimension: &str,
metadata: Option<&str>,
) {
let pool = self.context.pool();
let sid = session_id.to_string();
let et = event_type.to_string();
let dim = dimension.to_string();
let meta = metadata.map(|s| s.chars().take(500).collect::<String>());
tokio::spawn(async move {
let repo = crate::db::repository::FeedbackLedgerRepository::new(pool);
if let Err(e) = repo.record(&sid, &et, &dim, 0.0, meta.as_deref()).await {
tracing::debug!("feedback ledger write failed: {e}");
}
});
}
}