[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:
parent
df0855bc91
commit
9b4288492c
1 changed files with 28 additions and 12 deletions
|
@ -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()
|
||||
|
||||
|
|
Loading…
Reference in a new issue