[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()
|
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
|
||||||
|
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
|
# Procesar cada tipo de programador
|
||||||
for programmer_type in programmer_types:
|
for programmer_type in programmer_types:
|
||||||
# Comprobar si ya existe el archivo para este tipo de programador
|
# Comprobar si ya existe el archivo para este tipo de programador
|
||||||
|
@ -456,34 +525,40 @@ def update_rate_files():
|
||||||
logger.info(f"El archivo {rate_file} ya existe. Saltando.")
|
logger.info(f"El archivo {rate_file} ya existe. Saltando.")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# Generar el prompt para la consulta
|
# Caso especial para bash: calculamos como 0.4 veces la tarifa de devops
|
||||||
prompt = generate_prompt_base(programmer_type)
|
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
|
# Variable para almacenar la tarifa
|
||||||
rate = None
|
rate = None
|
||||||
|
|
||||||
# Si la API está disponible, intentar consultarla
|
# Si la API está disponible, intentar consultarla
|
||||||
if api_available:
|
if api_available:
|
||||||
logger.info(f"Consultando tarifa para {programmer_type}")
|
logger.info(f"Consultando tarifa para {programmer_type}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Consultar a Perplexity
|
# Consultar a Perplexity
|
||||||
rate = query_perplexity(prompt, model)
|
rate = query_perplexity(prompt, model)
|
||||||
|
|
||||||
if rate is not None:
|
if rate is not None:
|
||||||
logger.info(f"Tarifa obtenida correctamente: {rate:.2f}")
|
logger.info(f"Tarifa obtenida correctamente: {rate:.2f}")
|
||||||
else:
|
else:
|
||||||
logger.error(f"No se pudo obtener la tarifa para {programmer_type}")
|
logger.error(f"No se pudo obtener la tarifa para {programmer_type}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error al consultar tarifa para {programmer_type}: {e}")
|
logger.error(f"Error al consultar tarifa para {programmer_type}: {e}")
|
||||||
# Pequeña pausa tras un error para evitar sobrecargar la API
|
# Pequeña pausa tras un error para evitar sobrecargar la API
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
# Si la API falló o no está disponible, usar valor predeterminado
|
# Si la API falló o no está disponible, usar valor predeterminado
|
||||||
if rate is None:
|
if rate is None:
|
||||||
logger.warning(f"Usando valor predeterminado para {programmer_type}")
|
logger.warning(f"Usando valor predeterminado para {programmer_type}")
|
||||||
rate = get_default_rate(programmer_type)
|
rate = get_default_rate(programmer_type)
|
||||||
logger.info(f"Valor predeterminado: {rate:.2f}")
|
logger.info(f"Valor predeterminado: {rate:.2f}")
|
||||||
|
|
||||||
# Limitar a tarifas menores de 200 USD/hora
|
# Limitar a tarifas menores de 200 USD/hora
|
||||||
max_rate = 200.00
|
max_rate = 200.00
|
||||||
|
|
Loading…
Reference in a new issue