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:
2026-02-12 00:59:26 +07:00
parent a22a13f6f4
commit fe76bc7629
72 changed files with 2931 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
from typing import Dict
from datetime import datetime
from app.utils.logger import get_logger
from app.models.schemas import TrainingRequest, TrainingStatusEnum
import uuid
logger = get_logger(__name__)
async def train_model_task(training_id: str, request: TrainingRequest):
logger.info(f"Training model: {request.model_type.value}, horizon: {request.horizon}")
try:
if request.model_type.value == "price_prediction":
from app.ml.price_prediction.trainer import PricePredictionTrainer
trainer = PricePredictionTrainer()
results = trainer.train_all(horizons=[request.horizon] if request.horizon else None)
trainer.save_models()
return {
"training_id": training_id,
"status": TrainingStatusEnum.COMPLETED,
"results": results,
"completed_at": datetime.utcnow().isoformat(),
}
elif request.model_type.value == "rl_battery":
from app.ml.rl_battery.trainer import BatteryRLTrainer
trainer = BatteryRLTrainer()
results = trainer.train(n_episodes=500)
trainer.save()
return {
"training_id": training_id,
"status": TrainingStatusEnum.COMPLETED,
"results": results,
"completed_at": datetime.utcnow().isoformat(),
}
else:
raise ValueError(f"Unknown model type: {request.model_type}")
except Exception as e:
logger.error(f"Training failed: {e}")
raise
__all__ = ["train_model_task"]