REFACTOR: Split code and dynamic models
All checks were successful
Build docker container / Build image (push) Successful in 11m15s

This commit is contained in:
2025-12-21 13:06:10 +01:00
parent ff51af276d
commit c25ec806a5
15 changed files with 827 additions and 108 deletions

0
src/utils/__init__.py Normal file
View File

View File

@@ -0,0 +1,15 @@
import importlib
from typing import Any
def execute_function(module_name: str, function_name: str, *args, **kwargs) -> Any:
"""Ejecutar una función dinámicamente"""
try:
module = importlib.import_module(module_name)
function = getattr(module, function_name)
return function(*args, **kwargs)
except ImportError as e:
raise ValueError(f"Modulo '{module_name}' no esta disponible: {str(e)}")
except AttributeError as e:
raise ValueError(f"Función '{function_name}' no esta disponible en el módulo '{module_name}': {str(e)}")
except Exception as e:
raise ValueError(f"Error ejecutando la función '{function_name}': {str(e)}")

30
src/utils/validators.py Normal file
View File

@@ -0,0 +1,30 @@
from typing import Dict, Any, Tuple
def validate_predict_params(model_type: str, params: Dict[str, Any], model_config) -> Dict[str, Any]:
"""Validar parámetros para predicción"""
config = model_config.get_model_config(model_type)
required_params = config.get("required_params", [])
# Verificar parámetros requeridos
missing_params = [p for p in required_params if p not in params]
if missing_params:
return {
"valid": False,
"message": f"Faltan los siguientes parámetros: {', '.join(missing_params)}",
"required_params": required_params
}
# Validar tipos de datos básicos
for param in required_params:
try:
# Intentar convertir a número
float(params[param])
except ValueError:
return {
"valid": False,
"message": f"El parámetro '{param}' tiene que ser un número",
"invalid_param": param
}
return {"valid": True}