Skip to content

PROXIMITI — Inventario de Capacidades

271 capacidades verificadas contra el codigo fuente a fecha de v2.6.0 Auto-generado a partir del analisis en profundidad de todos los servicios, apps e infraestructura.

Resumen

ModuloCantidad
BFF Gateway (ws-pprx-bff)68
Portal Cliente (client-portal)49
Infraestructura (infra)32
Expediciones (ws-pprx-shipments)25
App PUDO Manager (pudo-manager-app)19
App Transportista (carrier-app)16
Centros (ws-pprx-centers)15
Usuarios (ws-pprx-users)15
Widget Selector PUDO (pudo-selector-widget)9
Incidencias (ws-pprx-issues)7
Adaptador (ws-pprx-adapter)6
Notificaciones (ws-pprx-notifications)5
Caducidad (ws-pprx-expired)5
Total271

BFF Gateway (ws-pprx-bff, puerto 8090)

Proxy de Expediciones

  • BFF-01: Crear expedicion con soporte de clave de idempotencia (POST /api/v1/shipments)
  • BFF-02: Listar expediciones con paginacion y filtros — estado, rango de fechas, centerCode (GET /api/v1/shipments)
  • BFF-03: Obtener detalle de expedicion por codigo de barras (GET /api/v1/shipments/{barcode})
  • BFF-04: Inicio de intercambio con transportista para protocolo dual-QR (POST /api/v1/shipments/{barcode}/carrier-handshake)
  • BFF-05: Sondeo de estado de sesion QR (GET /api/v1/shipments/qr-session/{sessionToken}/status)
  • BFF-06: Validacion de sesion QR por operador PUDO (POST /api/v1/shipments/qr-session/{sessionToken}/validate)
  • BFF-07: Listar expediciones pendientes para transportistas (GET /api/v1/shipments/pending)
  • BFF-08: Entrega multiple de paquetes en centro PUDO (POST /api/v1/shipments/batch-drop)
  • BFF-09: Recogida de paquete caducado por transportista (POST /api/v1/shipments/{barcode}/retrieve)
  • BFF-10: Generacion de etiqueta HTML lista para imprimir (GET /api/v1/shipments/{barcode}/label)
  • BFF-11: Obtener metadatos de POD (GET /api/v1/shipments/{barcode}/pod)
  • BFF-12: Generar token prefirmado para subida de POD (POST /api/v1/shipments/{barcode}/pod/upload-token)
  • BFF-13: Transmitir bytes de imagen POD via proxy — firma o evidencia (GET /api/v1/shipments/{barcode}/pod/image/{type})

Proxy de Centros

  • BFF-14: Listar todos los centros para desplegables de operador con mapeo de campos (GET /api/v1/centers)

Agregacion de Dashboard

  • BFF-15: Dashboard de operador — conteo de pendientes + capacidad desde llamadas internas en paralelo (GET /api/v1/dashboard)
  • BFF-16: Dashboard de admin — totalShipments, desglose por estado, recentCount24h, resumen de centros

Centros Externos (Widget Selector PUDO)

  • BFF-17: Busqueda de centros cercanos con geocodificacion de codigo postal, distancia Haversine, disponibilidad (GET /api/v1/external/centers/near)
  • BFF-18: Detalle de centro con horario, capacidad y fotos (GET /api/v1/external/centers/{centerCode}/detail)

Seguimiento Publico

  • BFF-19: Seguimiento de expedicion sin autenticacion por codigo de barras (GET /api/v1/public/track/{barcode})

Admin — Usuarios

  • BFF-20: Listar todos los usuarios con paginacion (GET /api/v1/admin/users)
  • BFF-21: Obtener usuario por ID (GET /api/v1/admin/users/{id})
  • BFF-22: Actualizar rol de usuario y asignacion de centro (PUT /api/v1/admin/users/{id})

Admin — Centros

  • BFF-23: Listar todos los centros con detalle completo (GET /api/v1/admin/centers)
  • BFF-24: Obtener centro por codigo con reenvio de ETag (GET /api/v1/admin/centers/{centerCode})
  • BFF-25: Crear centro (POST /api/v1/admin/centers)
  • BFF-26: Actualizar centro con control de concurrencia If-Match ETag (PUT /api/v1/admin/centers/{centerCode})
  • BFF-27: Eliminacion logica de centro (DELETE /api/v1/admin/centers/{centerCode})

