52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
from typing import List, Dict, Any, Tuple
|
|
from logger import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
# EXPLICACIÓN: Este módulo procesa los datos sin tocar la interfaz (Regla 5).
|
|
def validar_datos_tabla(datos_tabla: List[List[str]]) -> bool:
|
|
"""
|
|
Verifica que los tiempos ingresados sean numéricos (Regla 4).
|
|
|
|
Args:
|
|
datos_tabla (List[List[str]]): Matriz de datos extraída de la UI.
|
|
|
|
Returns:
|
|
bool: True si todos los datos requeridos son válidos numéricamente, False en caso contrario.
|
|
"""
|
|
try:
|
|
for fila in datos_tabla:
|
|
for celda in fila:
|
|
if celda.strip():
|
|
float(celda) # EAFP: intentar convertir a float en lugar de comprobaciones (Regla 3)
|
|
return True
|
|
except ValueError:
|
|
logger.warning("Fallo en la validación de tabla: celda no numérica.")
|
|
return False
|
|
except Exception:
|
|
logger.exception("Error inesperado al validar la tabla de datos.")
|
|
return False
|
|
|
|
def procesar_calculos_estudio(datos: Dict[str, Any]) -> Dict[str, float]:
|
|
"""
|
|
Realiza los cálculos de suplementos y valoración basados en la matriz de tiempos.
|
|
|
|
Args:
|
|
datos (Dict[str, Any]): Diccionario con la configuración del relevamiento y los tiempos.
|
|
|
|
Returns:
|
|
Dict[str, float]: Diccionario con los resultados calculados.
|
|
"""
|
|
# Lógica matemática del proyecto encapsulada sin UI
|
|
resultados: Dict[str, float] = {
|
|
"tiempo_estandar": 0.0,
|
|
"cadencia": 0.0
|
|
}
|
|
|
|
try:
|
|
# Aquí se realizarían los cálculos reales
|
|
pass
|
|
except Exception:
|
|
logger.exception("Error durante el procesamiento matemático del estudio.")
|
|
|
|
return resultados
|