[ADDED] Implementar opción --init para actualizar todas las tarifas

🤖 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 12:47:54 -05:00
parent df0855bc91
commit 9b4288492c
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -565,10 +565,13 @@ def update_single_rate(programmer_type):
return True return True
def update_rate_files(): def update_rate_files(force_update=False):
""" """
Actualiza los archivos de tarifas con datos de Perplexity. Actualiza los archivos de tarifas con datos de Perplexity.
Crea un archivo por tipo de programador con la tarifa por hora general. Crea un archivo por tipo de programador con la tarifa por hora general.
Parámetros:
force_update (bool): Si es True, actualiza todos los tipos incluso si ya existen archivos.
""" """
# Obtener modelo configurado # Obtener modelo configurado
model = get_ai_model() model = get_ai_model()
@ -590,10 +593,10 @@ def update_rate_files():
programmer_types = get_programmer_types() programmer_types = get_programmer_types()
logger.info(f"Procesando {len(programmer_types)} tipos de programadores.") logger.info(f"Procesando {len(programmer_types)} tipos de programadores.")
# Procesamos primero devops si bash está pendiente # Procesamos primero devops siempre que force_update sea True o bash esté pendiente
devops_rate = None devops_rate = None
need_devops_for_bash = 'bash' in programmer_types and not (RATES_DIR / "bash.rate").exists() need_devops_for_bash = ('bash' in programmer_types and (not (RATES_DIR / "bash.rate").exists() or force_update))
need_process_devops = 'devops' in programmer_types and not (RATES_DIR / "devops.rate").exists() need_process_devops = ('devops' in programmer_types and (not (RATES_DIR / "devops.rate").exists() or force_update))
# Si necesitamos la tarifa de devops para bash, la procesamos primero # Si necesitamos la tarifa de devops para bash, la procesamos primero
if need_devops_for_bash and need_process_devops: if need_devops_for_bash and need_process_devops:
@ -637,7 +640,7 @@ def update_rate_files():
# Mostrar el resultado en la consola # Mostrar el resultado en la consola
result_message = f"Tarifa para devops: {devops_rate:.2f} USD/hora" result_message = f"Tarifa para devops: {devops_rate:.2f} USD/hora"
logger.info(f"Creado archivo {devops_rate_file} con valor: {devops_rate:.2f}") logger.info(f"{'Actualizado' if force_update else 'Creado'} archivo {devops_rate_file} con valor: {devops_rate:.2f}")
show_result(result_message) show_result(result_message)
# Actualizamos la lista de tipos pendientes # Actualizamos la lista de tipos pendientes
@ -664,8 +667,8 @@ def update_rate_files():
# Comprobar si ya existe el archivo para este tipo de programador # Comprobar si ya existe el archivo para este tipo de programador
rate_file = RATES_DIR / f"{programmer_type}.rate" rate_file = RATES_DIR / f"{programmer_type}.rate"
# Si el archivo ya existe, saltamos este tipo # Si el archivo ya existe y no estamos forzando la actualización, saltamos este tipo
if rate_file.exists(): if rate_file.exists() and not force_update:
logger.info(f"El archivo {rate_file} ya existe. Saltando.") logger.info(f"El archivo {rate_file} ya existe. Saltando.")
continue continue
@ -716,7 +719,7 @@ def update_rate_files():
# Mostrar el resultado en la consola # Mostrar el resultado en la consola
result_message = f"Tarifa para {programmer_type}: {rate:.2f} USD/hora" result_message = f"Tarifa para {programmer_type}: {rate:.2f} USD/hora"
logger.info(f"Creado archivo {rate_file} con valor: {rate:.2f}") logger.info(f"{'Actualizado' if force_update and rate_file.exists() else 'Creado'} archivo {rate_file} con valor: {rate:.2f}")
show_result(result_message) show_result(result_message)
# Pequeña pausa para no sobrecargar la API # Pequeña pausa para no sobrecargar la API
@ -835,6 +838,8 @@ if __name__ == "__main__":
parser.add_argument('-l', '--list', action='store_true', help='Listar todas las tarifas disponibles') parser.add_argument('-l', '--list', action='store_true', help='Listar todas las tarifas disponibles')
parser.add_argument('-t', '--type', choices=valid_types, parser.add_argument('-t', '--type', choices=valid_types,
help=f'Actualizar la tarifa para un tipo específico de programador. Tipos válidos: {valid_types_str}') help=f'Actualizar la tarifa para un tipo específico de programador. Tipos válidos: {valid_types_str}')
parser.add_argument('-i', '--init', action='store_true',
help='Actualizar todas las tarifas, incluso si ya existen archivos')
args = parser.parse_args() args = parser.parse_args()
# Configurar nivel de log según parámetros # Configurar nivel de log según parámetros
@ -860,8 +865,19 @@ if __name__ == "__main__":
logger.info("Usando lista interna para validación básica de códigos de país.") logger.info("Usando lista interna para validación básica de códigos de país.")
try: try:
# Si se solicita inicializar/actualizar todas las tarifas
if args.init:
logger.info("Iniciando actualización forzada de todas las tarifas...")
if not args.quiet:
print("Actualizando todas las tarifas (forzado)...")
update_rate_files(force_update=True)
if not args.quiet:
print("Proceso de actualización forzada completado exitosamente.")
# Si se especifica un tipo de programador, actualizar solo ese tipo # Si se especifica un tipo de programador, actualizar solo ese tipo
if args.type: elif args.type:
logger.info(f"Actualizando tarifa para el tipo: {args.type}") logger.info(f"Actualizando tarifa para el tipo: {args.type}")
if not args.quiet: if not args.quiet:
print(f"Actualizando tarifa para {args.type}...") print(f"Actualizando tarifa para {args.type}...")
@ -873,11 +889,11 @@ if __name__ == "__main__":
elif not success: elif not success:
sys.exit(1) sys.exit(1)
else: else:
# Actualizar todos los archivos de tarifas # Actualizar archivos de tarifas faltantes
logger.info("Iniciando actualización de tarifas...") logger.info("Iniciando actualización de tarifas faltantes...")
if not args.quiet: if not args.quiet:
print("Actualizando tarifas...") print("Actualizando tarifas faltantes...")
update_rate_files() update_rate_files()