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