Appearance
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
| Modulo | Cantidad |
|---|---|
| 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 |
| Total | 271 |
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