[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
def update_rate_files():
def update_rate_files(force_update=False):
"""
Actualiza los archivos de tarifas con datos de Perplexity.
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
model = get_ai_model()
@ -590,10 +593,10 @@ def update_rate_files():
programmer_types = get_programmer_types()
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
need_devops_for_bash = 'bash' in programmer_types and not (RATES_DIR / "bash.rate").exists()
need_process_devops = 'devops' in programmer_types and not (RATES_DIR / "devops.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() or force_update))
# Si necesitamos la tarifa de devops para bash, la procesamos primero
if need_devops_for_bash and need_process_devops:
@ -637,7 +640,7 @@ def update_rate_files():
# Mostrar el resultado en la consola
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)
# 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
rate_file = RATES_DIR / f"{programmer_type}.rate"
# Si el archivo ya existe, saltamos este tipo
if rate_file.exists():
# Si el archivo ya existe y no estamos forzando la actualización, saltamos este tipo
if rate_file.exists() and not force_update:
logger.info(f"El archivo {rate_file} ya existe. Saltando.")
continue
@ -716,7 +719,7 @@ def update_rate_files():
# Mostrar el resultado en la consola
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)
# 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('-t', '--type', choices=valid_types,
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()
# 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.")
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
if args.type:
elif args.type:
logger.info(f"Actualizando tarifa para el tipo: {args.type}")
if not args.quiet:
print(f"Actualizando tarifa para {args.type}...")
@ -873,11 +889,11 @@ if __name__ == "__main__":
elif not success:
sys.exit(1)
else:
# Actualizar todos los archivos de tarifas
logger.info("Iniciando actualización de tarifas...")
# Actualizar archivos de tarifas faltantes
logger.info("Iniciando actualización de tarifas faltantes...")
if not args.quiet:
print("Actualizando tarifas...")
print("Actualizando tarifas faltantes...")
update_rate_files()