Appearance
Matriz Funcional de Capacidades
271 capacidades verificadas contra el codigo fuente v2.6.0 Generado el 2026-03-18
Resumen de Estados
| Estado | Cantidad | Descripcion |
|---|---|---|
| Implementado | 262 | Funcionalidad completa y verificada |
| Stub | 9 | Codigo existe pero llama a un servicio simulado (log-only) |
| Total | 271 |
BFF Gateway (ws-pprx-bff, puerto 8090)
Proxy de Expediciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-01 | BFF | Crear expedicion con clave de idempotencia | El operador o cliente crea una expedicion; el BFF reenvia a ws-pprx-shipments con deduplicacion | Operador PUDO, Cliente | Implementado | Ninguna | Ninguno | Crear expedicion duplicada con misma clave y verificar que no se duplica |
| BFF-02 | BFF | Listar expediciones con paginacion y filtros | El operador consulta expediciones filtradas por estado, rango de fechas y codigo de centro | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Listar con filtros combinados y verificar paginacion correcta |
| BFF-03 | BFF | Detalle de expedicion por codigo de barras | El operador consulta el detalle completo de una expedicion incluyendo historial de estados y POD | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Consultar expedicion existente y verificar campos completos |
| BFF-04 | BFF | Inicio de handshake de transportista | El transportista inicia el protocolo dual-QR generando un token de sesion | Transportista | Implementado | Ninguna | Ninguno | Iniciar handshake y verificar que se genera token de sesion |
| BFF-05 | BFF | Polling de estado de sesion QR | El transportista consulta periodicamente el estado de la sesion QR mientras espera validacion | Transportista | Implementado | Ninguna | Ninguno | Consultar sesion activa y verificar que responde PENDING/VALIDATED |
| BFF-06 | BFF | Validacion de sesion QR por operador PUDO | El operador escanea el QR del transportista y valida la sesion de entrega | Operador PUDO | Implementado | Ninguna | Ninguno | Validar sesion y verificar transicion de estado |
| BFF-07 | BFF | Listar expediciones pendientes para transportistas | El transportista consulta las expediciones pendientes de recogida | Transportista | Implementado | Ninguna | Ninguno | Consultar como transportista y verificar lista de pendientes |
| BFF-08 | BFF | Entrega multiple de paquetes en centro PUDO | El transportista entrega varios paquetes en un unico lote a un centro PUDO | Transportista | Implementado | Ninguna | Ninguno | Entregar 3+ paquetes en lote y verificar recepcion individual |
| BFF-09 | BFF | Recogida de paquete caducado por transportista | El transportista recoge un paquete caducado del centro PUDO para devolucion | Transportista | Implementado | Ninguna | Ninguno | Recoger paquete CADUCADO y verificar transicion a EN_DEVOLUCION |
| BFF-10 | BFF | Generacion de etiqueta HTML para impresion | El operador genera una etiqueta imprimible con codigo de barras, remitente, destinatario e info del centro | Operador PUDO | Implementado | Ninguna | Ninguno | Generar etiqueta y verificar HTML valido con datos correctos |
| BFF-11 | BFF | Obtener metadatos de POD | El operador consulta las URLs de firma y evidencia fotografica de una entrega | Operador PUDO, Administrador | Implementado | MinIO | Bucket MinIO proximiti-pod configurado | Consultar POD de expedicion entregada y verificar URLs |
| BFF-12 | BFF | Generar token de subida de POD | El sistema genera un token presignado para subir imagenes de POD a MinIO | Sistema | Implementado | MinIO | Bucket MinIO proximiti-pod configurado | Generar token y verificar que permite subida a MinIO |
| BFF-13 | BFF | Streaming de imagen POD via proxy | El portal muestra la imagen de firma o evidencia sin exponer URLs de MinIO | Operador PUDO, Cliente | Implementado | MinIO | Bucket MinIO proximiti-pod configurado | Solicitar imagen y verificar streaming de bytes correcto |
Proxy de Centros
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-14 | BFF | Listar centros para dropdowns de operador | El operador consulta el catalogo de centros para seleccion en formularios | Operador PUDO | Implementado | Ninguna | Catalogo de centros cargado | Listar centros y verificar mapeo de campos |
Agregacion de Dashboard
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-15 | BFF | Dashboard de operador | El operador ve el conteo de pendientes y capacidad desde llamadas paralelas internas | Operador PUDO | Implementado | Ninguna | Ninguno | Acceder al dashboard y verificar datos de pendientes y capacidad |
| BFF-16 | BFF | Dashboard de administrador | El admin ve totales de expediciones, desglose por estado, actividad 24h y resumen de centros | Administrador | Implementado | Ninguna | Ninguno | Acceder como admin y verificar todos los KPIs |
Centros Externos (Widget PUDO Selector)
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-17 | BFF | Busqueda de centros cercanos con geocodificacion | El cliente busca centros PUDO cercanos por codigo postal con calculo de distancia Haversine | Cliente | Implementado | Ninguna | Tabla de geocodificacion de codigos postales | Buscar por CP y verificar resultados ordenados por distancia |
| BFF-18 | BFF | Detalle de centro con horario, capacidad y fotos | El cliente ve la informacion completa de un centro seleccionado | Cliente | Implementado | Ninguna | Datos de centros con horarios y fotos | Consultar centro y verificar campos completos |
Tracking Publico
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-19 | BFF | Tracking sin autenticacion por codigo de barras | Cualquier persona consulta el estado de una expedicion con el codigo de barras | Todos | Implementado | Ninguna | Ninguno | Consultar expedicion sin token y verificar datos publicos |
Admin — Usuarios
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-20 | BFF | Listar usuarios con paginacion | El admin consulta todos los usuarios del sistema | Administrador | Implementado | Ninguna | Ninguno | Listar usuarios como admin y verificar paginacion |
| BFF-21 | BFF | Obtener usuario por ID | El admin consulta el detalle de un usuario especifico | Administrador | Implementado | Ninguna | Ninguno | Consultar usuario y verificar campos |
| BFF-22 | BFF | Actualizar rol y asignacion de centro | El admin modifica el rol o centro asignado a un usuario | Administrador | Implementado | Keycloak | Roles de Keycloak configurados | Cambiar rol y verificar actualizacion |
Admin — Centros
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-23 | BFF | Listar todos los centros con detalle completo | El admin consulta el catalogo completo de centros PUDO | Administrador | Implementado | Ninguna | Ninguno | Listar centros y verificar datos completos |
| BFF-24 | BFF | Obtener centro por codigo con ETag | El admin consulta un centro especifico; respuesta incluye ETag para control de concurrencia | Administrador | Implementado | Ninguna | Ninguno | Consultar centro y verificar cabecera ETag |
| BFF-25 | BFF | Crear centro | El admin da de alta un nuevo centro PUDO en el sistema | Administrador | Implementado | Ninguna | Datos del centro (direccion, horario, capacidad) | Crear centro y verificar 201 con Location header |
| BFF-26 | BFF | Actualizar centro con control de concurrencia ETag | El admin modifica un centro existente con bloqueo optimista If-Match | Administrador | Implementado | Ninguna | Ninguno | Actualizar con ETag correcto; intentar con ETag obsoleto y verificar 412 |
| BFF-27 | BFF | Borrado logico de centro | El admin desactiva un centro sin eliminarlo fisicamente | Administrador | Implementado | Ninguna | Ninguno | Eliminar centro y verificar 204; consultar y verificar que no aparece |
Admin — Datos Semilla
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-28 | BFF | Estado de datos semilla con conteos por dominio | El admin ve cuantos registros existen por cada tabla de dominio | Administrador | Implementado | Ninguna | Ninguno | Consultar estado y verificar conteos por tabla |
| BFF-29 | BFF | Cargar datos semilla con opcion de sobreescritura | El admin carga datos de prueba o iniciales con opcion de forzar sobreescritura | Administrador | Implementado | Ninguna | Ninguno | Cargar datos y verificar conteos incrementados |
| BFF-30 | BFF | Descargar todos los datos semilla | El admin elimina todos los datos de prueba del sistema | Administrador | Implementado | Ninguna | Ninguno | Descargar y verificar conteos a cero |
Admin — Introspeccion de Esquema
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-31 | BFF | Introspeccion de esquema de base de datos | El admin ve tablas, columnas, restricciones y relaciones FK de todas las tablas tp_pprx_* | Administrador | Implementado | Ninguna | Ninguno | Consultar esquema y verificar tablas y relaciones |
Admin — Adaptador/Proveedores
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-32 | BFF | Sincronizar catalogo de proveedor | El admin dispara la sincronizacion del catalogo de Kanguro o Hublocker | Administrador | Stub | Kanguro, Hublocker | URLs de API de produccion de Kanguro y Hublocker | Disparar sync y verificar que se registra en log de sincronizacion |
| BFF-33 | BFF | Listar proveedores con conteos y estado de sync | El admin ve los proveedores activos, cuantos centros tiene cada uno y la ultima sincronizacion | Administrador | Implementado | Ninguna | Ninguno | Listar proveedores y verificar datos |
Portal de Cliente
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-34 | BFF | Obtener perfil de cliente con fallback JWT | El cliente consulta su perfil; si no existe, se devuelven valores por defecto del JWT | Cliente | Implementado | Ninguna | Ninguno | Consultar perfil y verificar datos |
| BFF-35 | BFF | Actualizar perfil de cliente | El cliente modifica su nombre, telefono u otros datos personales | Cliente | Implementado | Ninguna | Ninguno | Actualizar perfil y verificar persistencia |
| BFF-36 | BFF | Listar direcciones guardadas | El cliente ve sus direcciones de envio guardadas | Cliente | Implementado | Ninguna | Ninguno | Listar direcciones y verificar datos |
| BFF-37 | BFF | Crear direccion | El cliente guarda una nueva direccion de envio | Cliente | Implementado | Ninguna | Ninguno | Crear direccion y verificar en lista |
| BFF-38 | BFF | Actualizar direccion | El cliente modifica una direccion existente | Cliente | Implementado | Ninguna | Ninguno | Actualizar y verificar cambios |
| BFF-39 | BFF | Eliminar direccion | El cliente borra una direccion guardada | Cliente | Implementado | Ninguna | Ninguno | Eliminar y verificar que desaparece de la lista |
| BFF-40 | BFF | Listado de expediciones del cliente | El cliente ve sus expediciones filtradas por su sub de Keycloak | Cliente | Implementado | Ninguna | Ninguno | Listar como cliente y verificar que solo muestra sus expediciones |
| BFF-41 | BFF | Dashboard del cliente | El cliente ve un resumen de actividad: expediciones activas, entregadas, etc. | Cliente | Implementado | Ninguna | Ninguno | Acceder al dashboard y verificar KPIs del cliente |
Proxy de Notificaciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-42 | BFF | Listar notificaciones con filtro por centro | El operador ve sus notificaciones paginadas y filtradas por su centro | Operador PUDO | Implementado | Ninguna | Ninguno | Listar notificaciones y verificar filtrado por centro |
| BFF-43 | BFF | Conteo de notificaciones no leidas | El sistema muestra el badge con el conteo de no leidas en la campana de notificaciones | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar conteo y que se actualiza al marcar como leida |
| BFF-44 | BFF | Marcar notificacion como leida | El operador marca una notificacion como leida | Operador PUDO | Implementado | Ninguna | Ninguno | Marcar y verificar que el conteo disminuye |
Proxy de Incidencias
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-45 | BFF | Listar incidencias con filtros | El operador o admin consulta incidencias filtradas por estado, tipo, severidad y centro | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Listar con filtros y verificar resultados |
| BFF-46 | BFF | Obtener incidencia por ID | El operador consulta el detalle de una incidencia con su trail de auditoria | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Consultar incidencia y verificar trail |
| BFF-47 | BFF | Crear incidencia | El operador reporta una incidencia vinculada a una expedicion | Operador PUDO | Implementado | Ninguna | Ninguno | Crear incidencia y verificar 201 |
| BFF-48 | BFF | Actualizar estado de incidencia | El admin cambia el estado de una incidencia (abierta, en curso, resuelta, cerrada) | Administrador | Implementado | Ninguna | Ninguno | Cambiar estado y verificar trail de auditoria |
| BFF-49 | BFF | Escalar incidencia | El operador escala una incidencia elevando su severidad y notificando a soporte | Operador PUDO | Implementado | Ninguna | Ninguno | Escalar y verificar cambio de severidad |
Proxy de Tarifas
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-50 | BFF | Listar tarifas activas | El cliente o operador ve las tarifas vigentes | Todos | Implementado | Ninguna | Tabla de tarifas configurada | Listar tarifas y verificar datos |
| BFF-51 | BFF | Estimar coste de envio por peso | El cliente calcula el coste estimado de un envio segun el peso | Cliente | Implementado | Ninguna | Tarifas cargadas en el sistema | Estimar coste con peso y verificar calculo |
| BFF-52 | BFF | Listar todas las tarifas (admin) | El admin ve todas las tarifas incluyendo las inactivas | Administrador | Implementado | Ninguna | Ninguno | Listar como admin y verificar que incluye inactivas |
| BFF-53 | BFF | Crear tarifa | El admin crea una nueva tarifa con rangos de peso y precios | Administrador | Implementado | Ninguna | Ninguno | Crear tarifa y verificar persistencia |
| BFF-54 | BFF | Actualizar tarifa | El admin modifica los parametros de una tarifa existente | Administrador | Implementado | Ninguna | Ninguno | Actualizar y verificar cambios |
| BFF-55 | BFF | Eliminar tarifa | El admin elimina una tarifa del sistema | Administrador | Implementado | Ninguna | Ninguno | Eliminar y verificar que desaparece |
Foto de Perfil
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-56 | BFF | Subir foto de perfil a MinIO | El usuario sube una foto de perfil (max 2MB, JPEG/PNG/WebP) que se almacena en MinIO | Todos | Implementado | MinIO | Bucket MinIO proximiti-photos configurado | Subir imagen y verificar almacenamiento en MinIO |
| BFF-57 | BFF | Streaming de foto de perfil | El sistema muestra la foto de perfil del usuario autenticado via proxy | Todos | Implementado | MinIO | Bucket MinIO proximiti-photos configurado | Solicitar foto y verificar streaming correcto |
| BFF-58 | BFF | Eliminar foto de perfil | El usuario elimina su foto de perfil de MinIO y limpia la URL | Todos | Implementado | MinIO | Bucket MinIO proximiti-photos configurado | Eliminar y verificar que no se puede recuperar |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| BFF-59 | BFF | Filtro de enriquecimiento usuario-centro | El sistema resuelve sub de Keycloak a centerId/centerCode con cache Caffeine de 5 min TTL | Sistema | Implementado | Keycloak | Keycloak operativo con usuarios configurados | Verificar que la resolucion funciona y que el cache se invalida |
| BFF-60 | BFF | Auto-provision de usuario en primer login | El sistema crea automaticamente un registro de usuario al primer login para todos los roles | Sistema | Implementado | Keycloak | Keycloak operativo | Hacer login con usuario nuevo y verificar que se crea registro |
| BFF-61 | BFF | Bypass de enriquecimiento para rutas de cliente | El sistema omite la resolucion de centro para rutas /api/v1/customer/* con fallback graceful | Sistema | Implementado | Ninguna | Ninguno | Acceder como cliente sin centro y verificar respuesta correcta |
| BFF-62 | BFF | Filtro de X-Correlation-Id | El sistema propaga el ID de correlacion en todas las peticiones para trazabilidad distribuida | Sistema | Implementado | Ninguna | Ninguno | Enviar peticion y verificar propagacion del header |
| BFF-63 | BFF | Filtro de limitacion de tasa | El sistema limita peticiones por IP (60/min) y por sujeto (120/min) para centros externos | Sistema | Implementado | Ninguna | Ninguno | Enviar rafaga de peticiones y verificar 429 |
| BFF-64 | BFF | Validacion de JWT via Spring Security OAuth2 | El sistema valida todos los tokens JWT contra el emisor de Keycloak | Sistema | Implementado | Keycloak | Keycloak operativo con emisor correcto | Enviar token invalido y verificar 401 |
| BFF-65 | BFF | Conversor de roles de Keycloak anidados | El sistema extrae roles de la estructura anidada realm_access.roles del JWT | Sistema | Implementado | Keycloak | Roles configurados en realm | Verificar que roles anidados se parsean correctamente |
| BFF-66 | BFF | Swagger/OpenAPI UI con flujo OAuth2 | El desarrollador o admin accede a la documentacion interactiva de la API con autenticacion OAuth2 | Administrador | Implementado | Keycloak | Keycloak operativo | Acceder a /swagger-ui y autenticar con usuario de prueba |
| BFF-67 | BFF | Configuracion de WebClient con tracing Zipkin | El sistema configura clientes HTTP para todos los servicios downstream con propagacion de trazas | Sistema | Implementado | Zipkin | Zipkin operativo (opcional, degrada con gracia) | Verificar trazas en Zipkin tras peticion end-to-end |
| BFF-68 | BFF | Servicio de almacenamiento de fotos de perfil en MinIO | El sistema gestiona operaciones CRUD directas contra MinIO para fotos de perfil | Sistema | Implementado | MinIO | MinIO operativo con bucket proximiti-photos | Subir, leer y eliminar foto via API |
Centros (ws-pprx-centers, puerto 8091)
API Publica
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CNTR-01 | Centros | Listar centros con paginacion y filtro por proveedor | El operador o admin consulta el catalogo de centros con filtros opcionales | Operador PUDO, Administrador | Implementado | Ninguna | Datos de centros cargados | Listar con filtro de proveedor y verificar resultados |
| CNTR-02 | Centros | Detalle de centro por codigo con ETag | El sistema obtiene un centro especifico con version ETag para control de concurrencia | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Consultar centro y verificar cabecera ETag |
| CNTR-03 | Centros | Crear centro PUDO (solo admin) | El admin registra un nuevo centro PUDO con direccion, horario y capacidad | Administrador | Implementado | Ninguna | Datos completos del centro | Crear centro y verificar 201 con Location |
| CNTR-04 | Centros | Actualizar centro con bloqueo optimista ETag | El admin modifica un centro existente; se requiere If-Match para evitar conflictos | Administrador | Implementado | Ninguna | Ninguno | Actualizar con ETag y verificar; probar con ETag obsoleto |
| CNTR-05 | Centros | Borrado logico de centro (solo admin) | El admin desactiva un centro sin eliminar datos | Administrador | Implementado | Ninguna | Ninguno | Eliminar y verificar 204 |
| CNTR-06 | Centros | Token presignado para documento de contrato | El sistema genera una URL presignada para subir un PDF de contrato (max 5MB) a MinIO | Administrador | Implementado | MinIO | Bucket MinIO proximiti-documents configurado | Generar token y verificar subida de PDF |
API Interna (Servicio a Servicio)
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CNTR-07 | Centros | Capacidad actual por ID de centro | Otros servicios consultan la capacidad disponible de un centro | Sistema | Implementado | Ninguna | Ninguno | Llamada interna y verificar datos de capacidad |
| CNTR-08 | Centros | Decremento atomico de capacidad con ETag | El servicio de expediciones decrementa la capacidad al recepcionar un paquete | Sistema | Implementado | Ninguna | Ninguno | Decrementar y verificar capacidad actualizada |
| CNTR-09 | Centros | Incremento atomico de capacidad con ETag | El servicio de expediciones incrementa la capacidad al retirar un paquete caducado | Sistema | Implementado | Ninguna | Ninguno | Incrementar y verificar capacidad actualizada |
| CNTR-10 | Centros | Resolver codigo de centro por ID numerico | Servicios internos obtienen el codigo alfanumerico a partir del ID numerico | Sistema | Implementado | Ninguna | Ninguno | Resolver ID y verificar codigo correcto |
| CNTR-11 | Centros | Resolver ID de centro por codigo | Servicios internos obtienen el ID numerico a partir del codigo alfanumerico | Sistema | Implementado | Ninguna | Ninguno | Resolver codigo y verificar ID correcto |
| CNTR-12 | Centros | Resumen de centros con datos de capacidad | El dashboard admin obtiene conteos de centros con metricas de capacidad | Sistema | Implementado | Ninguna | Ninguno | Consultar resumen y verificar datos |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CNTR-13 | Centros | Servicio de autorizacion por centro | El sistema verifica que el operador tiene acceso al centro solicitado, con bypass para admin | Sistema | Implementado | Ninguna | Ninguno | Acceder como operador a otro centro y verificar 403 |
| CNTR-14 | Centros | Integracion con MinIO para documentos de contrato | El sistema almacena documentos de contrato con URLs presignadas en MinIO | Sistema | Implementado | MinIO | MinIO operativo con bucket proximiti-documents | Subir documento y verificar almacenamiento |
| CNTR-15 | Centros | Bloqueo optimista JPA con campo version | El sistema usa versionado JPA para actualizaciones concurrentes de capacidad | Sistema | Implementado | Ninguna | Ninguno | Actualizar concurrentemente y verificar que una falla con 412 |
Expediciones (ws-pprx-shipments, puerto 8092)
CRUD de Expediciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-01 | Expediciones | Crear expedicion con deduplicacion por clave de idempotencia | El sistema crea una expedicion; si la clave ya existe, devuelve la existente sin duplicar | Sistema | Implementado | Ninguna | Ninguno | Crear con misma clave dos veces y verificar no duplicacion |
| SHPM-02 | Expediciones | Listar expediciones con paginacion, filtros y scoping por centro | El operador lista expediciones de su centro con filtros por estado, fecha y paginacion | Operador PUDO | Implementado | Ninguna | Ninguno | Listar con filtros y verificar scoping por centro |
| SHPM-03 | Expediciones | Detalle de expedicion con historial y POD | El sistema devuelve todos los datos de una expedicion incluyendo estados historicos y datos de POD | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Consultar detalle y verificar historial completo |
| SHPM-04 | Expediciones | Listado de expediciones por sub del remitente | El portal de cliente lista solo las expediciones del cliente autenticado | Cliente | Implementado | Ninguna | Ninguno | Listar como cliente y verificar que solo ve las suyas |
Tracking
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-05 | Expediciones | Tracking publico por codigo de barras | Cualquier persona consulta el estado de una expedicion con timestamps y codigos de centro | Todos | Implementado | Ninguna | Ninguno | Consultar sin autenticacion y verificar datos publicos |
Maquina de Estados
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-06 | Expediciones | Dispatcher de acciones de transicion de estado | El sistema procesa acciones (recibir, entregar, caducar, recoger) y ejecuta la transicion correspondiente | Sistema | Implementado | Ninguna | Ninguno | Ejecutar cada accion y verificar transicion |
| SHPM-07 | Expediciones | Transicion a RECEPCIONADO | El operador recepciona un paquete; se valida centro, se decrementa capacidad | Operador PUDO | Implementado | ws-pprx-centers | Servicio de centros operativo | Recepcionar y verificar estado + capacidad decrementada |
| SHPM-08 | Expediciones | Transicion a ENTREGADO | El operador entrega un paquete; se requiere POD (firma + evidencia), se registra timestamp | Operador PUDO | Implementado | MinIO | MinIO para almacenar POD | Entregar con POD y verificar estado + timestamp |
| SHPM-09 | Expediciones | Transicion a CADUCADO | El sistema marca un paquete como caducado al superar el periodo de retencion | Sistema | Implementado | Ninguna | Ninguno | Marcar como caducado y verificar timestamp |
| SHPM-10 | Expediciones | Transicion a EN_DEVOLUCION | El transportista recoge un paquete caducado; se incrementa capacidad del centro | Transportista | Implementado | ws-pprx-centers | Servicio de centros operativo | Recoger y verificar estado + capacidad incrementada |
| SHPM-11 | Expediciones | Transicion a DEVUELTO | El sistema marca un paquete como devuelto al completar la devolucion | Sistema | Implementado | Ninguna | Ninguno | Marcar como devuelto y verificar estado final |
Protocolo Dual-QR
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-12 | Expediciones | Inicio de handshake — generacion de token de sesion QR | El transportista inicia la entrega generando un token QR unico | Transportista | Implementado | Ninguna | Ninguno | Iniciar y verificar token generado |
| SHPM-13 | Expediciones | Polling de estado de sesion QR | El transportista consulta si el operador ha validado su sesion QR | Transportista | Implementado | Ninguna | Ninguno | Consultar sesion y verificar estados PENDING/VALIDATED |
| SHPM-14 | Expediciones | Validacion de sesion QR por operador | El operador PUDO escanea el QR del transportista y confirma la entrega | Operador PUDO | Implementado | Ninguna | Ninguno | Validar sesion y verificar transicion |
Operaciones de Transportista
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-15 | Expediciones | Listar expediciones pendientes para recogida | El transportista ve los paquetes que debe recoger de los centros | Transportista | Implementado | Ninguna | Ninguno | Listar pendientes y verificar lista |
| SHPM-16 | Expediciones | Entrega en lote de multiples paquetes | El transportista entrega varios paquetes a la vez en un centro PUDO | Transportista | Implementado | Ninguna | Ninguno | Entregar lote y verificar resultado por paquete |
| SHPM-17 | Expediciones | Recogida de paquete caducado con incremento de capacidad | El transportista recoge un paquete caducado y la capacidad del centro se incrementa | Transportista | Implementado | ws-pprx-centers | Servicio de centros operativo | Recoger y verificar capacidad incrementada |
POD (Prueba de Entrega)
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-18 | Expediciones | Generar token presignado para subida de imagenes POD | El sistema genera URLs temporales para que la app movil suba imagenes de POD | Sistema | Implementado | MinIO | MinIO con bucket proximiti-pod | Generar token y verificar subida exitosa |
| SHPM-19 | Expediciones | Obtener metadatos de POD — firma y evidencia | El sistema devuelve las URLs de las imagenes de firma y evidencia fotografica | Operador PUDO, Administrador | Implementado | MinIO | MinIO con bucket proximiti-pod | Consultar POD y verificar URLs |
| SHPM-20 | Expediciones | Streaming de imagen POD por tipo | El sistema transmite los bytes de la imagen de POD (firma o evidencia) | Operador PUDO, Administrador | Implementado | MinIO | MinIO con bucket proximiti-pod | Solicitar imagen y verificar content-type correcto |
Generacion de Etiquetas
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-21 | Expediciones | Etiqueta HTML imprimible con codigo de barras | El sistema genera HTML con datos de envio, codigo de barras e info del centro para imprimir | Operador PUDO | Implementado | Ninguna | Ninguno | Generar etiqueta y verificar HTML correcto |
API Interna (Servicio a Servicio)
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-22 | Expediciones | Conteo de pendientes por centro para dashboard | El BFF obtiene el conteo de expediciones pendientes de un centro | Sistema | Implementado | Ninguna | Ninguno | Consultar conteo y verificar valor |
| SHPM-23 | Expediciones | Estadisticas de expediciones — totales, por estado, 24h | El BFF obtiene estadisticas globales para el dashboard admin | Sistema | Implementado | Ninguna | Ninguno | Consultar estadisticas y verificar desglose |
| SHPM-24 | Expediciones | Estadisticas de cliente por sub del remitente | El BFF obtiene estadisticas de expediciones para un cliente especifico | Sistema | Implementado | Ninguna | Ninguno | Consultar como cliente y verificar datos |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| SHPM-25 | Expediciones | Puerto de almacenamiento MinIO para imagenes POD | El servicio gestiona almacenamiento y recuperacion de imagenes POD con URLs presignadas y streaming | Sistema | Implementado | MinIO | MinIO con bucket proximiti-pod | Subir, leer y eliminar imagen de POD |
Usuarios (ws-pprx-users, puerto 8093)
Gestion de Usuarios
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| USR-01 | Usuarios | Resolver centro de usuario por sub de Keycloak | El BFF obtiene el centerId y centerCode de un usuario a partir de su sub de Keycloak | Sistema | Implementado | Keycloak | Usuarios registrados en Keycloak y mapeados | Resolver sub y verificar centro correcto |
| USR-02 | Usuarios | Provision de usuario en primer login | El sistema crea automaticamente un registro en tp_pprx_usuario al primer login | Sistema | Implementado | Keycloak | Keycloak operativo | Login con usuario nuevo y verificar registro creado |
| USR-03 | Usuarios | Listar usuarios con paginacion | El admin lista todos los usuarios del sistema con paginacion | Administrador | Implementado | Ninguna | Ninguno | Listar y verificar paginacion |
| USR-04 | Usuarios | Obtener usuario por ID | El admin consulta el detalle de un usuario especifico | Administrador | Implementado | Ninguna | Ninguno | Consultar y verificar campos |
| USR-05 | Usuarios | Actualizar rol y asignacion de centro | El admin modifica el rol o centro de un usuario | Administrador | Implementado | Ninguna | Ninguno | Actualizar y verificar persistencia |
URL de Foto de Perfil
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| USR-06 | Usuarios | Obtener URL de foto de perfil | El sistema obtiene la URL de foto de perfil del usuario autenticado | Todos | Implementado | Ninguna | Ninguno | Consultar y verificar URL |
| USR-07 | Usuarios | Actualizar URL de foto de perfil | El sistema actualiza la URL tras subir una nueva foto | Todos | Implementado | Ninguna | Ninguno | Actualizar y verificar persistencia |
| USR-08 | Usuarios | Eliminar URL de foto de perfil | El sistema limpia la URL de foto al eliminarla | Todos | Implementado | Ninguna | Ninguno | Eliminar y verificar que URL queda nula |
Gestion de Clientes
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| USR-09 | Usuarios | Obtener perfil de cliente por sub | El cliente consulta su perfil personal | Cliente | Implementado | Ninguna | Ninguno | Consultar perfil y verificar datos |
| USR-10 | Usuarios | Actualizar perfil de cliente | El cliente modifica sus datos personales (nombre, telefono, etc.) | Cliente | Implementado | Ninguna | Ninguno | Actualizar y verificar persistencia |
| USR-11 | Usuarios | Provision de cliente en primer login | El sistema crea un registro de cliente automaticamente al primer login | Sistema | Implementado | Keycloak | Keycloak operativo | Login como cliente nuevo y verificar registro |
| USR-12 | Usuarios | Listar direcciones del cliente | El cliente ve sus direcciones guardadas | Cliente | Implementado | Ninguna | Ninguno | Listar y verificar direcciones |
| USR-13 | Usuarios | Crear direccion | El cliente agrega una nueva direccion de envio | Cliente | Implementado | Ninguna | Ninguno | Crear y verificar en lista |
| USR-14 | Usuarios | Actualizar direccion | El cliente modifica una direccion existente | Cliente | Implementado | Ninguna | Ninguno | Actualizar y verificar cambios |
| USR-15 | Usuarios | Eliminar direccion | El cliente elimina una direccion guardada | Cliente | Implementado | Ninguna | Ninguno | Eliminar y verificar que desaparece |
Notificaciones (ws-pprx-notifications, puerto 8094)
Notificaciones de Usuario
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| NOTF-01 | Notificaciones | Listar notificaciones por centro con paginacion | El operador ve sus notificaciones ordenadas por fecha descendente | Operador PUDO | Implementado | Ninguna | Ninguno | Listar y verificar paginacion y orden |
| NOTF-02 | Notificaciones | Conteo de notificaciones no leidas | El sistema proporciona el conteo para el badge de la campana | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar conteo correcto |
| NOTF-03 | Notificaciones | Marcar notificacion como leida | El operador marca una notificacion como leida; el conteo de no leidas disminuye | Operador PUDO | Implementado | Ninguna | Ninguno | Marcar y verificar conteo actualizado |
Disparadores de Notificaciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| NOTF-04 | Notificaciones | Disparar envio de notificacion | El sistema dispara una notificacion que crea un registro de usuario; en v2.0 el envio externo es stub | Sistema | Stub | NOVA | Contrato con NOVA Mulesoft para envio real de notificaciones (SMS/email/push). En v2.0 solo se registra en log | Verificar que se crea registro en BD; en produccion verificar envio real via NOVA |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| NOTF-05 | Notificaciones | Integracion stub con NOVA | El servicio simula la llamada a NOVA Mulesoft con patron fire-and-forget y timeout de 500ms; solo registra en log | Sistema | Stub | NOVA | Endpoint y credenciales de NOVA Mulesoft API. Implementar cliente HTTP real sustituyendo el log | Verificar que el log registra la llamada; en produccion verificar llamada HTTP real a NOVA |
Caducidad (ws-pprx-expired, puerto 8095)
Procesamiento de Caducidad
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| EXPR-01 | Caducidad | Marcar expediciones caducadas | El sistema escanea expediciones que han superado el periodo de retencion y las marca como CADUCADO | Sistema | Implementado | ws-pprx-shipments | Servicio de expediciones operativo | Ejecutar marcado y verificar transiciones |
| EXPR-02 | Caducidad | Notificar a ALINA — procesar cola outbox | El sistema procesa la cola de outbox para reportar paquetes caducados a ALINA ERP; en v2.0 la llamada HTTP es stub (solo log) | Sistema | Stub | ALINA | Endpoint y credenciales de ALINA ERP API. Implementar cliente HTTP real en dispatchToAlina() sustituyendo el log | Verificar procesamiento de outbox; en produccion verificar llamada HTTP real a ALINA |
| EXPR-03 | Caducidad | Reintentar notificacion ALINA fallida | El admin re-dispara una notificacion que fue a dead letter, resetando conteo de intentos | Administrador | Stub | ALINA | Mismos prerequisitos que EXPR-02 | Reintentar registro DLQ y verificar que vuelve a PENDING |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| EXPR-04 | Caducidad | Patron outbox transaccional | El sistema escribe en la tabla outbox dentro de la misma transaccion que la entidad; entrega asincrona con reintentos | Sistema | Implementado | Ninguna | Ninguno | Verificar que outbox se crea en misma transaccion |
| EXPR-05 | Caducidad | Cola de dead letter (DLQ) | El sistema mueve a DLQ los registros que agotan el presupuesto de reintentos (5 intentos con backoff exponencial) | Sistema | Implementado | Ninguna | Ninguno | Agotar reintentos y verificar movimiento a DLQ |
Incidencias (ws-pprx-issues, puerto 8096)
Gestion de Incidencias
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| ISSU-01 | Incidencias | Crear incidencia con tipo, severidad y referencia de expedicion | El operador reporta un problema vinculado a una expedicion especifica | Operador PUDO | Implementado | Ninguna | Ninguno | Crear incidencia y verificar 201 |
| ISSU-02 | Incidencias | Obtener incidencia por ID con trail de auditoria | El operador o admin consulta una incidencia con su historial completo de cambios | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Consultar y verificar trail de auditoria |
| ISSU-03 | Incidencias | Listar incidencias con filtros | El admin filtra incidencias por estado, tipo, severidad y centro | Administrador | Implementado | Ninguna | Ninguno | Listar con filtros combinados y verificar resultados |
| ISSU-04 | Incidencias | Actualizar estado de incidencia con log de auditoria | El admin cambia el estado de una incidencia; se registra automaticamente en el trail | Administrador | Implementado | Ninguna | Ninguno | Cambiar estado y verificar entrada en trail |
| ISSU-05 | Incidencias | Escalar incidencia — elevar severidad y notificar | El operador escala una incidencia no resuelta; se incrementa la severidad | Operador PUDO | Implementado | Ninguna | Ninguno | Escalar y verificar severidad incrementada |
Soporte
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| ISSU-06 | Incidencias | Generar token de chat de soporte | El sistema genera un token para iniciar una sesion de chat con soporte; en v2.0 el proveedor de chat es stub | Operador PUDO | Stub | Proveedor de chat | Contrato con proveedor de chat en vivo. Implementar cliente real en SupportChatService sustituyendo token stub | Verificar generacion de token; en produccion verificar conexion con proveedor real |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| ISSU-07 | Incidencias | Trail de auditoria automatico | El sistema registra automaticamente todos los cambios de estado con timestamp y actor | Sistema | Implementado | Ninguna | Ninguno | Cambiar estado y verificar registro en tp_pprx_incidencia_audit |
Adaptador (ws-pprx-adapter, puerto 8086)
Integracion con Proveedores
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| ADPT-01 | Adaptador | Sincronizacion de catalogo de proveedor | El admin dispara la descarga del catalogo de centros desde Kanguro o Hublocker; en v2.0 se comunica con servicios stub | Administrador | Stub | Kanguro, Hublocker | URLs de API de produccion de Kanguro y Hublocker. Sustituir URLs de stub (stub-kanguro:8098, stub-hublocker:8097) por URLs reales en configuracion | Disparar sync y verificar registros en tp_pprx_sync_centro; en produccion verificar contra catalogo real |
| ADPT-02 | Adaptador | Consulta de disponibilidad por proveedor y centro | El sistema consulta la disponibilidad de un centro en un proveedor especifico | Sistema | Stub | Kanguro, Hublocker | Mismos prerequisitos que ADPT-01 | Consultar disponibilidad y verificar respuesta |
| ADPT-03 | Adaptador | Notificacion de recepcion a proveedor (fire-and-forget) | El sistema notifica al proveedor cuando un paquete es recepcionado en uno de sus centros | Sistema | Stub | Kanguro, Hublocker | Mismos prerequisitos que ADPT-01 | Verificar que la notificacion se registra en log |
Webhooks
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| ADPT-04 | Adaptador | Receptor de webhook de Kanguro con validacion de firma | El sistema recibe notificaciones de Kanguro y valida la firma HMAC del payload | Sistema | Implementado | Kanguro | Secret de firma HMAC compartido con Kanguro | Enviar webhook con firma valida y verificar procesamiento; enviar con firma invalida y verificar rechazo |
| ADPT-05 | Adaptador | Receptor de webhook de Hublocker con validacion de firma | El sistema recibe notificaciones de Hublocker y valida la firma HMAC del payload | Sistema | Implementado | Hublocker | Secret de firma HMAC compartido con Hublocker | Enviar webhook con firma valida y verificar procesamiento |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| ADPT-06 | Adaptador | Registro pluggable de adaptadores de proveedor | El framework de adaptadores permite registrar KanguroAdapter y HublockerAdapter (y futuros proveedores) de forma pluggable | Sistema | Implementado | Ninguna | Ninguno | Verificar que ambos adaptadores estan registrados en el registry |
Portal de Cliente (client-portal, puerto 3000)
Autenticacion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-01 | Portal Cliente | Login OIDC con Keycloak y flujo PKCE | El usuario inicia sesion via Keycloak con flujo PKCE seguro | Todos | Implementado | Keycloak | Keycloak operativo con cliente proximiti-bff configurado | Login y verificar token obtenido |
| CP-02 | Portal Cliente | Refresco silencioso de token con reintento automatico | El sistema renueva el token JWT de forma transparente antes de que expire | Todos | Implementado | Keycloak | Keycloak operativo | Esperar expiracion y verificar renovacion transparente |
| CP-03 | Portal Cliente | Seleccion de shell basada en rol | El sistema detecta el rol del JWT y muestra AppShell (operador/admin/carrier) o CustomerShell (cliente) | Todos | Implementado | Keycloak | Roles correctamente asignados en Keycloak | Login con cada rol y verificar shell correcto |
| CP-04 | Portal Cliente | Componente RoleGuard para rutas protegidas | El sistema redirige a usuarios no autorizados que intentan acceder a rutas restringidas | Todos | Implementado | Ninguna | Ninguno | Acceder a /admin como operador y verificar redireccion |
Dashboard de Operador
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-05 | Portal Cliente | Dashboard con conteo de pendientes y barra de capacidad | El operador ve de un vistazo cuantos paquetes tiene pendientes y el porcentaje de capacidad usado | Operador PUDO | Implementado | Ninguna | Ninguno | Acceder al dashboard y verificar datos en tiempo real |
| CP-06 | Portal Cliente | Porcentaje de capacidad con umbrales de color | La barra de capacidad cambia de verde a amarillo a rojo segun el porcentaje de uso | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar colores en distintos niveles de capacidad |
| CP-07 | Portal Cliente | Lista de expediciones recientes con badges de estado | El operador ve las ultimas expediciones con badges coloreados por estado | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar badges para cada estado |
Gestion de Expediciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-08 | Portal Cliente | Lista de expediciones con paginacion, filtro de estado y rango de fechas | El operador busca y filtra expediciones con multiples criterios | Operador PUDO | Implementado | Ninguna | Ninguno | Filtrar por estado + fecha y verificar resultados |
| CP-09 | Portal Cliente | Pagina de detalle con timeline completo e info de centro | El operador ve el ciclo de vida completo de una expedicion con toda la informacion | Operador PUDO | Implementado | Ninguna | Ninguno | Ver detalle de expedicion con historial |
| CP-10 | Portal Cliente | Componente TrackingStepper vertical con ramificacion | El stepper muestra el flujo feliz (3 pasos) o el flujo de caducidad (6 pasos) segun el estado | Todos | Implementado | Ninguna | Ninguno | Verificar stepper en ambos flujos |
| CP-11 | Portal Cliente | Cuenta regresiva de retencion con colores de urgencia | El sistema muestra dias restantes hasta caducidad con verde > amarillo > rojo | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar colores en distintos plazos |
| CP-12 | Portal Cliente | Visualizacion de POD via proxy BFF — firma y evidencia | El operador ve las imagenes de firma y evidencia fotografica de una entrega | Operador PUDO, Administrador | Implementado | MinIO | MinIO con imagenes POD | Ver detalle de expedicion entregada y verificar imagenes |
| CP-13 | Portal Cliente | Formulario de nueva expedicion con autocompletado y seleccion de centro | El operador o cliente crea una expedicion con asistencia de direccion y selector de centro | Operador PUDO, Cliente | Implementado | Ninguna | Centros cargados | Crear expedicion desde el formulario |
| CP-14 | Portal Cliente | Boton de imprimir etiqueta con dialogo del navegador | El operador imprime la etiqueta de una expedicion directamente desde el detalle | Operador PUDO | Implementado | Ninguna | Ninguno | Pulsar imprimir y verificar dialogo del navegador |
Gestion de Recogidas
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-15 | Portal Cliente | Pagina de recogidas con expediciones en estado RECEPCIONADO | El operador ve los paquetes esperando recogida, ordenados por antiguedad con tiempo de espera | Operador PUDO | Implementado | Ninguna | Ninguno | Acceder a recogidas y verificar filtrado automatico a RECEPCIONADO |
Certificados
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-16 | Portal Cliente | Lista de certificados con descarga y estado de caducidad | El operador consulta certificados emitidos con wizard de creacion; maneja 404 gracefully mostrando "proximamente" | Operador PUDO | Implementado | Ninguna | API de certificados en BFF (actualmente devuelve 404 graceful) | Verificar lista y wizard de creacion |
Reclamaciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-17 | Portal Cliente | Lista de reclamaciones con filtros de estado | El operador consulta reclamaciones filtradas por estado, tipo y severidad | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Listar con filtros y verificar resultados |
| CP-18 | Portal Cliente | Vista de detalle de reclamacion con timeline | El operador ve el detalle completo de una reclamacion con su historial de cambios | Operador PUDO, Administrador | Implementado | Ninguna | Ninguno | Ver detalle y verificar timeline |
| CP-19 | Portal Cliente | Formulario de nueva reclamacion con referencia de expedicion | El operador crea una nueva reclamacion vinculada a una expedicion | Operador PUDO | Implementado | Ninguna | Ninguno | Crear reclamacion y verificar 201 |
Informes
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-20 | Portal Cliente | Dashboard de informes con volumenes y opciones de exportacion | El admin ve graficos de volumen de expediciones con datos del dashboard agregado; exportacion no implementada | Administrador | Implementado | Ninguna | Ninguno | Acceder a informes y verificar graficos de datos reales |
Notificaciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-21 | Portal Cliente | Pagina de notificaciones con estado leido/no leido y accion marcar como leida | El operador ve sus notificaciones y las marca como leidas | Operador PUDO | Implementado | Ninguna | Ninguno | Ver notificaciones y marcar como leida |
| CP-22 | Portal Cliente | Badge de campana con conteo de no leidas en sidebar | La campana muestra un badge con el numero de notificaciones sin leer | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar badge y que se actualiza |
Panel de Administracion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-23 | Portal Cliente | Tabla de gestion de usuarios con edicion de roles y asignacion de centro | El admin gestiona usuarios, cambia roles y asigna centros | Administrador | Implementado | Keycloak | Keycloak operativo | Editar rol de usuario y verificar persistencia |
| CP-24 | Portal Cliente | Gestion de centros con CRUD y filtro por proveedor | El admin crea, edita y elimina centros con filtrado por proveedor | Administrador | Implementado | Ninguna | Ninguno | Crear, editar y eliminar centro |
| CP-25 | Portal Cliente | Controles de datos semilla — cargar, descargar y estado | El admin gestiona los datos de prueba del sistema | Administrador | Implementado | Ninguna | Ninguno | Cargar y verificar conteos |
| CP-26 | Portal Cliente | Schema Explorer — canvas ERD con React Flow y dagre | El admin ve un diagrama entidad-relacion interactivo de la base de datos | Administrador | Implementado | Ninguna | Ninguno | Navegar el canvas ERD y verificar tablas |
| CP-27 | Portal Cliente | Panel de detalle de esquema — columnas, PK, FK, CHECK, UNIQUE, indices | El admin inspecciona la estructura detallada de cada tabla | Administrador | Implementado | Ninguna | Ninguno | Seleccionar tabla y verificar detalles |
| CP-28 | Portal Cliente | Filtro de busqueda de esquema con resaltado instantaneo | El admin busca tablas por nombre y se resaltan en el canvas | Administrador | Implementado | Ninguna | Ninguno | Buscar tabla y verificar resaltado |
| CP-29 | Portal Cliente | Tooltip de arista FK mostrando tabla y columna referenciada | Al pasar el raton sobre una arista FK se muestra la relacion completa | Administrador | Implementado | Ninguna | Ninguno | Hover sobre arista y verificar tooltip |
Integraciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-30 | Portal Cliente | Pagina de integraciones con triggers de sync Kanguro y Hublocker | El admin dispara sincronizaciones de proveedores externos desde la interfaz | Administrador | Implementado | Kanguro, Hublocker | Proveedores configurados | Disparar sync y verificar resultado |
| CP-31 | Portal Cliente | Lista de proveedores con conteos de centros y timestamp de sync | El admin ve los proveedores con su estado de sincronizacion | Administrador | Implementado | Ninguna | Ninguno | Verificar lista con datos |
| CP-32 | Portal Cliente | Guard de admin a nivel de componente como defensa en profundidad | La pagina de integraciones muestra "Acceso Denegado" a usuarios sin rol admin | Administrador | Implementado | Ninguna | Ninguno | Acceder sin rol admin y verificar bloqueo |
Hub de Documentacion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-33 | Portal Cliente | Visor Swagger/OpenAPI embebido en /docs | El admin accede a la documentacion interactiva de la API desde el portal | Administrador | Implementado | Ninguna | Ninguno | Acceder a /docs y verificar Swagger UI |
| CP-34 | Portal Cliente | Navegacion de documentacion API con agrupacion por tags | El admin navega los endpoints organizados por controlador/tag | Administrador | Implementado | Ninguna | Ninguno | Verificar agrupacion por tags |
Tarifas
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-35 | Portal Cliente | Calculadora de tarifas con estimacion por peso | El cliente calcula el coste estimado de un envio; usa logica local con tarifas fijas (sin backend) | Cliente, Operador PUDO | Implementado | Ninguna | Tarifas reales de Ontime para sustituir las ilustrativas | Calcular coste y verificar resultado |
| CP-36 | Portal Cliente | Gestion CRUD de tarifas para admin | El admin crea, edita y elimina tarifas desde la interfaz | Administrador | Implementado | Ninguna | Ninguno | Crear, editar y eliminar tarifa |
Perfil de Operador
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-37 | Portal Cliente | Pagina de perfil de operador con info personal y foto | El operador ve su perfil con avatar (subida via AvatarUpload), informacion de cuenta y enlace a seguridad de Keycloak | Operador PUDO, Administrador, Transportista | Implementado | Keycloak | Keycloak operativo | Verificar datos de perfil y funcionalidad de avatar |
Shell de Cliente
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-38 | Portal Cliente | Dashboard de cliente con resumen de expediciones activas | El cliente ve un resumen de sus expediciones con acciones rapidas | Cliente | Implementado | Ninguna | Ninguno | Acceder como cliente y verificar KPIs |
| CP-39 | Portal Cliente | Lista de expediciones de cliente con filtrado por estado | El cliente consulta sus expediciones con filtros | Cliente | Implementado | Ninguna | Ninguno | Filtrar por estado y verificar resultados |
| CP-40 | Portal Cliente | Formulario de nueva expedicion con direcciones guardadas | El cliente crea una expedicion seleccionando entre sus direcciones guardadas | Cliente | Implementado | Ninguna | Direcciones guardadas | Crear expedicion con direccion guardada |
| CP-41 | Portal Cliente | Pagina de tracking con busqueda publica y TrackingStepper | El cliente busca una expedicion por codigo de barras y ve el stepper de seguimiento | Cliente | Implementado | Ninguna | Ninguno | Buscar expedicion y verificar stepper |
| CP-42 | Portal Cliente | Libro de direcciones del cliente — CRUD | El cliente gestiona sus direcciones de envio (crear, editar, eliminar) | Cliente | Implementado | Ninguna | Ninguno | Crear, editar y eliminar direccion |
| CP-43 | Portal Cliente | Perfil de cliente con info personal y preferencias | El cliente ve y edita su perfil personal con seccion hero y tarjeta de seguridad | Cliente | Implementado | Ninguna | Ninguno | Ver y editar perfil |
| CP-44 | Portal Cliente | Calculadora de tarifas para cliente | El cliente calcula costes de envio desde su shell (misma calculadora que CP-35) | Cliente | Implementado | Ninguna | Tarifas reales de Ontime | Calcular coste como cliente |
Layout y Navegacion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-45 | Portal Cliente | Sidebar colapsable con items de menu basados en rol | La sidebar muestra opciones segun el rol del usuario y puede colapsarse | Todos | Implementado | Ninguna | Ninguno | Verificar items por rol y colapso |
| CP-46 | Portal Cliente | Layout responsive — desktop y tablet | La interfaz se adapta a pantallas de escritorio y tablet | Todos | Implementado | Ninguna | Ninguno | Verificar en distintos tamanos de pantalla |
| CP-47 | Portal Cliente | Navegacion con breadcrumbs y etiquetas dinamicas de ruta | La barra de navegacion muestra breadcrumbs contextuales segun la ruta activa | Todos | Implementado | Ninguna | Ninguno | Navegar entre paginas y verificar breadcrumbs |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CP-48 | Portal Cliente | Transporter Design System v1.0 — CSS custom properties | El portal usa tokens CSS unificados (colores, tipografia, espaciado) del sistema de diseno Transporter | Todos | Implementado | Ninguna | Ninguno | Verificar coherencia visual con tokens de diseno |
| CP-49 | Portal Cliente | React Query para estado de servidor con invalidacion automatica | El portal gestiona cache de datos del servidor con invalidacion tras mutaciones | Todos | Implementado | Ninguna | Ninguno | Crear entidad y verificar actualizacion automatica de listas |
PUDO Manager App (pudo-manager-app, Flutter)
Autenticacion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-01 | PUDO Manager | Login OIDC con Keycloak y almacenamiento seguro | El operador inicia sesion via Keycloak con tokens almacenados en flutter_secure_storage | Operador PUDO | Implementado | Keycloak | Keycloak operativo con proximiti-bff | Login y verificar almacenamiento seguro del token |
| PUDO-02 | PUDO Manager | Refresco automatico de token con logica de reintento | La app renueva el token transparentemente antes de que expire | Operador PUDO | Implementado | Keycloak | Keycloak operativo | Esperar expiracion y verificar renovacion |
| PUDO-03 | PUDO Manager | Fix de keychain macOS — FixedMacOsOptions | La app funciona en macOS sin firma de desarrollo gracias a opciones de keychain corregidas | Operador PUDO | Implementado | Ninguna | Ninguno | Ejecutar en macOS sin firma y verificar login |
Dashboard
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-04 | PUDO Manager | Dashboard con conteo de pendientes y uso de capacidad | El operador ve de un vistazo el estado de su centro | Operador PUDO | Implementado | Ninguna | Ninguno | Acceder y verificar datos actualizados |
| PUDO-05 | PUDO Manager | Botones de accion rapida — recibir, entregar, escanear | El operador accede rapidamente a las funciones principales desde el dashboard | Operador PUDO | Implementado | Ninguna | Ninguno | Pulsar cada boton y verificar navegacion |
Recepcion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-06 | PUDO Manager | Recepcion de paquete con escaneo de codigo de barras | El operador escanea el codigo de barras de un paquete para recepcionarlo usando mobile_scanner | Operador PUDO | Implementado | Ninguna | Dispositivo con camara | Escanear codigo y verificar recepcion |
| PUDO-07 | PUDO Manager | Handshake dual-QR — operador valida sesion del transportista | El operador escanea el QR del transportista para confirmar la entrega al centro | Operador PUDO | Implementado | Ninguna | Ninguno | Escanear QR y verificar validacion |
| PUDO-08 | PUDO Manager | Verificacion de capacidad antes de recepcion | La app verifica que hay espacio disponible antes de recepcionar y muestra error amigable si no hay | Operador PUDO | Implementado | Ninguna | Ninguno | Intentar recepcionar con capacidad llena |
Entrega
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-09 | PUDO Manager | Flujo de entrega con captura de POD — firma + foto + ID | El operador captura la firma del destinatario, toma foto de evidencia y verifica identificacion | Operador PUDO | Implementado | MinIO | MinIO operativo | Completar flujo de entrega con los 3 elementos |
| PUDO-10 | PUDO Manager | Subida de POD via URL presignada a MinIO | La app sube las imagenes de POD directamente a MinIO usando URLs presignadas | Operador PUDO | Implementado | MinIO | MinIO con bucket proximiti-pod | Subir POD y verificar en MinIO |
| PUDO-11 | PUDO Manager | Confirmacion de entrega con transicion a ENTREGADO | La app confirma la entrega tras capturar POD y el paquete pasa a estado ENTREGADO | Operador PUDO | Implementado | Ninguna | Ninguno | Entregar y verificar estado final |
Protocolo Dual-QR
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-12 | PUDO Manager | Visualizacion de codigo QR para escaneo por transportista | La app muestra un QR que el transportista escanea para la entrega | Operador PUDO | Implementado | Ninguna | Ninguno | Generar QR y verificar escaneo |
| PUDO-13 | PUDO Manager | Polling de sesion QR con timeout y reintento | La app consulta periodicamente el estado de la sesion QR hasta validacion o timeout | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar polling y timeout |
Capacidad
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-14 | PUDO Manager | Visualizacion de capacidad en tiempo real con indicador visual | El operador ve la capacidad actual de su centro con indicador grafico | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar indicador y actualizacion |
| PUDO-15 | PUDO Manager | Historial y tendencia de capacidad | El operador ve la evolucion de la capacidad de su centro | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar historial con datos |
Historial
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-16 | PUDO Manager | Historial de expediciones con busqueda y filtro de estado | El operador busca expediciones pasadas por codigo de barras o estado | Operador PUDO | Implementado | Ninguna | Ninguno | Buscar y filtrar expediciones |
Modo Offline
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-17 | PUDO Manager | Base de datos local Hive para cola offline | La app almacena operaciones en Hive cuando no hay conexion | Operador PUDO | Implementado | Ninguna | Ninguno | Operar sin conexion y verificar almacenamiento local |
| PUDO-18 | PUDO Manager | Sincronizacion automatica al restaurar conectividad | La app sincroniza automaticamente las operaciones pendientes cuando vuelve la conexion | Operador PUDO | Implementado | Ninguna | Ninguno | Restaurar conexion y verificar sincronizacion |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| PUDO-19 | PUDO Manager | AppTheme design system — tokens Transporter v1.0 | La app usa tokens de diseno unificados via app_theme.dart (colores, tipografia, espaciado) | Operador PUDO | Implementado | Ninguna | Ninguno | Verificar coherencia visual con sistema de diseno |
Carrier App (carrier-app, Flutter)
Autenticacion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-01 | Carrier App | Login OIDC con Keycloak y claves de almacenamiento prefijadas | El transportista inicia sesion con tokens almacenados con prefijo carrier_ para evitar conflictos | Transportista | Implementado | Keycloak | Keycloak operativo | Login y verificar almacenamiento con prefijo |
| CARR-02 | Carrier App | Refresco automatico de token con almacenamiento seguro | La app renueva el token transparentemente usando flutter_secure_storage | Transportista | Implementado | Keycloak | Keycloak operativo | Esperar expiracion y verificar renovacion |
Inicio
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-03 | Carrier App | Dashboard con conteo de entregas pendientes y resumen de ruta | El transportista ve un resumen de sus entregas pendientes y ruta del dia | Transportista | Implementado | Ninguna | Ninguno | Acceder y verificar datos |
Gestion de Expediciones
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-04 | Carrier App | Lista de expediciones pendientes con pull-to-refresh | El transportista ve sus expediciones pendientes y refresca tirando hacia abajo | Transportista | Implementado | Ninguna | Ninguno | Verificar lista y pull-to-refresh |
| CARR-05 | Carrier App | Detalle de expedicion con timeline de estado | El transportista ve el detalle completo de una expedicion con su timeline de estados | Transportista | Implementado | Ninguna | Ninguno | Ver detalle y verificar timeline |
Escaneo
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-06 | Carrier App | Escaner de codigo de barras para identificacion de paquetes | El transportista escanea codigos de barras de paquetes usando mobile_scanner | Transportista | Implementado | Ninguna | Dispositivo con camara | Escanear codigo y verificar identificacion |
| CARR-07 | Carrier App | Handshake dual-QR — transportista inicia sesion y genera QR | El transportista inicia la sesion de entrega y genera un QR para que el operador lo valide | Transportista | Implementado | Ninguna | Ninguno | Iniciar handshake y verificar QR generado |
Entrega Multiple
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-08 | Carrier App | Flujo de batch drop — seleccionar multiples paquetes para entrega | El transportista selecciona varios paquetes para entregarlos todos en un centro PUDO | Transportista | Implementado | Ninguna | Ninguno | Seleccionar multiples paquetes y confirmar lote |
| CARR-09 | Carrier App | Confirmacion de lote con resultado por paquete | La app muestra el resultado de la entrega en lote indicando exito/fallo por paquete | Transportista | Implementado | Ninguna | Ninguno | Entregar lote y verificar resultado individual |
Recogida de Caducados
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-10 | Carrier App | Lista de paquetes caducados para recogida | El transportista ve los paquetes caducados que debe recoger de los centros PUDO | Transportista | Implementado | Ninguna | Ninguno | Listar caducados y verificar datos |
| CARR-11 | Carrier App | Confirmacion de recogida con transicion a EN_DEVOLUCION | El transportista confirma la recogida y el paquete pasa a EN_DEVOLUCION | Transportista | Implementado | Ninguna | Ninguno | Recoger y verificar transicion de estado |
Detalle de Expedicion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-12 | Carrier App | Vista detallada con timeline de tracking | El transportista ve el estado completo de una expedicion con su stepper visual | Transportista | Implementado | Ninguna | Ninguno | Ver detalle y verificar stepper |
Modo Offline
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-13 | Carrier App | Base de datos local Hive para cola offline | La app almacena operaciones en Hive cuando no hay conexion | Transportista | Implementado | Ninguna | Ninguno | Operar sin conexion y verificar almacenamiento |
| CARR-14 | Carrier App | Sincronizacion automatica cuando hay red disponible | La app sincroniza operaciones pendientes automaticamente al restaurar conectividad | Transportista | Implementado | Ninguna | Ninguno | Restaurar conexion y verificar sync |
Transversales
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| CARR-15 | Carrier App | AppTheme design system — tokens Transporter v1.0 | La app usa tokens de diseno unificados via app_theme.dart | Transportista | Implementado | Ninguna | Ninguno | Verificar coherencia visual |
| CARR-16 | Carrier App | Almacenamiento de keychain prefijado para evitar conflicto con PUDO Manager | La app usa claves con prefijo carrier_ en el keychain para coexistir con PUDO Manager | Transportista | Implementado | Ninguna | Ninguno | Instalar ambas apps y verificar que no hay conflicto |
Widget PUDO Selector (pudo-selector-widget, Lit)
Busqueda
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| WDGT-01 | Widget | Busqueda por codigo postal con geocodificacion y resultados cercanos | El cliente busca centros PUDO cercanos introduciendo su codigo postal | Cliente | Implementado | Ninguna | Tabla de geocodificacion de CP | Buscar CP y verificar resultados ordenados por distancia |
| WDGT-02 | Widget | Barra de busqueda con debounce e indicador de carga | La barra de busqueda espera a que el usuario termine de escribir antes de buscar, mostrando indicador | Cliente | Implementado | Ninguna | Ninguno | Escribir CP y verificar debounce e indicador |
Vista de Mapa
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| WDGT-03 | Widget | Mapa interactivo con pines de centros e indicadores de distancia | El cliente ve un mapa Leaflet con marcadores de centros y distancias | Cliente | Implementado | Ninguna | Ninguno | Buscar y verificar mapa con pines |
| WDGT-04 | Widget | Clustering de marcadores para zonas densas | El mapa agrupa marcadores cercanos automaticamente usando leaflet.markercluster | Cliente | Implementado | Ninguna | Ninguno | Verificar clustering en zona con muchos centros |
Vista de Lista
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| WDGT-05 | Widget | Lista scrollable de centros ordenada por distancia con badges de disponibilidad | El cliente ve una lista de centros con su distancia y estado de disponibilidad | Cliente | Implementado | Ninguna | Ninguno | Verificar orden por distancia y badges |
Detalle de Centro
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| WDGT-06 | Widget | Panel de detalle con horario, capacidad y fotos | El cliente selecciona un centro y ve su informacion completa | Cliente | Implementado | Ninguna | Datos completos de centros | Seleccionar centro y verificar detalle |
| WDGT-07 | Widget | Componente de tarjeta de centro con nombre, direccion, distancia y estado | Cada centro se muestra como tarjeta con informacion resumida | Cliente | Implementado | Ninguna | Ninguno | Verificar tarjetas con datos correctos |
Integracion
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| WDGT-08 | Widget | Web component embeddable via <pudo-selector> | Cualquier sitio web puede integrar el selector PUDO como custom element HTML | Cliente | Implementado | Ninguna | Servidor que sirva el widget JS | Integrar en pagina HTML y verificar funcionamiento |
| WDGT-09 | Widget | CSS custom properties para theming por la aplicacion host | La aplicacion que integra el widget puede personalizar colores y estilos via CSS variables | Cliente | Implementado | Ninguna | Ninguno | Cambiar variables CSS y verificar theming |
Infraestructura (infra)
Docker Compose
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| INFRA-01 | Infraestructura | Orquestacion completa del stack local | Docker Compose levanta los 8 microservicios, PostgreSQL, Keycloak, MinIO y Zipkin | Sistema | Implementado | Docker | Docker Desktop instalado | Ejecutar docker compose up y verificar todos los servicios healthy |
| INFRA-02 | Infraestructura | Health checks con condiciones depends_on | Cada servicio espera a que sus dependencias esten healthy antes de arrancar | Sistema | Implementado | Docker | Ninguno | Verificar orden de arranque y health checks |
| INFRA-03 | Infraestructura | Volumenes nombrados para persistencia | Los datos de PostgreSQL, Keycloak y MinIO se persisten entre reinicios | Sistema | Implementado | Docker | Ninguno | Reiniciar stack y verificar datos persistentes |
| INFRA-04 | Infraestructura | Variables de entorno por servicio con fallbacks Docker | Cada servicio tiene su fichero .env con valores por defecto para Docker | Sistema | Implementado | Ninguna | Ficheros .env proporcionados para produccion | Verificar ficheros en infra/env/ |
| INFRA-05 | Infraestructura | Dockerfiles multi-stage para servicios Java | Cada servicio Java tiene un Dockerfile con build en dos etapas (build + runtime) | Sistema | Implementado | Docker | Ninguno | Build y verificar tamano de imagen optimizado |
PostgreSQL
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| INFRA-06 | Infraestructura | Inicializacion de extensiones — uuid-ossp, pg_trgm | PostgreSQL se inicializa con extensiones necesarias para UUID y busqueda de texto | Sistema | Implementado | PostgreSQL | PostgreSQL 16 en produccion | Verificar extensiones instaladas |
| INFRA-07 | Infraestructura | Esquema core — centro, envio, usuario, historial_estado | Las tablas principales del dominio se crean automaticamente al iniciar | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar tablas y constraints |
| INFRA-08 | Infraestructura | Datos semilla — centros, usuarios, expediciones de prueba | Se cargan datos de prueba para todos los estados del ciclo de vida | Sistema | Implementado | PostgreSQL | Ninguno (solo para desarrollo/testing) | Verificar datos cargados |
| INFRA-09 | Infraestructura | Esquema de caducidad — outbox ALINA y DLQ | Tablas para la cola de outbox de ALINA y dead letter queue | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar tablas de outbox y DLQ |
| INFRA-10 | Infraestructura | Esquema de incidencias — incidencia y auditoria | Tablas para gestion de incidencias y trail de auditoria | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar tablas y constraints |
| INFRA-11 | Infraestructura | Esquema de adaptador — sync_centro y sync_log | Tablas para sincronizacion de catalogos de proveedores | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar tablas |
| INFRA-12 | Infraestructura | Esquema de notificaciones de usuario | Tabla tp_pprx_notificacion_usuario para notificaciones persistentes | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar tabla y campos |
| INFRA-13 | Infraestructura | Esquema de cliente — cliente y direccion_cliente | Tablas para perfil de cliente y direcciones guardadas | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar tablas y relaciones |
| INFRA-14 | Infraestructura | Migraciones v2.5 — timestamps de recepcion, entrega, caducidad | Columnas adicionales para fechas especificas del ciclo de vida y enriquecimiento del historial | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar columnas anadidas |
| INFRA-15 | Infraestructura | Datos semilla v2.5 — expediciones con timestamps realistas | Datos de prueba enriquecidos con fechas de recepcion, entrega y caducidad | Sistema | Implementado | PostgreSQL | Ninguno (solo para desarrollo/testing) | Verificar datos con timestamps |
| INFRA-16 | Infraestructura | Esquema de foto de perfil — url_foto_perfil en usuario | Columna para almacenar la URL de la foto de perfil del usuario | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar columna |
| INFRA-17 | Infraestructura | BIGINT GENERATED ALWAYS AS IDENTITY para todas las PKs | Todas las claves primarias usan BIGINT con generacion automatica (no SERIAL) | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar tipo de PK en todas las tablas |
| INFRA-18 | Infraestructura | CHECK constraints en campos de estado | Los campos de estado tienen restricciones CHECK con enumeraciones validas | Sistema | Implementado | PostgreSQL | PostgreSQL 16 | Verificar constraints y probar valor invalido |
Keycloak
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| INFRA-19 | Infraestructura | Export de realm con configuracion de proximiti | El realm se importa automaticamente desde realm-export.json al iniciar Keycloak | Sistema | Implementado | Keycloak | Keycloak 24.0.5 en produccion | Verificar realm importado correctamente |
| INFRA-20 | Infraestructura | Usuarios de prueba — operador, transportista, admin, cliente | Cuatro usuarios preconfigurados para desarrollo y testing | Sistema | Implementado | Keycloak | Usuarios reales de produccion en Keycloak | Verificar login con cada usuario |
| INFRA-21 | Infraestructura | Configuracion de cliente — proximiti-bff con secret | Cliente OAuth2 configurado con secret para el BFF | Sistema | Implementado | Keycloak | Client ID y secret de produccion | Verificar configuracion del cliente |
| INFRA-22 | Infraestructura | Mapeo de roles — USER_PUDO, USER_CARRIER, USER_ADMIN, USER_CUSTOMER | Los roles de realm estan configurados y asignados a usuarios | Sistema | Implementado | Keycloak | Roles asignados a usuarios reales | Verificar roles en JWT |
| INFRA-23 | Infraestructura | Atributo center_code mapeado a claim JWT | El atributo de usuario center_code se mapea como claim en el JWT via mapper OIDC | Sistema | Implementado | Keycloak | Atributo center_code asignado a cada operador | Verificar claim en token decodificado |
| INFRA-24 | Infraestructura | KC_HOSTNAME=keycloak para issuer consistente | Keycloak usa hostname keycloak para que el issuer sea identico entre contenedores y host | Sistema | Implementado | Keycloak, DNS | Entrada 127.0.0.1 keycloak en /etc/hosts (local) o DNS real en produccion | Verificar issuer en token |
MinIO
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| INFRA-25 | Infraestructura | Almacenamiento S3-compatible para POD y documentos | MinIO proporciona almacenamiento de objetos para imagenes de POD y documentos de contrato | Sistema | Implementado | MinIO | MinIO o servicio S3-compatible en produccion (Azure Blob con gateway S3, AWS S3, etc.) | Subir y recuperar objeto |
| INFRA-26 | Infraestructura | Auto-creacion de buckets al arrancar | Los buckets proximiti-pod, proximiti-documents y proximiti-photos se crean automaticamente | Sistema | Implementado | MinIO | Buckets creados en servicio S3 de produccion | Verificar existencia de buckets |
Zipkin
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| INFRA-27 | Infraestructura | Colector de trazas distribuidas | Zipkin recolecta y visualiza trazas de todos los microservicios | Sistema | Implementado | Zipkin | Zipkin o sistema de trazas compatible en produccion (Jaeger, Azure Monitor, etc.) | Verificar trazas end-to-end en UI |
| INFRA-28 | Infraestructura | Integracion Micrometer Brave para propagacion automatica de spans | Cada servicio propaga spans automaticamente via Micrometer + Brave | Sistema | Implementado | Zipkin | Sistema de trazas compatible | Verificar spans conectados entre servicios |
Scripts
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| INFRA-29 | Infraestructura | Script reset-local.sh — teardown y rebuild | El script destruye volumenes y reconstruye el stack local completo | Sistema | Implementado | Docker | Docker operativo | Ejecutar script y verificar stack limpio |
| INFRA-30 | Infraestructura | Script de sincronizacion de subs de Keycloak | El script actualiza tp_pprx_usuario con los subs reales de Keycloak tras fresh start | Sistema | Implementado | Keycloak | Keycloak operativo con usuarios creados | Ejecutar script y verificar subs actualizados |
Entorno
| ID | Modulo | Capacidad | Caso de Uso | Actor | Estado | Dependencia | Prerequisito Cliente | Certificacion |
|---|---|---|---|---|---|---|---|---|
| INFRA-31 | Infraestructura | Directorio env/ con ficheros de entorno por servicio | Cada servicio tiene su fichero .env separado para Docker Compose | Sistema | Implementado | Ninguna | Ficheros .env de produccion con valores reales | Verificar que cada servicio lee su .env |
| INFRA-32 | Infraestructura | Requisito de /etc/hosts — 127.0.0.1 keycloak | La entrada en /etc/hosts es necesaria para que el issuer del token sea accesible desde el navegador | Sistema | Implementado | Ninguna | DNS real en produccion apuntando al hostname de Keycloak | Verificar resolucion de hostname |
Resumen de Dependencias Externas
| Dependencia | Capacidades Afectadas | Estado Actual | Accion Requerida para Produccion |
|---|---|---|---|
| ALINA ERP | EXPR-02, EXPR-03 | Stub (log-only) | Proporcionar endpoint y credenciales de API ALINA; implementar cliente HTTP real en AlinaOutboxProcessor.dispatchToAlina() |
| NOVA Mulesoft | NOTF-04, NOTF-05 | Stub (log-only) | Proporcionar endpoint y credenciales de NOVA API; implementar cliente HTTP real en NotificationService.processTrigger() |
| Proveedor de Chat | ISSU-06 | Stub (token mock) | Elegir proveedor de chat en vivo; implementar cliente real en SupportChatService.getChatToken() |
| Kanguro | ADPT-01, ADPT-02, ADPT-03, ADPT-04 | Stub service (stub-kanguro) | Proporcionar URL de API de produccion y secret HMAC; sustituir URL en application.yml |
| Hublocker | ADPT-01, ADPT-02, ADPT-03, ADPT-05 | Stub service (stub-hublocker) | Proporcionar URL de API de produccion y secret HMAC; sustituir URL en application.yml |
| Keycloak | BFF-22, BFF-59 a BFF-66, USR-01, USR-02, USR-11, INFRA-19 a INFRA-24 | Implementado (local) | Instancia de produccion de Keycloak con realm, roles, usuarios y client configurados |
| MinIO / S3 | BFF-11 a BFF-13, BFF-56 a BFF-58, BFF-68, CNTR-06, CNTR-14, SHPM-18 a SHPM-20, SHPM-25, INFRA-25, INFRA-26 | Implementado (local) | Servicio S3-compatible en produccion (Azure Blob con S3 gateway, AWS S3, MinIO) con buckets creados |
| Zipkin | BFF-67, INFRA-27, INFRA-28 | Implementado (local) | Sistema de trazas en produccion (Zipkin, Jaeger, Azure Monitor APM) |
| PostgreSQL | INFRA-06 a INFRA-18 | Implementado (local) | PostgreSQL 16 gestionado en produccion con backups y HA |
| Docker | INFRA-01 a INFRA-05, INFRA-29 | Implementado (local) | Plataforma de contenedores en produccion (Kubernetes, Azure Container Apps, ECS) |
| App Store | Ninguna directamente | Pendiente | Cuenta de Apple Developer de organizacion, certificados de distribucion, revision de App Store |
| Google Play | Ninguna directamente | Pendiente | Cuenta de Google Play Console, firma de app, revision de Play Store |
| FCM/APNs | Ninguna directamente | Pendiente | Configuracion de push notifications para apps moviles (futuro) |
Generado el 2026-03-18 | Verificado contra codebase v2.6.0