1use serde::Deserialize;
4
5#[derive(Debug, Clone, Deserialize)]
9pub struct TaskInfo {
10 pub track_id: String,
11 pub status: String,
12 #[serde(default)]
13 pub progress: Option<TaskProgress>,
14 #[serde(default)]
15 pub message: Option<String>,
16 #[serde(default)]
17 pub document_id: Option<String>,
18 #[serde(default)]
19 pub task_type: Option<String>,
20 #[serde(default)]
21 pub created_at: Option<String>,
22 #[serde(default)]
23 pub error: Option<String>,
24}
25
26#[derive(Debug, Clone, Deserialize)]
28pub struct TaskProgress {
29 #[serde(default)]
30 pub current_step: Option<String>,
31 #[serde(default)]
32 pub percent_complete: Option<f64>,
33 #[serde(default)]
34 pub total_steps: Option<u32>,
35}
36
37#[derive(Debug, Clone, Deserialize)]
39pub struct TaskListResponse {
40 #[serde(default)]
41 pub tasks: Vec<TaskInfo>,
42 #[serde(default)]
43 pub total: u32,
44}
45
46#[derive(Debug, Clone, Deserialize)]
50pub struct PipelineStatus {
51 #[serde(default)]
52 pub is_busy: bool,
53 #[serde(default)]
54 pub total_documents: u32,
55 #[serde(default)]
56 pub processed_documents: u32,
57 #[serde(default)]
58 pub current_batch: u32,
59 #[serde(default)]
60 pub total_batches: u32,
61 #[serde(default)]
62 pub cancellation_requested: bool,
63 #[serde(default)]
64 pub pending_tasks: u32,
65 #[serde(default)]
66 pub processing_tasks: u32,
67 #[serde(default)]
68 pub completed_tasks: u32,
69 #[serde(default)]
70 pub failed_tasks: u32,
71}
72
73#[derive(Debug, Clone, Deserialize)]
75pub struct QueueMetrics {
76 #[serde(default)]
77 pub queue_depth: u32,
78 #[serde(default)]
79 pub processing: u32,
80 #[serde(default)]
81 pub completed_last_hour: u32,
82 #[serde(default)]
83 pub failed_last_hour: u32,
84 #[serde(default)]
85 pub avg_processing_time_ms: Option<f64>,
86}
87
88#[derive(Debug, Clone, Deserialize)]
92pub struct CostSummary {
93 #[serde(default)]
94 pub total_cost_usd: f64,
95 #[serde(default)]
96 pub total_tokens: u64,
97 #[serde(default)]
98 pub total_input_tokens: u64,
99 #[serde(default)]
100 pub total_output_tokens: u64,
101 #[serde(default)]
102 pub document_count: u32,
103 #[serde(default)]
104 pub query_count: u32,
105}
106
107#[derive(Debug, Clone, Deserialize)]
109pub struct CostEntry {
110 pub date: String,
111 #[serde(default)]
112 pub cost_usd: f64,
113 #[serde(default)]
114 pub tokens: u64,
115 #[serde(default)]
116 pub requests: u32,
117}
118
119#[derive(Debug, Clone, Deserialize)]
121pub struct BudgetInfo {
122 #[serde(default)]
123 pub monthly_budget_usd: Option<f64>,
124 #[serde(default)]
125 pub current_spend_usd: f64,
126 #[serde(default)]
127 pub remaining_usd: Option<f64>,
128}
129
130#[derive(Debug, Clone, Deserialize)]
134pub struct LineageNode {
135 pub id: String,
136 #[serde(default)]
137 pub name: Option<String>,
138 #[serde(default)]
139 pub node_type: Option<String>,
140}
141
142#[derive(Debug, Clone, Deserialize)]
144pub struct LineageEdge {
145 pub source: String,
146 pub target: String,
147 #[serde(default)]
148 pub relationship: Option<String>,
149}
150
151#[derive(Debug, Clone, Deserialize)]
153pub struct LineageGraph {
154 #[serde(default)]
155 pub nodes: Vec<LineageNode>,
156 #[serde(default)]
157 pub edges: Vec<LineageEdge>,
158 #[serde(default)]
159 pub root_id: Option<String>,
160}
161
162#[derive(Debug, Clone, Deserialize)]
169pub struct DocumentFullLineage {
170 pub document_id: String,
171 #[serde(default)]
172 pub metadata: Option<serde_json::Value>,
173 #[serde(default)]
174 pub lineage: Option<serde_json::Value>,
175}
176
177#[derive(Debug, Clone, Deserialize)]
182pub struct ChunkLineageInfo {
183 pub chunk_id: String,
184 #[serde(default)]
185 pub document_id: Option<String>,
186 #[serde(default)]
187 pub document_name: Option<String>,
188 #[serde(default)]
189 pub document_type: Option<String>,
190 #[serde(default)]
191 pub index: Option<u32>,
192 #[serde(default)]
193 pub start_line: Option<u32>,
194 #[serde(default)]
195 pub end_line: Option<u32>,
196 #[serde(default)]
197 pub start_offset: Option<u64>,
198 #[serde(default)]
199 pub end_offset: Option<u64>,
200 #[serde(default)]
201 pub token_count: Option<u32>,
202 #[serde(default)]
203 pub content_preview: Option<String>,
204 #[serde(default)]
205 pub entity_count: Option<u32>,
206 #[serde(default)]
207 pub relationship_count: Option<u32>,
208 #[serde(default)]
209 pub entity_names: Vec<String>,
210 #[serde(default)]
211 pub document_metadata: Option<serde_json::Value>,
212}
213
214#[derive(Debug, Clone, Deserialize)]
218pub struct ChunkDetail {
219 pub id: String,
220 #[serde(default)]
221 pub document_id: Option<String>,
222 #[serde(default)]
223 pub content: Option<String>,
224 #[serde(default)]
225 pub chunk_index: Option<u32>,
226 #[serde(default)]
227 pub token_count: Option<u32>,
228}
229
230#[derive(Debug, Clone, Deserialize)]
234pub struct ProvenanceRecord {
235 #[serde(default)]
236 pub entity_id: Option<String>,
237 #[serde(default)]
238 pub entity_name: Option<String>,
239 #[serde(default)]
240 pub document_id: Option<String>,
241 #[serde(default)]
242 pub chunk_id: Option<String>,
243 #[serde(default)]
244 pub extraction_method: Option<String>,
245 #[serde(default)]
246 pub confidence: Option<f64>,
247}
248
249#[derive(Debug, Clone, Deserialize)]
253pub struct ProviderStatus {
254 #[serde(default)]
255 pub current_provider: Option<String>,
256 #[serde(default)]
257 pub current_model: Option<String>,
258 #[serde(default)]
259 pub status: Option<String>,
260}
261
262#[derive(Debug, Clone, Deserialize)]
266pub struct ModelInfo {
267 pub name: String,
268 #[serde(default)]
269 pub provider: Option<String>,
270 #[serde(default)]
271 pub model_type: Option<String>,
272 #[serde(default)]
273 pub is_available: bool,
274 #[serde(default)]
275 pub display_name: Option<String>,
276 #[serde(default)]
277 pub description: Option<String>,
278 #[serde(default)]
279 pub deprecated: Option<bool>,
280}
281
282#[derive(Debug, Clone, Deserialize)]
284pub struct ProviderInfo {
285 pub name: String,
286 #[serde(default)]
287 pub display_name: Option<String>,
288 #[serde(default)]
289 pub models: Vec<ModelInfo>,
290}
291
292#[derive(Debug, Clone, Deserialize)]
294pub struct ProviderCatalog {
295 #[serde(default)]
296 pub providers: Vec<ProviderInfo>,
297}
298
299#[derive(Debug, Clone, Deserialize)]
303pub struct ProviderHealthInfo {
304 pub name: String,
305 #[serde(default)]
306 pub display_name: Option<String>,
307 #[serde(default)]
308 pub provider_type: Option<String>,
309 #[serde(default)]
310 pub enabled: bool,
311 #[serde(default)]
312 pub priority: Option<u32>,
313 #[serde(default)]
314 pub description: Option<String>,
315 #[serde(default)]
316 pub models: Vec<ModelInfo>,
317 #[serde(default)]
318 pub error: Option<String>,
319}