[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
|
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()
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue