ttzzs's picture
Deploy Chronos2 Forecasting API v3.0.0 with new SOLID architecture
c40c447 verified
"""
Mapper para casos de uso de Backtesting.
Convierte entre API schemas (Pydantic) y DTOs de aplicación.
"""
from app.schemas.requests.backtest import BacktestRequest
from app.schemas.responses.backtest import BacktestResponse, BacktestMetrics
from app.application.dtos.backtest_dtos import (
BacktestInputDTO,
BacktestOutputDTO,
BacktestMetricsDTO
)
class BacktestMapper:
"""
Mapper para convertir entre API schemas y DTOs de backtest.
"""
@staticmethod
def to_input_dto(request: BacktestRequest) -> BacktestInputDTO:
"""
Convierte API request a DTO de entrada.
Args:
request: Request de la API
Returns:
BacktestInputDTO: DTO para el caso de uso
"""
return BacktestInputDTO(
values=request.series.values,
test_size=request.test_size,
quantile_levels=request.quantile_levels,
timestamps=request.series.timestamps,
freq=request.freq
)
@staticmethod
def from_output_dto(dto: BacktestOutputDTO) -> BacktestResponse:
"""
Convierte DTO de salida a API response.
Args:
dto: DTO del caso de uso
Returns:
BacktestResponse: Response para la API
"""
# Convertir métricas
metrics = BacktestMetrics(
mae=dto.metrics.mae,
mape=dto.metrics.mape,
rmse=dto.metrics.rmse,
mse=dto.metrics.mse
)
return BacktestResponse(
forecast_values=dto.forecast_values,
actual_values=dto.actual_values,
errors=dto.errors,
metrics=metrics,
timestamps=dto.timestamps,
quantiles=dto.quantiles
)