Features: - FastAPI backend with stocks, news, signals, watchlist, analytics endpoints - React frontend with TailwindCSS dark mode trading dashboard - Celery workers for news fetching, sentiment analysis, pattern detection - TimescaleDB schema for time-series stock data - Docker Compose setup for all services - OpenAI integration for sentiment analysis
42 lines
1.0 KiB
Python
42 lines
1.0 KiB
Python
"""Stock schemas."""
|
|
|
|
from typing import Optional
|
|
from datetime import datetime
|
|
from uuid import UUID
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class StockBase(BaseModel):
|
|
"""Base stock schema."""
|
|
symbol: str = Field(..., min_length=1, max_length=20)
|
|
name: str = Field(..., min_length=1, max_length=255)
|
|
sector: Optional[str] = None
|
|
industry: Optional[str] = None
|
|
exchange: Optional[str] = None
|
|
country: str = "USA"
|
|
|
|
|
|
class StockCreate(StockBase):
|
|
"""Schema for creating a stock."""
|
|
pass
|
|
|
|
|
|
class StockResponse(StockBase):
|
|
"""Schema for stock response."""
|
|
id: UUID
|
|
market_cap: Optional[int] = None
|
|
is_active: bool
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class StockWithPrice(StockResponse):
|
|
"""Stock response with latest price data."""
|
|
latest_price: Optional[float] = None
|
|
price_change_24h: Optional[float] = None
|
|
price_change_percent_24h: Optional[float] = None
|
|
volume_24h: Optional[int] = None
|