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.
This commit is contained in:
48
backend/app/api/routes/dashboard.py
Normal file
48
backend/app/api/routes/dashboard.py
Normal file
@@ -0,0 +1,48 @@
|
||||
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)}
|
||||
Reference in New Issue
Block a user