Saltar a contenido

Documento histórico

Este documento se conserva solo para trazabilidad. Consulte el índice maestro para la fuente vigente.

Documento histórico — no usar como fuente de decisiones actuales

Reemplazado por la versión canónica del 2026-07-11. Conservar solo como trazabilidad histórica.


Matriz de trazabilidad

Documento RUP — 2026-06-07

Conecta cada requisito funcional (RF) con su caso de uso (CU), la pantalla o vista en la app/backoffice, la tabla o modelo de datos afectado, el endpoint de la API, el caso de prueba definido y el estado actual de implementación.

Esta matriz es la herramienta principal para responder: ¿qué requisitos están realmente cubiertos?


Leyenda de estados

Estado Significado
Cubierto Implementado en código, pruebas pasando, listo para producción
⚠️ Parcial Existe la pantalla/modelo/endpoint, pero falta alguna parte crítica (validación, integración, flujo completo)
Incompleto Solo documentado, no implementado
🔒 Pendiente Aprobado para Fase 2+ (no es MVP)

Módulo 1: Autenticación y registro

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-001 Registro inicial de usuario (+1, EE.UU.) CU-001 RegisterScreen users, locker_codes POST /api/v1/auth/register TC-001 ⚠️ Parcial
RF-002 Verificación de correo por enlace CU-001 VerificationCodeScreen (OTP) users.email_verified POST /api/v1/auth/verify-email TC-002 ❌ Incompleto
RF-003 Verificación de teléfono por SMS/OTP CU-001 VerificationCodeScreen users.phone_verified, otp_codes POST /api/v1/auth/verify-phone TC-003 ⚠️ Parcial
RF-004 Login con email y contraseña CU-002 LoginScreen users, api_tokens POST /api/v1/auth/login TC-004 ⚠️ Parcial
RF-005 Recuperación de contraseña por email CU-002 ForgotPasswordScreen users.password_hash, password_resets POST /api/v1/auth/forgot-password TC-005 ❌ Incompleto
RF-006 Cerrar sesión CU-003 PerfilScreen (item "Cerrar sesión") api_tokens (revocación) POST /api/v1/auth/logout TC-006 ❌ Incompleto
RF-007 Editar datos del perfil CU-003 EditProfileScreen users PATCH /api/v1/users/me TC-007 ❌ Incompleto

Módulo 2: Dashboard y dirección del casillero

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-008 Ver saludo y casillero en dashboard CU-004 DashboardScreen (GreetingSection) users, locker_codes GET /api/v1/users/me TC-008 ✅ Cubierto
RF-009 Ver dirección completa del casillero (Miami) CU-004 DashboardScreen (LockerAddressSection) addresses (tipo shipping) GET /api/v1/users/me/locker-address TC-009 ✅ Cubierto
RF-010 Copiar dirección del casillero al portapapeles CU-004 DashboardScreen (botón copiar) — (cliente) TC-010 ✅ Cubierto
RF-011 Ver 4 secciones de paquetes (almacén / tránsito / enviados / entregados) CU-004 DashboardScreen (PackageSummarySection) physical_packages (vía v_package_summary) GET /api/v1/packages/summary TC-011 ✅ Cubierto
RF-012 Ver sección "Requiere tu atención" CU-004 DashboardScreen (AttentionItemsSection) physical_packages, payments, incidents GET /api/v1/users/me/attention TC-012 ⚠️ Parcial

Módulo 3: Prealerta (reporte de compra)

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-013 Crear reporte de compra (prealerta) CU-005 ReporteForm purchase_reports, purchase_items POST /api/v1/purchase-reports TC-013 ⚠️ Parcial
RF-014 Listar mis reportes de compra CU-005 ReportesScreen purchase_reports GET /api/v1/purchase-reports TC-014 ✅ Cubierto
RF-015 Actualizar tracking de prealerta CU-005 (FA) ReporteDetalleScreen (botón editar) tracking_numbers PATCH /api/v1/purchase-reports/{id}/tracking TC-015 ⚠️ Parcial
RF-016 Cancelar prealerta CU-005 (FA) ReporteDetalleScreen (botón cancelar) purchase_reports.status POST /api/v1/purchase-reports/{id}/cancel TC-016 ❌ Incompleto
RF-017 Adjuntar foto de la orden de compra CU-005 ReporteForm (CaptureUploadSection) file_attachments POST /api/v1/files TC-017 ❌ Incompleto