Admin — Datos de Semilla

  • BFF-28: Obtener estado de datos de semilla con conteos por dominio (GET /api/v1/admin/seed/status)
  • BFF-29: Cargar datos de semilla con opcion de sobreescritura forzada (POST /api/v1/admin/seed/load)
  • BFF-30: Descargar todos los datos de semilla (DELETE /api/v1/admin/seed/unload)

Admin — Introspeccion de Esquema

  • BFF-31: Introspeccion de esquema de BD — tablas, columnas, restricciones, aristas FK para todas las tablas tp_pprx_* (GET /api/v1/admin/schema)

Admin — Adaptador/Proveedores

  • BFF-32: Activar sincronizacion de catalogo de proveedor — Kanguro o Hublocker (POST /api/v1/admin/adapter/sync/{provider})
  • BFF-33: Listar proveedores con conteo de centros y estado de sincronizacion (GET /api/v1/admin/adapter/providers)

Portal de Cliente

  • BFF-34: Obtener perfil de cliente con valores por defecto del JWT (GET /api/v1/customer/profile)
  • BFF-35: Actualizar perfil de cliente (PUT /api/v1/customer/profile)
  • BFF-36: Listar direcciones guardadas (GET /api/v1/customer/addresses)
  • BFF-37: Crear direccion (POST /api/v1/customer/addresses)
  • BFF-38: Actualizar direccion (PUT /api/v1/customer/addresses/{id})
  • BFF-39: Eliminar direccion (DELETE /api/v1/customer/addresses/{id})
  • BFF-40: Listado de expediciones con alcance de cliente (GET /api/v1/customer/shipments)
  • BFF-41: Agregacion de dashboard de cliente (GET /api/v1/customer/dashboard)

Proxy de Notificaciones

  • BFF-42: Listar notificaciones con alcance de centro (GET /api/v1/notifications)
  • BFF-43: Obtener conteo de notificaciones no leidas (GET /api/v1/notifications/unread-count)
  • BFF-44: Marcar notificacion como leida (PATCH /api/v1/notifications/{id}/read)

Proxy de Incidencias

  • BFF-45: Listar incidencias con filtros (GET /api/v1/issues)
  • BFF-46: Obtener incidencia por ID (GET /api/v1/issues/{id})
  • BFF-47: Crear incidencia (POST /api/v1/issues)
  • BFF-48: Actualizar estado de incidencia (PATCH /api/v1/issues/{id}/status)
  • BFF-49: Escalar incidencia (POST /api/v1/issues/{id}/escalate)

Proxy de Precios

  • BFF-50: Listar niveles de precios activos (GET /api/v1/pricing)
  • BFF-51: Estimar coste de envio por peso (GET /api/v1/pricing/estimate)
  • BFF-52: Listar todos los niveles de precios incluyendo inactivos (GET /api/v1/pricing/admin)
  • BFF-53: Crear nivel de precios (POST /api/v1/pricing/admin)
  • BFF-54: Actualizar nivel de precios (PUT /api/v1/pricing/admin/{id})
  • BFF-55: Eliminar nivel de precios (DELETE /api/v1/pricing/admin/{id})

Foto de Perfil

  • BFF-56: Subir foto de perfil a MinIO — max 2MB, JPEG/PNG/WebP (POST /api/v1/profile/photo)
  • BFF-57: Transmitir foto de perfil del usuario autenticado (GET /api/v1/profile/photo)
  • BFF-58: Eliminar foto de perfil de MinIO y limpiar URL (DELETE /api/v1/profile/photo)

