almeira-web/scripts/verify_time_modes.py

110 lines
4.4 KiB
Python

import io
import sys
import urllib.request
import json
import ssl
if sys.platform == 'win32':
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
API_URL = "https://pacifictrans.almeira.com.co"
print("1. Consultando tarifas activas...")
req = urllib.request.Request(f"{API_URL}/api/tariffs")
with urllib.request.urlopen(req, context=ctx, timeout=10) as res:
data = json.loads(res.read().decode("utf-8"))
config = data.get("config", {})
print(f" Tarifa Pasajero: ${config.get('tarifaPasajeroFija'):,} COP")
print(f" Precio Base Paquete: ${config.get('precioBasePaquete'):,} COP")
print(f" Recargo Envio Urgente: ${config.get('recargoEnvioUrgente', 0):,} COP")
assert "recargoEnvioUrgente" in config, "recargoEnvioUrgente debe estar en la configuracion de tarifas"
print("\n2. Simulando despacho de paquete urgente...")
payload_urgent = {
"remitenteNombre": "Carlos Almeira",
"remitenteTelefono": "3167455877",
"destinatarioNombre": "Destinatario Test",
"destinatarioTelefono": "3101234567",
"tipoBulto": "SOBRE",
"descripcion": "Documentos urgentes de prueba",
"direccionRecogida": "Calle 5 #66-20, Cali",
"coordenadasRecogida": [-76.5320, 3.4215],
"ciudadOrigen": "CALI",
"direccionEntrega": "Terminal Buenaventura",
"coordenadasEntrega": [-77.0250, 3.8820],
"ciudadDestino": "BUENAVENTURA",
"esEnvioUrgente": True,
"modalidadTiempo": "INMEDIATO"
}
req_flete = urllib.request.Request(
f"{API_URL}/api/trips/package",
data=json.dumps(payload_urgent).encode("utf-8"),
headers={"Content-Type": "application/json"}
)
with urllib.request.urlopen(req_flete, context=ctx, timeout=10) as res:
cotizacion = json.loads(res.read().decode("utf-8"))
print(f" Resultado paquete: success={cotizacion.get('success')}")
trip = cotizacion.get('trip', {})
print(f" Total flete urgente: ${trip.get('precio', 0):,} COP")
print(f" Modalidad tiempo: {trip.get('modalidadTiempo')}")
print(f" Es urgente: {trip.get('esEnvioUrgente')}")
print(f" Recargo urgencia aplicado: ${trip.get('recargoUrgencia', 0):,} COP")
print("\n3. Simulando reserva de pasajero programada (Llegada en destino)...")
payload_pool = {
"sentido": "CALI_A_BUENAVENTURA",
"direccionTexto": "Calle 5 #66-20, Cali",
"coordenadas": [-76.5320, 3.4215],
"puntoFijoBuenaventura": {
"nombre": "Terminal de Transportes de Buenaventura",
"coordenadas": [-77.0250, 3.8820]
},
"cantidadPasajeros": 1,
"pasajeros": [
{
"nombre": "Carlos Almeira",
"telefono": "3167455877",
"direccionRecogida": "Calle 5 #66-20, Cali"
}
],
"metodoPago": "EFECTIVO",
"modalidadTiempo": "PROGRAMADO",
"tipoProgramacion": "HORA_LLEGADA_DESTINO",
"fechaProgramada": "2026-10-25",
"horaProgramada": "14:00",
"horaSugeridaRecogida": "11:00"
}
req_pool = urllib.request.Request(
f"{API_URL}/api/trips/pool",
data=json.dumps(payload_pool).encode("utf-8"),
headers={"Content-Type": "application/json"}
)
with urllib.request.urlopen(req_pool, context=ctx, timeout=10) as res:
pool_res = json.loads(res.read().decode("utf-8"))
print(f" Resultado pooling: success={pool_res.get('success')}")
trip_p = pool_res.get('trip', {})
print(f" Modalidad viaje: {trip_p.get('modalidadTiempo')}")
print(f" Tipo programacion: {trip_p.get('tipoProgramacion')}")
print(f" Fecha programada: {trip_p.get('fechaProgramada')}")
print(f" Hora en destino: {trip_p.get('horaProgramada')}")
print(f" Hora sugerida recogida: {trip_p.get('horaSugeridaRecogida')}")
print("\n4. Verificando que index.html contenga los selectores de modalidad de tiempo...")
req_html = urllib.request.Request(f"{API_URL}/")
with urllib.request.urlopen(req_html, context=ctx, timeout=10) as res:
html = res.read().decode("utf-8")
assert "time-modality-container" in html, "Falta time-modality-container en HTML"
assert "smart-eta-box" in html, "Falta smart-eta-box en HTML"
assert "cfg-recargo-urgente" in html, "Falta cfg-recargo-urgente en HTML"
print(" [OK] Elementos visuales y selectores de tiempo presentes en el frontend.")
print("\n[OK] Verificacion completa de modalidades de viaje y fletes superada con 100% de exito.")