use chrono::NaiveDate; use service_kit::api_dto; use serde_json::Value as JsonValue; use uuid::Uuid; // Companies API DTOs #[api_dto] pub struct CompanyProfileDto { pub symbol: String, pub name: String, pub industry: Option, pub list_date: Option, pub additional_info: Option, pub updated_at: Option>, } // Market Data API DTOs #[api_dto] pub struct TimeSeriesFinancialDto { pub symbol: String, pub metric_name: String, pub period_date: NaiveDate, pub value: f64, pub source: Option, } #[api_dto] pub struct DailyMarketDataDto { pub symbol: String, pub trade_date: NaiveDate, pub open_price: Option, pub high_price: Option, pub low_price: Option, pub close_price: Option, pub volume: Option, pub pe: Option, pub pb: Option, pub total_mv: Option, } // Batch DTOs #[api_dto] pub struct TimeSeriesFinancialBatchDto { pub records: Vec, } #[api_dto] pub struct DailyMarketDataBatchDto { pub records: Vec, } // Analysis Results API DTOs (NEW) #[api_dto] pub struct NewAnalysisResult { pub request_id: Uuid, pub symbol: String, pub template_id: String, pub module_id: String, pub content: String, pub meta_data: JsonValue, } /// Represents a persisted analysis result read from the database. #[api_dto] pub struct AnalysisResultDto { pub id: Uuid, pub request_id: Uuid, pub symbol: String, pub template_id: String, pub module_id: String, pub content: String, pub meta_data: JsonValue, pub created_at: chrono::DateTime, } // Realtime Quotes DTOs #[api_dto] pub struct RealtimeQuoteDto { pub symbol: String, pub market: String, pub ts: chrono::DateTime, pub price: f64, pub open_price: Option, pub high_price: Option, pub low_price: Option, pub prev_close: Option, pub change: Option, pub change_percent: Option, pub volume: Option, pub source: Option, } use crate::observability::TaskStatus; #[api_dto] pub struct ProviderStatusDto { pub last_updated: chrono::DateTime, pub status: TaskStatus, pub data_version: Option, } // Provider Path Params #[api_dto] #[derive(utoipa::IntoParams)] pub struct ProviderPathParams { pub symbol: String, pub provider_id: String, } // Session Data & Cache DTOs #[api_dto] pub struct SessionDataDto { pub request_id: Uuid, pub symbol: String, pub provider: String, pub data_type: String, pub data_payload: JsonValue, pub created_at: Option>, } #[api_dto] pub struct ProviderCacheDto { pub cache_key: String, pub data_payload: JsonValue, pub expires_at: chrono::DateTime, pub updated_at: Option>, }