[FIXED] Garantizar que ninguna tarifa exceda el umbral establecido

- Asegurar que el promedio calculado nunca exceda el umbral de 200.00 USD/hora
- Modificar el cálculo de fallback para respetar estrictamente el umbral
- Aplicar límite explícito en todos los casos de cálculo de tarifa

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-03-12 11:13:13 -05:00
parent cff25775d3
commit a090f732f7
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -650,11 +650,14 @@ def update_rate_files():
# Si encontramos tarifas del mismo tipo, calcular el promedio # Si encontramos tarifas del mismo tipo, calcular el promedio
if same_type_rates: if same_type_rates:
avg_rate = sum(same_type_rates) / len(same_type_rates) avg_rate = sum(same_type_rates) / len(same_type_rates)
# Asegurar que el promedio tampoco exceda el umbral
avg_rate = min(avg_rate, rate_threshold)
logger.warning(f"Tarifa {rate:.2f} supera el umbral de {rate_threshold}. Usando promedio de {len(same_type_rates)} tarifas: {avg_rate:.2f}") logger.warning(f"Tarifa {rate:.2f} supera el umbral de {rate_threshold}. Usando promedio de {len(same_type_rates)} tarifas: {avg_rate:.2f}")
rate = round(avg_rate, 2) rate = round(avg_rate, 2)
else: else:
# Si no hay otras tarifas para calcular el promedio, usar un valor de fallback # Si no hay otras tarifas para calcular el promedio, usar un valor de fallback
fallback_rate = min(rate, get_fallback_rate(programmer_type, region_code) * 1.5) # Asegurarnos que el valor nunca exceda el umbral
fallback_rate = min(rate_threshold, get_fallback_rate(programmer_type, region_code) * 1.5)
logger.warning(f"Tarifa {rate:.2f} supera el umbral de {rate_threshold}. No hay datos para promedio. Usando valor ajustado: {fallback_rate:.2f}") logger.warning(f"Tarifa {rate:.2f} supera el umbral de {rate_threshold}. No hay datos para promedio. Usando valor ajustado: {fallback_rate:.2f}")
rate = round(fallback_rate, 2) rate = round(fallback_rate, 2)