Files
energy-trade/backend/app/api/routes/dashboard.py
kbt-devops fe76bc7629 Add FastAPI backend for energy trading system
Implements FastAPI backend with ML model support for energy trading,
including price prediction models and RL-based battery trading policy.
Features dashboard, trading, backtest, and settings API routes with
WebSocket support for real-time updates.
2026-02-12 00:59:26 +07:00

49 lines
1.5 KiB
Python

from typing import List
from fastapi import APIRouter, Depends, Query
from app.models.schemas import DashboardSummary, ArbitrageOpportunity, PriceData, BatteryState
from app.services import DataService
router = APIRouter()
data_service = DataService()
@router.on_event("startup")
async def startup():
await data_service.initialize()
@router.get("/summary", response_model=DashboardSummary)
async def get_summary():
summary = data_service.get_dashboard_summary()
return DashboardSummary(**summary)
@router.get("/prices")
async def get_latest_prices():
return {"regions": data_service.get_latest_prices()}
@router.get("/prices/history")
async def get_price_history(
region: str = Query(..., description="Region code (FR, BE, DE, NL, UK)"),
start: str = Query(None, description="Start date (YYYY-MM-DD)"),
end: str = Query(None, description="End date (YYYY-MM-DD)"),
limit: int = Query(1000, description="Maximum number of records"),
):
data = data_service.get_price_history(region, start, end, limit)
return {"region": region, "data": data}
@router.get("/battery")
async def get_battery_states():
batteries = data_service.get_battery_states()
return {"batteries": batteries}
@router.get("/arbitrage")
async def get_arbitrage_opportunities(
min_spread: float = Query(None, description="Minimum spread in EUR/MWh")
):
opportunities = data_service.get_arbitrage_opportunities(min_spread)
return {"opportunities": opportunities, "count": len(opportunities)}