[IMPROVED] Optimizar la salida de consola en rate_update.py

- Modificar el nivel de log para mostrar solo errores y resultados importantes
- Añadir función show_result para controlar la salida de resultados
- Agregar opciones de línea de comandos para controlar verbosidad (-v, -q)
- Mostrar solo el valor guardado para cada archivo procesado
- Añadir manejo de errores global para mejor experiencia de usuario
- Proporcionar retroalimentación clara sobre éxito o fracaso

🤖 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 10:55:50 -05:00
parent a392607365
commit c8567a75b0
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -23,12 +23,18 @@ import time
from pathlib import Path
# Configuración de logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[logging.StreamHandler()]
)
# Por defecto, establecemos nivel WARNING para la consola (solo errores y advertencias)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)
console_handler.setFormatter(logging.Formatter('%(levelname)s: %(message)s'))
# Configuración global del logger
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[])
logger = logging.getLogger('rate_update')
logger.addHandler(console_handler)
# Variable para controlar si se muestra el resultado en la consola
SHOW_RESULTS = True
# Verificar si pycountry está instalado, si no, instalarlo
def check_install_pycountry():
@ -458,6 +464,14 @@ def get_fallback_rate(programmer_type, region_code):
return round(adjusted_rate, 2)
def show_result(message):
"""
Función para mostrar resultados en la consola.
Solo muestra mensajes si SHOW_RESULTS es True.
"""
if SHOW_RESULTS:
print(message)
def update_rate_files():
"""Actualiza los archivos de tarifas con datos de Perplexity."""
# Obtener modelo configurado
@ -537,12 +551,33 @@ def update_rate_files():
# Guardar el resultado en el archivo - solo el valor numérico con dos decimales, sin salto de línea
with open(rate_file, 'w', encoding='utf-8') as f:
f.write(f"{rate:.2f}")
# Registrar en el log y mostrar el resultado en la consola
result_message = f"Tarifa para {programmer_type}" + (f" en región {region_code}" if region_code else "") + f": {rate:.2f} USD"
logger.info(f"Actualizado {os.path.basename(rate_file)} con valor: {rate:.2f}")
show_result(result_message)
if __name__ == "__main__":
# Parámetros de línea de comandos para controlar el comportamiento
import argparse
parser = argparse.ArgumentParser(description='Actualiza tarifas por hora de diferentes tipos de programadores.')
parser.add_argument('-q', '--quiet', action='store_true', help='No mostrar resultados individuales')
parser.add_argument('-v', '--verbose', action='store_true', help='Mostrar información detallada del proceso')
args = parser.parse_args()
# Configurar nivel de log según parámetros
if args.verbose:
console_handler.setLevel(logging.INFO)
# Configurar si se muestran resultados
global SHOW_RESULTS
SHOW_RESULTS = not args.quiet
logger.info("Iniciando actualización de tarifas...")
if not args.quiet:
print("Actualizando tarifas...")
# Verificar e instalar pycountry si es necesario
pycountry_available = check_install_pycountry()
@ -555,7 +590,14 @@ if __name__ == "__main__":
else:
logger.info("Usando lista interna para validación básica de códigos de país.")
# Actualizar los archivos de tarifas
update_rate_files()
logger.info("Proceso de actualización de tarifas completado.")
try:
# Actualizar los archivos de tarifas
update_rate_files()
if not args.quiet:
print("Proceso de actualización de tarifas completado exitosamente.")
logger.info("Proceso de actualización de tarifas completado.")
except Exception as e:
logger.error(f"Error durante la actualización de tarifas: {e}")
print(f"ERROR: {e}")
sys.exit(1)