Transversales

  • BFF-59: UserCenterEnrichmentFilter — resolucion sub-a-centerId/centerCode con cache Caffeine (TTL 5 min)
  • BFF-60: Auto-aprovisionamiento en primer inicio de sesion para todos los roles (USER_PUDO, USER_CARRIER, USER_ADMIN, USER_CUSTOMER)
  • BFF-61: Bypass de endpoints de cliente — fallback elegante cuando el servicio de usuarios no esta disponible
  • BFF-62: CorrelationIdFilter — propagacion de X-Correlation-Id en todas las solicitudes
  • BFF-63: RateLimitFilter — rafaga por IP (60/min) y por sujeto (120/min) para centros externos
  • BFF-64: Validacion de JWT via Spring Security OAuth2 Resource Server
  • BFF-65: KeycloakRoleConverter para parseo de roles anidados en realm_access.roles
  • BFF-66: UI Swagger/OpenAPI en /swagger-ui/index.html con flujo OAuth2 password
  • BFF-67: Configuracion de WebClient para todos los servicios downstream con trazas Zipkin
  • BFF-68: Servicio ProfilePhotoStorage de MinIO para operaciones directas de almacenamiento de objetos

Centros (ws-pprx-centers, puerto 8091)

API Publica

  • CNTR-01: Listar todos los centros con paginacion y filtro opcional de proveedor (GET /api/v1/centers)
  • CNTR-02: Obtener detalle de centro por codigo con cabecera de version ETag (GET /api/v1/centers/{centerCode})
  • CNTR-03: Crear nuevo centro PUDO — solo admin, devuelve 201 con cabecera Location (POST /api/v1/centers)
  • CNTR-04: Actualizar centro con bloqueo optimista If-Match ETag — solo admin (PUT /api/v1/centers/{centerCode})
  • CNTR-05: Eliminacion logica de centro — solo admin, 204 No Content (DELETE /api/v1/centers/{centerCode})
  • CNTR-06: Generar token prefirmado para subida de documento de contrato — solo PDF, max 5MB (POST /api/v1/centers/{centerCode}/documents/upload-token)

API Interna (Servicio a Servicio)

  • CNTR-07: Obtener capacidad actual por ID de centro (GET /internal/v1/centers/{centerId}/capacity)
  • CNTR-08: Decremento atomico de capacidad con If-Match ETag y X-Correlation-Id (POST /internal/v1/centers/{centerCode}/capacity/decrement)
  • CNTR-09: Incremento atomico de capacidad con If-Match ETag y X-Correlation-Id (POST /internal/v1/centers/{centerCode}/capacity/increment)
  • CNTR-10: Resolver codigo de centro por ID numerico (GET /internal/v1/centers/by-id/{centerId})
  • CNTR-11: Resolver ID de centro por codigo de centro (GET /internal/v1/centers/by-code/{centerCode})
  • CNTR-12: Resumen de centros con datos de capacidad para dashboard de admin (GET /internal/v1/centers/summary)

Transversales

  • CNTR-13: CenterAuthorizationService — control de acceso con alcance de centro y bypass para admin
  • CNTR-14: Integracion con MinIO para almacenamiento de documentos de contrato con URLs prefirmadas
  • CNTR-15: Bloqueo optimista JPA con campo de version para actualizaciones concurrentes de capacidad

Expediciones (ws-pprx-shipments, puerto 8092)

CRUD de Expediciones

  • SHPM-01: Crear expedicion con deduplicacion por clave de idempotencia (POST /api/v1/shipments)
  • SHPM-02: Listar expediciones con paginacion, filtro de estado, rango de fechas y alcance de centro (GET /api/v1/shipments)
  • SHPM-03: Obtener detalle de expedicion por codigo de barras con historial de estado y datos POD (GET /api/v1/shipments/{barcode})
  • SHPM-04: Listado de expediciones con alcance de cliente por sub del remitente (GET /api/v1/shipments/customer)

Seguimiento

  • SHPM-05: Seguimiento publico por codigo de barras — devuelve estado, timestamps, codigos de centro (GET /api/v1/shipments/track/{barcode})

Maquina de Estados

  • SHPM-06: Dispatcher de acciones de transicion de estado — recibir, entregar, caducar, recoger (POST /api/v1/shipments/{barcode}/action)
  • SHPM-07: Transicion a RECEPCIONADO — valida coincidencia de centro, decrementa capacidad via servicio de centros
  • SHPM-08: Transicion a ENTREGADO — requiere POD (URLs de firma + evidencia), establece timestamp de entrega
  • SHPM-09: Transicion a CADUCADO — marca paquete como caducado, establece timestamp de caducidad
  • SHPM-10: Transicion a EN_DEVOLUCION — recogida de paquetes caducados por transportista, incrementa capacidad
  • SHPM-11: Transicion a DEVUELTO — estado final para paquetes devueltos

