synth_ai_core/data/
rewards.rs1use super::enums::{RewardSource, RewardType};
7use serde::{Deserialize, Serialize};
8use serde_json::Value;
9use std::collections::HashMap;
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct OutcomeRewardRecord {
14 pub session_id: String,
16 pub total_reward: f64,
18 #[serde(default = "default_objective_key")]
20 pub objective_key: String,
21 #[serde(default)]
23 pub achievements_count: i32,
24 #[serde(default)]
26 pub total_steps: i32,
27 #[serde(default)]
29 pub metadata: HashMap<String, Value>,
30 #[serde(default)]
32 pub annotation: HashMap<String, Value>,
33 #[serde(default)]
35 pub created_at: Option<String>,
36}
37
38fn default_objective_key() -> String {
39 "reward".to_string()
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct EventRewardRecord {
45 pub event_id: String,
47 pub session_id: String,
49 pub reward_value: f64,
51 #[serde(default = "default_objective_key")]
53 pub objective_key: String,
54 #[serde(default)]
56 pub reward_type: Option<RewardType>,
57 #[serde(default)]
59 pub key: Option<String>,
60 #[serde(default)]
62 pub turn_number: Option<i32>,
63 #[serde(default)]
65 pub source: Option<RewardSource>,
66 #[serde(default)]
68 pub annotation: HashMap<String, Value>,
69 #[serde(default)]
71 pub created_at: Option<String>,
72}
73
74#[derive(Debug, Clone, Default, Serialize, Deserialize)]
76pub struct RewardAggregates {
77 pub mean: f64,
78 #[serde(default)]
79 pub median: f64,
80 #[serde(default)]
81 pub std: f64,
82 #[serde(default)]
83 pub n: i32,
84 #[serde(default)]
85 pub min_value: Option<f64>,
86 #[serde(default)]
87 pub max_value: Option<f64>,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
92pub struct CalibrationExample {
93 pub session_trace: Value,
95 pub event_rewards: Vec<f64>,
97 pub outcome_reward: f64,
99 #[serde(default)]
101 pub metadata: HashMap<String, Value>,
102}
103
104#[derive(Debug, Clone, Serialize, Deserialize)]
106pub struct GoldExample {
107 pub summary: String,
109 pub gold_score: f64,
111 pub gold_reasoning: String,
113 #[serde(default)]
115 pub session_trace: Option<Value>,
116 #[serde(default)]
118 pub metadata: HashMap<String, Value>,
119}