Files
energy-trade/backend/app/tasks/training_tasks.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

51 lines
1.6 KiB
Python

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"]