Intercambio Dual-QR

  • SHPM-12: Inicio de intercambio con transportista — genera token de sesion QR (POST /api/v1/shipments/{barcode}/carrier-handshake)
  • SHPM-13: Sondeo de estado de sesion QR (GET /api/v1/shipments/qr-session/{sessionToken}/status)
  • SHPM-14: Validacion de sesion QR por operador PUDO (POST /api/v1/shipments/qr-session/{sessionToken}/validate)

Operaciones de Transportista

  • SHPM-15: Listar expediciones pendientes para recogida por transportista (GET /api/v1/shipments/pending)
  • SHPM-16: Entrega multiple de paquetes en centro PUDO (POST /api/v1/shipments/batch-drop)
  • SHPM-17: Recogida de paquete caducado con incremento de capacidad (POST /api/v1/shipments/{barcode}/retrieve)

POD (Prueba de Entrega)

  • SHPM-18: Generar token prefirmado para subida de imagenes POD (POST /api/v1/shipments/{barcode}/pod/upload-token)
  • SHPM-19: Obtener metadatos de POD — URLs de firma y evidencia (GET /api/v1/shipments/{barcode}/pod)
  • SHPM-20: Transmitir bytes de imagen POD por tipo — firma o evidencia (GET /api/v1/shipments/{barcode}/pod/image/{type})

Generacion de Etiquetas

  • SHPM-21: Etiqueta HTML lista para imprimir con codigo de barras, remitente, destinatario, info de centro (GET /api/v1/shipments/{barcode}/label)

API Interna (Servicio a Servicio)

  • SHPM-22: Conteo de expediciones pendientes por ID de centro para dashboard (GET /internal/v1/shipments/pending/count)
  • SHPM-23: Estadisticas de expediciones — totalShipments, por estado, recentCount24h (GET /internal/v1/shipments/stats)
  • SHPM-24: Estadisticas de cliente por sub del remitente (GET /internal/v1/shipments/customer-stats)

Transversales

  • SHPM-25: DocumentStoragePort de MinIO para almacenamiento de imagenes POD con URLs prefirmadas y recuperacion por streaming

Usuarios (ws-pprx-users, puerto 8093)

Gestion de Usuarios

  • USR-01: Resolver centro de usuario por sub de Keycloak — devuelve centerId + centerCode (GET /api/v1/users/{keycloakSub}/center)
  • USR-02: Aprovisionar nuevo usuario en primer inicio de sesion — crea registro tp_pprx_usuario (POST /api/v1/users/provision)
  • USR-03: Listar todos los usuarios con paginacion (GET /api/v1/users)
  • USR-04: Obtener usuario por ID (GET /api/v1/users/{id})
  • USR-05: Actualizar rol de usuario y asignacion de centro (PUT /api/v1/users/{id})

URL de Foto de Perfil

  • USR-06: Obtener URL de foto de perfil del usuario autenticado (GET /api/v1/users/me/photo-url)
  • USR-07: Actualizar URL de foto de perfil (PUT /api/v1/users/me/photo-url)
  • USR-08: Eliminar URL de foto de perfil (DELETE /api/v1/users/me/photo-url)

Gestion de Clientes

  • USR-09: Obtener perfil de cliente por sub de Keycloak (GET /api/v1/customers/me)
  • USR-10: Actualizar perfil de cliente (PUT /api/v1/customers/me)
  • USR-11: Aprovisionar cliente en primer inicio de sesion (POST /api/v1/customers/provision)
  • USR-12: Listar direcciones guardadas del cliente (GET /api/v1/customers/me/addresses)
  • USR-13: Crear direccion (POST /api/v1/customers/me/addresses)
  • USR-14: Actualizar direccion (PUT /api/v1/customers/me/addresses/{id})
  • USR-15: Eliminar direccion (DELETE /api/v1/customers/me/addresses/{id})

Notificaciones (ws-pprx-notifications, puerto 8094)