Módulo 4: Paquetes y envíos

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-018 Ver paquete recibido en almacén CU-006, CU-009 ReporteDetalleScreen physical_packages GET /api/v1/packages/{id} TC-018 ✅ Cubierto
RF-019 Ver timeline de estados del paquete CU-006 ShipmentDetailScreen (ShipmentTimeline) package_events GET /api/v1/packages/{id}/events TC-019 ✅ Cubierto
RF-020 Ver fotos del paquete CU-006 ReporteDetalleScreen (sección fotos) package_photos GET /api/v1/packages/{id}/photos TC-020 ⚠️ Parcial
RF-021 Consolidar paquetes para envío CU-007 ConsolidationCreateScreen + ConsolidationSummaryScreen consolidations, consolidation_packages POST /api/v1/consolidations TC-021 ❌ Incompleto
RF-022 Ver lista de consolidaciones CU-007 ConsolidationListScreen consolidations GET /api/v1/consolidations TC-022 ✅ Cubierto
RF-023 Ver detalle de consolidación CU-007 ConsolidationDetailScreen consolidations (con paquetes) GET /api/v1/consolidations/{id} TC-023 ✅ Cubierto
RF-024 Generar cotización de envío CU-007 ConsolidationSummaryScreen quotes, quote_items POST /api/v1/quotes TC-024 ⚠️ Parcial
RF-025 Pagar envío (manual MVP, Stripe Fase 2) CU-008 PaymentScreen payments, invoices POST /api/v1/payments TC-025 ❌ Incompleto
RF-026 Despachar envío (registro manual o agencia aliada) CU-008, CU-015 Backoffice (DespacharScreen) shipments POST /api/v1/shipments/{id}/dispatch TC-026 ❌ Incompleto

Módulo 5: Operación de almacén (backoffice)

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-027 Recibir paquete físico (peso, dimensiones, fotos) CU-009 Backoffice (RecibirPaqueteScreen) physical_packages, package_photos POST /api/v1/packages TC-027 ❌ Incompleto
RF-028 Conciliar paquete sin prealerta CU-009 (FA) Backoffice (ConciliacionScreen) physical_packages.status = pendiente_conciliacion POST /api/v1/packages/{id}/reconcile TC-028 ❌ Incompleto
RF-029 Cambiar estado logístico manualmente CU-009 (FA) Backoffice (CambiarEstadoScreen) physical_packages.status PATCH /api/v1/packages/{id}/status TC-029 ❌ Incompleto

Módulo 6: Verificación de identidad (KYC)

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-030 Cargar documentos KYC (frente, reverso, selfie) CU-010 KycDocumentFrontScreen, KycDocumentBackScreen, KycSelfieScreen kyc_records, file_attachments POST /api/v1/kyc/documents TC-030 ⚠️ Parcial
RF-031 Aprobar / rechazar KYC (operador) CU-018 Backoffice (KycReviewScreen) kyc_records.status, kyc_records.reviewed_by POST /api/v1/kyc/{id}/review TC-031 ❌ Incompleto
RF-032 Ver estado KYC en dashboard CU-010 DashboardScreen (KycBanner) kyc_records.status (joined con users) GET /api/v1/users/me/kyc TC-032 ✅ Cubierto

Módulo 7: Servicios adicionales

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-033 Solicitar inspección / reempaque / devolución CU-011 RequestInspectionScreen, RequestRepackScreen, RequestReturnScreen service_requests POST /api/v1/service-requests TC-033 ⚠️ Parcial
RF-034 Cargar evidencia de servicio (fotos, videos) CU-022 Backoffice (CargarEvidenciaScreen) service_evidence POST /api/v1/service-requests/{id}/evidence TC-034 ❌ Incompleto

Módulo 8: Incidencias y reclamos

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-035 Abrir incidencia sobre un paquete CU-012 IncidentCreateScreen incidents POST /api/v1/incidents TC-035 ❌ Incompleto
RF-036 Ver mis incidencias activas CU-012 IncidentsListScreen incidents GET /api/v1/incidents TC-036 ❌ Incompleto
RF-037 Operador gestiona incidencia CU-012 Backoffice (IncidentDetailScreen) incidents.status, incident_messages POST /api/v1/incidents/{id}/respond TC-037 ❌ Incompleto
RF-038 Cerrar incidencia con resolución CU-012 Backoffice incidents.status = cerrada POST /api/v1/incidents/{id}/close TC-038 ❌ Incompleto

Módulo 9: Notificaciones

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-039 Ver historial de notificaciones CU-016 NotificationsScreen notifications GET /api/v1/notifications TC-039 ⚠️ Parcial
RF-040 Marcar notificación como leída CU-016 NotificationsScreen notifications.read_at PATCH /api/v1/notifications/{id}/read TC-040 ⚠️ Parcial
RF-041 Push al cambiar estado de paquete CU-016 (parte B) (servicio de notificaciones) notifications, device_tokens POST /api/v1/internal/notify TC-041 ❌ Incompleto

