Fundamental_Analysis/backend/app/schemas/data.py

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"