Notificaciones de Usuario

  • NOTF-01: Listar notificaciones del centro con paginacion (GET /api/v1/notifications)
  • NOTF-02: Obtener conteo de notificaciones no leidas (GET /api/v1/notifications/unread-count)
  • NOTF-03: Marcar notificacion como leida (PATCH /api/v1/notifications/{id}/read)

Disparadores de Notificacion

  • NOTF-04: Activar despacho de notificacion — crea registro de notificacion de usuario (POST /api/v1/notifications/triggers)

Transversales

  • NOTF-05: Integracion con stub NOVA — patron fire-and-forget con timeout de 500ms

Caducidad (ws-pprx-expired, puerto 8095)

Procesamiento de Caducidad

  • EXPR-01: Marcar expediciones caducadas — busca paquetes pasados del periodo de retencion (POST /api/v1/expired/mark-expired)
  • EXPR-02: Notificar a ALINA — procesa cola de outbox para reporte de paquetes caducados (POST /api/v1/expired/notify-alina)
  • EXPR-03: Reactivar notificacion fallida de ALINA por ID de outbox (POST /api/v1/expired/retrigger/{outboxId})

Transversales

  • EXPR-04: Patron de outbox transaccional — fila de outbox en la misma transaccion con entrega asincrona a ALINA
  • EXPR-05: Cola de mensajes muertos (DLQ) para exportaciones permanentemente fallidas a ALINA

Incidencias (ws-pprx-issues, puerto 8096)

Gestion de Incidencias

  • ISSU-01: Crear incidencia con tipo, severidad y referencia de expedicion (POST /api/v1/issues)
  • ISSU-02: Obtener incidencia por ID con traza de auditoria (GET /api/v1/issues/{id})
  • ISSU-03: Listar incidencias con filtros — estado, tipo, severidad, centro (GET /api/v1/issues)
  • ISSU-04: Actualizar estado de incidencia con entrada en log de auditoria (PATCH /api/v1/issues/{id}/status)
  • ISSU-05: Escalar incidencia — eleva severidad y notifica a soporte (POST /api/v1/issues/{id}/escalate)

Soporte

  • ISSU-06: Generar token de chat de soporte para asistencia en vivo (POST /api/v1/support/chat-token)

Transversales

  • ISSU-07: Traza de auditoria IssueAudit — registro automatico de todos los cambios de estado con timestamp y actor

Adaptador (ws-pprx-adapter, puerto 8086)

Integracion con Proveedores

  • ADPT-01: Sincronizacion de catalogo — obtener catalogo de centros de Kanguro o Hublocker (POST /api/v1/adapter/sync/{provider})
  • ADPT-02: Consulta de disponibilidad de centro por proveedor y codigo de centro (GET /api/v1/adapter/lookup/{provider}/{centerCode})
  • ADPT-03: Notificacion de recepcion al proveedor — fire-and-forget (POST /api/v1/adapter/notify/{provider}/reception)

Webhooks

  • ADPT-04: Receptor de webhook de Kanguro con validacion de firma (POST /api/v1/adapter/webhooks/kanguro)
  • ADPT-05: Receptor de webhook de Hublocker con validacion de firma (POST /api/v1/adapter/webhooks/hublocker)

Transversales

  • ADPT-06: ProviderAdapterRegistry — patron de adaptador enchufable con implementaciones KanguroAdapter y HublockerAdapter

Portal Cliente (client-portal, puerto 3000)

Autenticacion

  • CP-01: Login Keycloak OIDC con flujo PKCE via adaptador keycloak-js
  • CP-02: Refresco silencioso de token con reintento automatico
  • CP-03: Seleccion de shell basada en rol — AppShell (operador/admin/transportista) vs CustomerShell (cliente)
  • CP-04: Componente RoleGuard — redirige usuarios no autorizados desde rutas protegidas

Dashboard de Operador

  • CP-05: Dashboard con conteo de expediciones pendientes y barra de uso de capacidad
  • CP-06: Visualizacion de porcentaje de capacidad en tiempo real con umbrales codificados por color
  • CP-07: Lista de expediciones recientes con insignias de estado

