78 lines
2.3 KiB
Python
78 lines
2.3 KiB
Python
"""
|
|
数据相关的Pydantic模式
|
|
"""
|
|
|
|
from pydantic import BaseModel, Field
|
|
from typing import Dict, Any, Optional, List
|
|
from datetime import datetime
|
|
|
|
|
|
class FinancialDataRequest(BaseModel):
|
|
"""财务数据请求模式"""
|
|
symbol: str = Field(..., description="证券代码")
|
|
market: str = Field(..., description="交易市场")
|
|
data_type: str = Field("all", description="数据类型")
|
|
period: Optional[str] = Field("annual", description="数据周期")
|
|
|
|
|
|
class MarketDataRequest(BaseModel):
|
|
"""市场数据请求模式"""
|
|
symbol: str = Field(..., description="证券代码")
|
|
market: str = Field(..., description="交易市场")
|
|
start_date: Optional[datetime] = Field(None, description="开始日期")
|
|
end_date: Optional[datetime] = Field(None, description="结束日期")
|
|
|
|
|
|
class FinancialDataResponse(BaseModel):
|
|
"""财务数据响应模式"""
|
|
symbol: str
|
|
market: str
|
|
data_source: str
|
|
last_updated: datetime
|
|
balance_sheet: Optional[Dict[str, Any]] = None
|
|
income_statement: Optional[Dict[str, Any]] = None
|
|
cash_flow: Optional[Dict[str, Any]] = None
|
|
key_metrics: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
class MarketDataResponse(BaseModel):
|
|
"""市场数据响应模式"""
|
|
symbol: str
|
|
market: str
|
|
data_source: str
|
|
last_updated: datetime
|
|
price_data: Optional[Dict[str, Any]] = None
|
|
volume_data: Optional[Dict[str, Any]] = None
|
|
technical_indicators: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
class SymbolValidationRequest(BaseModel):
|
|
"""证券代码验证请求模式"""
|
|
symbol: str = Field(..., description="证券代码")
|
|
market: str = Field(..., description="交易市场")
|
|
|
|
|
|
class SymbolValidationResponse(BaseModel):
|
|
"""证券代码验证响应模式"""
|
|
symbol: str
|
|
market: str
|
|
is_valid: bool
|
|
company_name: Optional[str] = None
|
|
sector: Optional[str] = None
|
|
industry: Optional[str] = None
|
|
message: Optional[str] = None
|
|
|
|
|
|
class DataSourceStatus(BaseModel):
|
|
"""数据源状态模式"""
|
|
name: str
|
|
is_available: bool
|
|
last_check: datetime
|
|
response_time_ms: Optional[int] = None
|
|
error_message: Optional[str] = None
|
|
|
|
|
|
class DataSourcesStatusResponse(BaseModel):
|
|
"""数据源状态响应模式"""
|
|
sources: List[DataSourceStatus]
|
|
overall_status: str # "healthy", "degraded", "down" |