[IMPROVED] Calcular tarifa de bash como 0.4 veces la tarifa de devops obtenida
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
466aff762b
commit
e5f9004fb4
1 changed files with 101 additions and 26 deletions
|
@ -446,6 +446,75 @@ 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
|
||||
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()
|
||||
|
||||
# Si necesitamos la tarifa de devops para bash, la procesamos primero
|
||||
if need_devops_for_bash and need_process_devops:
|
||||
logger.info("Procesando tarifa de devops primero para calcular bash")
|
||||
|
||||
# Obtener tarifa para devops
|
||||
devops_rate_file = RATES_DIR / "devops.rate"
|
||||
prompt = generate_prompt_base('devops')
|
||||
|
||||
# Variable para almacenar la tarifa
|
||||
if api_available:
|
||||
logger.info("Consultando tarifa para devops")
|
||||
|
||||
try:
|
||||
# Consultar a Perplexity
|
||||
devops_rate = query_perplexity(prompt, model)
|
||||
|
||||
if devops_rate is not None:
|
||||
logger.info(f"Tarifa obtenida correctamente para devops: {devops_rate:.2f}")
|
||||
else:
|
||||
logger.error("No se pudo obtener la tarifa para devops")
|
||||
except Exception as e:
|
||||
logger.error(f"Error al consultar tarifa para devops: {e}")
|
||||
time.sleep(2)
|
||||
|
||||
# Si la API falló o no está disponible, usar valor predeterminado
|
||||
if devops_rate is None:
|
||||
logger.warning("Usando valor predeterminado para devops")
|
||||
devops_rate = get_default_rate('devops')
|
||||
logger.info(f"Valor predeterminado para devops: {devops_rate:.2f}")
|
||||
|
||||
# Limitar a tarifas menores de 200 USD/hora
|
||||
max_rate = 200.00
|
||||
if devops_rate > max_rate:
|
||||
logger.warning(f"Ajustando tarifa {devops_rate:.2f} al máximo permitido de {max_rate}")
|
||||
devops_rate = max_rate
|
||||
|
||||
# Guardar el resultado en el archivo
|
||||
with open(devops_rate_file, 'w', encoding='utf-8') as f:
|
||||
f.write(f"{devops_rate:.2f}")
|
||||
|
||||
# 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}")
|
||||
show_result(result_message)
|
||||
|
||||
# Actualizamos la lista de tipos pendientes
|
||||
if 'devops' in programmer_types:
|
||||
programmer_types.remove('devops')
|
||||
|
||||
# Pequeña pausa para no sobrecargar la API
|
||||
time.sleep(1)
|
||||
|
||||
# Si ya existe un archivo para devops pero necesitamos la tarifa para bash
|
||||
elif need_devops_for_bash and not need_process_devops:
|
||||
# Leer la tarifa guardada de devops
|
||||
devops_rate_file = RATES_DIR / "devops.rate"
|
||||
try:
|
||||
with open(devops_rate_file, 'r', encoding='utf-8') as f:
|
||||
devops_rate = float(f.read().strip())
|
||||
logger.info(f"Tarifa leída para devops: {devops_rate:.2f}")
|
||||
except (FileNotFoundError, ValueError) as e:
|
||||
logger.error(f"Error al leer tarifa de devops: {e}")
|
||||
devops_rate = get_default_rate('devops')
|
||||
|
||||
# Procesar cada tipo de programador
|
||||
for programmer_type in programmer_types:
|
||||
# Comprobar si ya existe el archivo para este tipo de programador
|
||||
|
@ -456,7 +525,13 @@ def update_rate_files():
|
|||
logger.info(f"El archivo {rate_file} ya existe. Saltando.")
|
||||
continue
|
||||
|
||||
# Generar el prompt para la consulta
|
||||
# Caso especial para bash: calculamos como 0.4 veces la tarifa de devops
|
||||
if programmer_type == 'bash' and devops_rate is not None:
|
||||
logger.info(f"Calculando tarifa para bash como 0.4 * {devops_rate:.2f}")
|
||||
rate = 0.4 * devops_rate
|
||||
logger.info(f"Tarifa calculada para bash: {rate:.2f}")
|
||||
else:
|
||||
# Para otros tipos, procedemos como antes
|
||||
prompt = generate_prompt_base(programmer_type)
|
||||
|
||||
# Variable para almacenar la tarifa
|
||||
|
|
Loading…
Reference in a new issue