Gestion de Expediciones

  • CP-08: Lista de expediciones con paginacion, filtro de estado y selector de rango de fechas
  • CP-09: Pagina de detalle de expedicion con linea de tiempo del ciclo de vida completo e info de centro
  • CP-10: Componente TrackingStepper — stepper vertical con caminos ramificados (feliz 3 pasos / caducidad 6 pasos)
  • CP-11: Cuenta atras de retencion con codificacion de color por urgencia (verde > amarillo > rojo)
  • CP-12: Visualizacion de POD via proxy de imagenes del BFF — fotos de firma y evidencia
  • CP-13: Formulario de nueva expedicion con autocompletado de direccion y seleccion de centro
  • CP-14: Boton de imprimir etiqueta con dialogo de impresion del navegador

Gestion de Recogidas

  • CP-15: Pagina de lista de recogidas con seguimiento de recogidas programadas y completadas

Certificados

  • CP-16: Pagina de lista de certificados con enlaces de descarga y estado de vencimiento

Reclamaciones

  • CP-17: Lista de reclamaciones con filtros de estado
  • CP-18: Vista de detalle de reclamacion con linea de tiempo
  • CP-19: Formulario de nueva reclamacion con referencia de expedicion y subida de adjuntos

Informes

  • CP-20: Dashboard de informes con graficos de volumen de expediciones y opciones de exportacion

Notificaciones

  • CP-21: Pagina de notificaciones con estado leido/no leido y accion de marcar como leida
  • CP-22: Insignia de campana de notificaciones con conteo de no leidas en barra lateral

Panel de Administracion

  • CP-23: Tabla de gestion de usuarios con edicion de roles y asignacion de centro
  • CP-24: Gestion de centros con crear/editar/eliminar y filtro de proveedor
  • CP-25: Controles de datos de semilla — cargar, descargar y visualizacion de estado
  • CP-26: Explorador de Esquema — canvas ERD con React Flow, layout dagre y codificacion de color por servicio
  • CP-27: Panel de detalle de esquema — columnas, PK, FK, CHECK, UNIQUE, indices por tabla
  • CP-28: Filtro de busqueda de esquema con resaltado instantaneo de tabla
  • CP-29: Tooltip de arista FK al pasar el raton mostrando tabla y columna referenciada

Integraciones

  • CP-30: Pagina de integraciones con activadores de sincronizacion de Kanguro y Hublocker
  • CP-31: Lista de proveedores con conteos de centros y timestamp de ultima sincronizacion
  • CP-32: Guardia de admin a nivel de componente como defensa en profundidad

Centro de Documentacion

  • CP-33: Visor embebido de Swagger/OpenAPI en /docs
  • CP-34: Navegacion de documentacion API con agrupacion por etiquetas

Precios

  • CP-35: Calculadora de precios con estimacion de coste basada en peso
  • CP-36: Gestion de niveles de precios de admin — operaciones CRUD

Perfil de Operador

  • CP-37: Pagina de perfil de operador con subida de foto y edicion de informacion personal

Shell de Cliente

  • CP-38: Dashboard de cliente con resumen de expediciones activas y acciones rapidas
  • CP-39: Lista de expediciones de cliente con filtrado por estado
  • CP-40: Formulario de nueva expedicion de cliente con seleccion de direccion guardada
  • CP-41: Pagina de seguimiento de cliente — busqueda publica por codigo de barras con TrackingStepper
  • CP-42: Libreta de direcciones de cliente — CRUD para direcciones guardadas
  • CP-43: Perfil de cliente con informacion personal y preferencias
  • CP-44: Calculadora de precios de cliente

Layout y Navegacion

  • CP-45: Barra lateral colapsable con elementos de menu basados en rol
  • CP-46: Layout responsivo — puntos de ruptura para escritorio y tablet
  • CP-47: Navegacion con migas de pan con etiquetas de ruta dinamicas

Transversales

  • CP-48: Sistema de Diseno Transporter v1.0 — propiedades CSS personalizadas para todos los tokens
  • CP-49: React Query para estado del servidor con invalidacion automatica de cache

App PUDO Manager (pudo-manager-app, Flutter)

