systemprompt_analytics/models/reporting/
request.rs1use chrono::{DateTime, Utc};
7use serde::{Deserialize, Serialize};
8use sqlx::FromRow;
9use systemprompt_identifiers::{AiRequestId, ContextId, UserId};
10
11#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
12pub struct RequestStatsRow {
13 pub total: i64,
14 pub total_tokens: Option<i64>,
15 pub input_tokens: Option<i64>,
16 pub output_tokens: Option<i64>,
17 pub reasoning_tokens: Option<i64>,
18 pub cache_read_tokens: Option<i64>,
19 pub cache_creation_tokens: Option<i64>,
20 pub cost: Option<i64>,
21 pub avg_latency: Option<f64>,
22 pub cache_hits: i64,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
26pub struct ModelUsageRow {
27 pub provider: String,
28 pub model: String,
29 pub request_count: i64,
30 pub total_tokens: Option<i64>,
31 pub total_cost: Option<i64>,
32 pub avg_latency: Option<f64>,
33}
34
35#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
36pub struct RequestTrendRow {
37 pub created_at: DateTime<Utc>,
38 pub tokens_used: Option<i32>,
39 pub cost_microdollars: Option<i64>,
40 pub latency_ms: Option<i32>,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
44pub struct RequestListRow {
45 pub id: AiRequestId,
46 pub provider: Option<String>,
47 pub model: Option<String>,
48 pub input_tokens: Option<i32>,
49 pub output_tokens: Option<i32>,
50 pub cost_microdollars: Option<i64>,
51 pub latency_ms: Option<i32>,
52 pub cache_hit: Option<bool>,
53 pub created_at: DateTime<Utc>,
54 pub status: String,
55 pub error_message: Option<String>,
56 pub user_id: UserId,
57}
58
59#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
60pub struct CostSummaryRow {
61 pub requests: i64,
62 pub cost: Option<i64>,
63 pub tokens: Option<i64>,
64 pub reasoning_tokens: Option<i64>,
65 pub cache_read_tokens: Option<i64>,
66 pub cache_creation_tokens: Option<i64>,
67}
68
69#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
70pub struct PreviousCostRow {
71 pub cost: Option<i64>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
75pub struct CostBreakdownRow {
76 pub name: String,
77 pub cost: i64,
78 pub requests: i64,
79 pub tokens: i64,
80}
81
82#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
83pub struct ContextSummaryRow {
84 pub conversations: i64,
85 pub ai_requests: i64,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
89pub struct ContextGroupRow {
90 pub name: String,
91 pub conversations: i64,
92 pub ai_requests: i64,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize, FromRow)]
96pub struct RecentContextRow {
97 pub context_id: ContextId,
98 pub last_activity: DateTime<Utc>,
99 pub ai_requests: i64,
100 pub model: Option<String>,
101 pub agent_name: Option<String>,
102 pub context_name: Option<String>,
103}
104
105#[derive(Debug, Clone, Copy, Serialize, Deserialize, FromRow)]
106pub struct CostTrendRow {
107 pub created_at: DateTime<Utc>,
108 pub cost_microdollars: Option<i64>,
109 pub tokens_used: Option<i32>,
110}