Manual de pruebas — ArcorTruck BackOffice Web (prototipo)
Este documento es la guía operativa para probar la aplicación actual frente al alcance definido en functional_analisys.html (misma carpeta). El manual de usuario en PDF (docs/manual/Manual_BackOffice Web_Truck_v2.pdf) sigue siendo la fuente formal de negocio; aquí sólo describimos cómo reproducir comportamientos en este repositorio.
Qué incluye esta versión (y qué no)
| Estado | Alcance |
|---|---|
| Implementado como producto usable | Inicio/cierre de sesión con JWT en cliente, alta de usuarios opcional, rutas navegables, shell con menú y ejemplos de datos live contra la API. |
| Implementado como prototipo UI / mock local | La mayor parte de pantallas de reportes, preparación de datos móvil, tableros, mapa y configuración técnica: sirven para demostrar flujos y textos funcionales, no para operar contra ERP ni mapas reales. |
| Fuera de alcance aquí | Multi-tenant por subdominio, Google Maps integrado, colas de trabajo con trazabilidad, export Excel/PDF, OIDC institucional, cifrado de secretos productivo completo. |
Glosario breve
| Término | Significado para las pruebas |
|---|---|
| Hoja de reparto | Número lógico de agrupación de visitas/ruta del día (aparece en filtros mock y en datos demo EF). |
| Preparar datos | Generación de paquetes para equipos móviles — en prototipo sólo hay mensajes locales tras pulsar botones. |
| Proceso único diario | Flag relacionado con cambios en sistemas externos (manual: América): en prototipo aparece como casilla que modifica el texto del “job” simulado. |
| Ruta SPA | Navegación por fragmento #/… (compatible con Vite detrás del proxy y con nginx try_files). |
Preparación del entorno
Desarrollo (API + SPA)
- Base SQL Server accesible con la cadena de
src/GoTruckBackoffice.Api/appsettings.json(p. ej. contenedor Docker enlocalhost,14333segúndocker-compose.ymlen la raíz del repo). - API: desde
src/GoTruckBackoffice.Apiejecutardotnet run. Al arrancar aplican migraciones y se garantiza el usuario sembradoadmin. - Web: desde
src/Web,npm installynpm run dev→ normalmentehttp://localhost:5173. Las peticiones a/apise proxifican envite.config.tshaciahttp://127.0.0.1:5000.
Sólo Docker Compose
Desde la raíz del proyecto: docker compose up --build.
| Servicio | URL típica | Notas |
|---|---|---|
| API | http://localhost:5000 |
Incluye Swagger en /swagger. |
| Frontend | http://localhost:3000 |
Nginx enlaza /api/* al contenedor API. |
Autenticación y seguridad
Credencial de demo
| Usuario | Contraseña | Origen |
|---|---|---|
admin |
admin |
Creado en la primera corrida migrada si aún no existía ese nombre de usuario (hash BCrypt en base). |
Otros usuarios se pueden crear desde #/registro (clave mínima cuatro caracteres). Usuario repetido produce error de conflicto con mensaje explícito.
Comportamiento esperado · UC-01 y UC-02
- Sin sesión, cualquier vista interna redirige a
#/login. Guarda la ruta solicitada para volver allí después del login (variable interna del navegador). - Login fallido (usuario o contraseña incorrectos): API 401 con mensaje genérico «Credenciales inválidas.» (no indica cuál campo falló).
- Sesión expirada o token rechazado (401) en llamadas REST: el cliente borra el token y ofrece volver al login.
Pruebas API rápidas (Swagger)
Abrir http://localhost:5000/swagger (o el mismo host donde expongas la API).
POST /api/auth/login· cuerpo{"usuario":"admin","clave":"admin"}→ 200 y campotoken.- Pulsa Authorize, escheme Bearer, pega el JWT.
GET /api/auth/me→ 200.GET /api/dashboard/summarysin Bearer → 401.GET /api/health→ sin autenticación (uso típico: salud/containers).
Mapa rápido: pantallas y casos de uso
Las rutas asumen # al principio cuando la app está en el navegador.
Pantalla #/… |
Casos de uso cubiertos (referencia funcional) |
|---|---|
login |
UC-01 |
registro |
Alta de usuario (fuera del manual v2 pero útil QA) |
inicio |
UC-03 (atajos desde el centro) |
reparto |
Ítem de menú no detallado en el PDF índice (placeholder) |
administracion-movil |
UC-04, UC-05, UC-06 |
reportes/reparto-por-hoja |
UC-07 |
reportes/devoluciones-por-hoja |
UC-08 |
reportes/cobranzas-por-hoja |
UC-09 |
reportes/cobranzas-general |
UC-10 |
reportes/desempeno |
UC-11 |
reportes/estadistico-entrega |
UC-12 |
tableros/avance-reparto |
UC-13 |
mapas/reparto |
UC-14, UC-15 |
configuracion/backoffice |
UC-16 |
datos-demo |
Smoke técnico: tablas reales desde API autenticada |
Cómo validar cada flujo principal
Los pasos están pensados como lista de chequeo QA. Para cada ítem marca: “visto en UI”, “API OK si aplica”, “pendiente backlog” si el prototipo sólo muestra texto.
1. Sesión (UC-01, UC-02)
- Abrir la SPA sin estar logueado.
- Comprobar pantalla login: campos Usuario / Clave, tabulación usable, enlaces claros.
- Ingresar
admin/admin: debe mostrarse el shell (menú + cabecera) y llegar al inicio o a la última URL que pediste antes del login. - Ejecutar Logout: debe volver a
#/loginy las peticiones siguientes sin token deben fallar donde la API está protegida.
2. Pantalla principal (UC-03)
- Tras iniciar sesión, ir a
#/inicio. - Verificar Menú lateral con entradas alineadas a Reparto · Administración móvil · Reportes · Tableros · Mapas · Configuración (+ enlace opcional Datos demo).
- Verificar que las tarjetas del centro abren rutas coherentes sin recarga duradera fuera del fragmento SPA.
- Navegar por el mismo módulo desde menú lateral y desde atajo para comprobar coherencia de destino.
3. Administración móvil (UC-04, UC-05, UC-06)
- Ir
#/administracion-movil. - UC-04 · Generar todos: pulse y confirme que aparece texto de trabajo simulado (no hay servidor de colas en esta build).
- UC-05 · Generar un repartidor: sin elegir persona → mensaje de validación simple; con repartidor → mensaje OK simulado.
- UC-06 · checkbox Proceso único diario: marca opcional y repita generación → el texto de confirmación debe reflejar sí/no del flag para demostrar intención de negocio.
4. Bloque Reportes (UC-07 … UC-12)
Para #/reportes/* repetir el mismo ritual en cada página:
- Leer texto de filtros respecto del análisis (repartidor, hoja, tipo, desde/hasta, canal si aplica).
- Ejecutar el botón de demo de tabla/generación donde exista — valida navegabilidad de la UI, no datos de negocio reales.
- Anote como pendiente oficial: ordenación servidor, selección persistente en URL, Export Excel/impresión (UC pide ambos en producción futura).
Rutas concretas: reparto-por-hoja, devoluciones-por-hoja, cobranzas-por-hoja, cobranzas-general, desempeno, estadistico-entrega.
5. Tablero (UC-13)
#/tableros/avance-reparto — tabla de muestra de columnas de avance (% visita, contadores simples). Búsqueda mock presente pero sin efecto garantizado hasta backlog.
6. Mapa (UC-14, UC-15)
#/mapas/reparto — revisar filtros listados conforme UC-14 y bloque grande marcador/map placeholder. UC-15 (tooltip al clic sobre punto) pendiente hasta integración con mapa JS y modelo de marca.
7. Configuración BackOffice — técnico (UC-16)
#/configuracion/backoffice — revise que existan placeholders de configuración aplicación externa / BD externa / key Maps conforme texto funcional.
Ningún secreto debe persistirse desde el navegador; el botón de guardado en prototipo queda deliberadamente deshabilitado o sin backend.
8. Smoke de integración #/datos-demo
- Con JWT válido, la vista debe poblar KPIs/tablas mediante servicios EF contra SQL (repartidores, clientes, hojas).
- Si falla red o SQL está caído, aparece mensaje legible según cliente HTTP.
Incidentes típicos al probar
| Síntoma | Qué revisar |
|---|---|
| 401 tras login en vistas de datos | Token expirado, re-login; JWT en appsettings.json · sección Jwt (clave ≥ 32 caracteres). |
| Login OK pero SPA no carga tablas dev | dotnet run en 5000; proxy Vite /api; en Docker usar host 3000 y no mezclar origen equivocado sin CORS. |
| Migraciones no aplicadas / sin tabla usuarios | Revisá logs arranque API; ejecutá manual dotnet ef database update en el proyecto API si necesitás reproducir sólo DDL. |
Trazabilidad documental
- Este manual ↔ pasos ejecutables QA en código actual del repo.
functional_analisys.html↔ modelo de procesos UC-01…UC-16 y matriz menú ↔ UC.- PDF oficial ↔ validación wording final frente a distribuidoras y EMSER cuando el prototipo migre a entregables productivos.
Última redacción unificada del manual operativo QA del prototipo; actualizar rutas puertos si el despliegue corporativo cambia.