Autenticacion

  • PUDO-01: Login Keycloak OIDC con almacenamiento seguro de token (flutter_secure_storage)
  • PUDO-02: Refresco automatico de token con logica de reintento
  • PUDO-03: Correccion de llavero macOS — FixedMacOsOptions para bug de usesDataProtectionKeychain

Dashboard

  • PUDO-04: Dashboard de operador con conteo de pendientes y uso de capacidad
  • PUDO-05: Botones de accion rapida — recibir, entregar, escanear

Recepcion

  • PUDO-06: Recepcion de paquete con escaneo de codigo de barras (mobile_scanner)
  • PUDO-07: Intercambio dual-QR — operador valida token de sesion del transportista
  • PUDO-08: Verificacion de capacidad antes de recepcion con error amigable al usuario

Entrega

  • PUDO-09: Flujo de entrega con captura de POD — pad de firma + foto de camara + verificacion de identidad
  • PUDO-10: Subida de POD via URL prefirmada a MinIO
  • PUDO-11: Confirmacion de entrega con transicion de estado a ENTREGADO

Protocolo Dual-QR

  • PUDO-12: Visualizacion de codigo QR para escaneo del transportista
  • PUDO-13: Sondeo de sesion QR con timeout y reintento

Capacidad

  • PUDO-14: Visualizacion de capacidad en tiempo real con indicador visual
  • PUDO-15: Vista de historial y tendencia de capacidad

Historial

  • PUDO-16: Historial de expediciones con busqueda y filtro de estado

Modo Offline

  • PUDO-17: Base de datos local Hive para cola offline
  • PUDO-18: Sincronizacion automatica al restaurar conectividad

Transversales

  • PUDO-19: Sistema de diseno AppTheme — tokens Transporter v1.0 via app_theme.dart

App Transportista (carrier-app, Flutter)

Autenticacion

  • CARR-01: Login Keycloak OIDC con claves de almacenamiento con prefijo (carrier_jwt_token)
  • CARR-02: Refresco automatico de token con almacenamiento seguro

Inicio

  • CARR-03: Dashboard de transportista con conteo de entregas pendientes y resumen de ruta

Gestion de Expediciones

  • CARR-04: Lista de expediciones pendientes con pull-to-refresh
  • CARR-05: Detalle de expedicion con linea de tiempo de estado e info de entrega

Escaneo

  • CARR-06: Escaner de codigo de barras para identificacion de paquetes (mobile_scanner)
  • CARR-07: Intercambio dual-QR — transportista inicia sesion, genera QR para operador

Entrega Multiple

  • CARR-08: Flujo de entrega multiple — seleccionar multiples paquetes para entrega en centro PUDO
  • CARR-09: Confirmacion de lote con exito/fallo por paquete

Recogida de Caducados

  • CARR-10: Lista de paquetes caducados para recogida desde centros PUDO
  • CARR-11: Confirmacion de recogida con transicion de estado a EN_DEVOLUCION

Detalle de Expedicion

  • CARR-12: Vista detallada de expedicion con linea de tiempo de seguimiento

Modo Offline

  • CARR-13: Base de datos local Hive para cola de operaciones offline
  • CARR-14: Sincronizacion automatica cuando la red esta disponible

Transversales

  • CARR-15: Sistema de diseno AppTheme — tokens Transporter v1.0 via app_theme.dart
  • CARR-16: Almacenamiento de llavero con prefijo para evitar conflicto con app PUDO Manager

Widget Selector PUDO (pudo-selector-widget, Lit)

Busqueda

  • WDGT-01: Busqueda por codigo postal con geocodificacion y resultados de centros cercanos
  • WDGT-02: Barra de busqueda con entrada con debounce e indicador de carga

Vista de Mapa

  • WDGT-03: Mapa interactivo con pines de centros e indicadores de distancia
  • WDGT-04: Agrupamiento de mapa para zonas con alta densidad de centros

Vista de Lista

  • WDGT-05: Lista desplazable de centros ordenada por distancia con insignias de disponibilidad

Detalle de Centro

  • WDGT-06: Panel de detalle de centro con horario, capacidad y fotos
  • WDGT-07: Componente de tarjeta de centro con nombre, direccion, distancia y estado

Integracion

  • WDGT-08: Componente web embebible via elemento personalizado <pudo-selector>
  • WDGT-09: Propiedades CSS personalizadas para personalizacion de tema de la aplicacion host

