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 |
| 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.