Módulo 10: Gestión de contactos

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-042 Crear destinatario en Cuba Parte de CU-003 / CU-005 ContactosScreen (form alta) recipients POST /api/v1/recipients TC-042 ✅ Cubierto
RF-043 Editar destinatario Parte de CU-003 / CU-005 ContactosScreen (form edición) recipients PATCH /api/v1/recipients/{id} TC-043 ⚠️ Parcial
RF-044 Crear remitente en EE.UU. Parte de CU-003 / CU-005 ContactosScreen (form remitente) senders POST /api/v1/senders TC-044 ❌ Incompleto

Módulo 11: Tarifas y configuración (admin)

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-039 Configurar días gratis y costo de almacenaje (sub) (backoffice — RF-039) Backoffice (ConfigAlmacenajeScreen) storage_policies PATCH /api/v1/admin/storage-policy TC-039 ❌ Incompleto
RF-039 Configurar tarifas de envío, barco/avión (sub) (backoffice — RF-039) Backoffice (TarifasEnvioScreen) shipping_rates PATCH /api/v1/admin/shipping-rates TC-039b ❌ Incompleto

Configuración general — RF-039

RF-039 cubre toda la configuración del sistema administrable desde el backoffice (tarifas de envío, días gratis de almacenaje, tutoriales, contenido de aduana, categorías, etc.). En esta matriz se desglosa en sub-ítems para visibilidad operativa. Los identificadores TC-039 y TC-039b son alias del mismo caso de prueba general.

Módulo 12: Integraciones externas

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-048 Webhook de agencia aliada (actualizar estado envío) CU-015 (callback externo) shipments, integration_events POST /api/v1/webhooks/agency TC-048 ❌ Incompleto
RF-049 Webhook de Stripe (confirmar pago) CU-014 (callback externo) payments.status POST /api/v1/webhooks/stripe TC-049 🔒 Pendiente
RF-046 OCR de capturas de órdenes ReporteForm (botón "Escanear") purchase_reports.ocr_data POST /api/v1/ocr/scan TC-046 🔒 Pendiente
RF-047 WhatsApp API para notificaciones (servicio de notificaciones) notifications.channel = whatsapp POST /api/v1/webhooks/whatsapp TC-047 🔒 Pendiente
RF-050 Lectura de códigos QR/barras en almacén CU-013 Backoffice (lector físico) physical_packages.tracking — (cliente) TC-050 🔒 Pendiente
RF-051 Tracking de transportistas (UPS, USPS, FedEx) (servicio de tracking) shipment_tracking_events GET /api/v1/tracking/{tracking} TC-051 🔒 Pendiente

Módulo 13: Reportes administrativos

RF Descripción corta CU Pantalla / Vista Tabla / Modelo Endpoint Prueba Estado
RF-052 Reporte diario de paquetes recibidos Backoffice (ReportesOperativosScreen) physical_packages (agregado diario) GET /api/v1/admin/reports/daily TC-052 🔒 Pendiente
RF-053 Reporte de ingresos por período Backoffice (ReporteIngresosScreen) payments (agregado por fecha) GET /api/v1/admin/reports/revenue TC-053 🔒 Pendiente
RF-054 Reporte de incidencias abiertas/cerradas Backoffice (ReporteIncidenciasScreen) incidents (agregado por status) GET /api/v1/admin/reports/incidents TC-054 🔒 Pendiente
RF-055 Reporte de paquetes almacenados y próximos a vencer Backoffice (ReporteAlmacenScreen) physical_packages (días en almacén) GET /api/v1/admin/reports/storage TC-055 ❌ Incompleto

Resumen de cobertura

Módulo Total RFs ✅ Cubiertos ⚠️ Parciales ❌ Incompletos 🔒 Pendientes (Fase 2+) % MVP listo
1 — Autenticación y registro 7 0 3 4 0 0%
2 — Dashboard y casillero 5 4 1 0 0 80%
3 — Prealerta 5 1 2 2 0 20%
4 — Paquetes y envíos 9 3 1 5 0 33%
5 — Operación de almacén 3 0 0 3 0 0%
6 — KYC 3 1 1 1 0 33%
7 — Servicios adicionales 2 0 1 1 0 0%
8 — Incidencias 4 0 0 4 0 0%
9 — Notificaciones 3 0 1 2 0 0%
10 — Contactos 3 1 1 1 0 33%
11 — Tarifas y configuración 1 (RF-039 con sub-ítems) 0 0 1 0 0%
12 — Integraciones externas 6 0 0 1 5 0%
13 — Reportes administrativos 4 0 0 1 3 0%
TOTAL 55 10 11 26 8 18%

Lectura del resumen

El 18% de cobertura MVP es sobre el 100% de los requisitos. La mayoría de los RFs del MVP están definidos en el SRS pero no implementados en el código de la APK ni del backend. Esto confirma que la fase de Construcción está en sus inicios y la mayor parte del trabajo pendiente está alineado con los CUs ya documentados.

La acción inmediata es: para cada RF con estado ❌ o ⚠️, crear o actualizar la tarea correspondiente en tareas.md y asignarla en el sprint vigente.