Infraestructura (infra)

Docker Compose

  • INFRA-01: Orquestacion completa del stack local — 8 microservicios, PostgreSQL, Keycloak, MinIO, Zipkin
  • INFRA-02: Health checks de servicios con condiciones depends_on
  • INFRA-03: Volumenes con nombre para persistencia de datos — postgres-data, keycloak-data, minio-data
  • INFRA-04: Configuracion de variables de entorno por servicio con valores por defecto para Docker
  • INFRA-05: Builds de Dockerfile multi-etapa para todos los servicios Java

PostgreSQL

  • INFRA-06: Inicializacion de extensiones — uuid-ossp, pg_trgm (00_extensions.sql)
  • INFRA-07: Esquema principal — tp_pprx_centro, tp_pprx_envio, tp_pprx_usuario, tp_pprx_historial_estado (01_schema.sql)
  • INFRA-08: Datos de semilla — centros, usuarios, expediciones de prueba en todos los estados (02_seed.sql)
  • INFRA-09: Esquema de caducidad — tablas de outbox y DLQ de ALINA (03_expired_schema.sql)
  • INFRA-10: Esquema de incidencias — tp_pprx_incidencia, tp_pprx_incidencia_audit (05_issues_schema.sql)
  • INFRA-11: Esquema de adaptador — tp_pprx_sync_centro, tp_pprx_sync_log (06_adapter_schema.sql)
  • INFRA-12: Esquema de notificaciones de usuario — tp_pprx_notificacion_usuario (07_notifications_user_schema.sql)
  • INFRA-13: Esquema de clientes — tp_pprx_cliente, tp_pprx_direccion_cliente (08_customer_schema.sql)
  • INFRA-14: Migraciones v2.5 — columnas fecRecepcion, fecEntrega, fecCaducidad, enriquecimiento de historial de estado (09_v25_migrations.sql)
  • INFRA-15: Datos de semilla v2.5 — expediciones enriquecidas con timestamps realistas (10_v25_seed.sql)
  • INFRA-16: Esquema de foto de perfil — columna url_foto_perfil en tp_pprx_usuario (11_profile_photo.sql)
  • INFRA-17: BIGINT GENERATED ALWAYS AS IDENTITY para todas las claves primarias
  • INFRA-18: Restricciones CHECK en campos de estado con enumeraciones de estados validos

Keycloak

  • INFRA-19: Exportacion de realm con configuracion del realm proximiti (realm-export.json)
  • INFRA-20: Usuarios de prueba — pudo-operator-1, carrier-1, admin-1, customer-1 (todos con password: password)
  • INFRA-21: Configuracion de cliente — proximiti-bff con secreto de cliente
  • INFRA-22: Mapeo de roles — roles de realm USER_PUDO, USER_CARRIER, USER_ADMIN, USER_CUSTOMER
  • INFRA-23: Atributo de usuario center_code mapeado a claim JWT via oidc-usermodel-attribute-mapper
  • INFRA-24: KC_HOSTNAME=keycloak para issuer consistente entre contenedores y host

MinIO

  • INFRA-25: Almacenamiento de objetos compatible con S3 para imagenes POD y documentos de contrato
  • INFRA-26: Creacion automatica de buckets al iniciar — proximiti-pod, proximiti-documents, proximiti-photos

Zipkin

  • INFRA-27: Colector de trazas distribuidas para todos los spans de microservicios
  • INFRA-28: Integracion Micrometer Brave para propagacion automatica de spans

Scripts

  • INFRA-29: reset-local.sh — script de teardown y reconstruccion para entorno local limpio
  • INFRA-30: Script de sincronizacion de sub de Keycloak — actualizar tp_pprx_usuario con valores reales de sub de Keycloak

Entorno

  • INFRA-31: Directorio env/ con archivos de entorno por servicio para Docker Compose
  • INFRA-32: Requisito de /etc/hosts — 127.0.0.1 keycloak para issuer de token accesible desde navegador

Ultima actualizacion: 2026-03-16 | Generado a partir del analisis del codigo fuente

Ecosistema PUDO de PROXIMITI — documentacion interna