Gap mvp
Documento histórico
Este documento se conserva solo para trazabilidad. Consulte el índice maestro para la fuente vigente.
# Pantallas implementadas vs lo que falta para MVP
Documento histórico — auditoría 2026-06-07
Este archivo es el registro histórico del gap entre la documentación y la APK, capturado en la auditoría del 2026-06-07. Para conocer el estado actual vigente de la APK, consultar estado-actual.md.
Detalle pantalla por pantalla de lo que ya está maquetado en la APK, contrastado con lo que pide la documentación funcional.
Leyenda: ✅ hecho, ⚠️ parcial, ❌ falta, 🔒 no aplica (Fase 2+)
Flujo 1: Registro / Login
✅ Welcome (Bienvenida)
| Elemento |
Doc |
App |
Notas |
| Logo |
Sí |
⚠️ |
Drawable no existe; IslaTextLogo podría usarse mientras |
| Tagline "Tu puente logístico hacia Cuba" |
(implícito) |
✅ |
|
| Botón "Iniciar Sesión" |
Sí |
✅ |
navega a Login |
| Botón "Crear Cuenta" |
Sí |
✅ |
navega a Register |
| Copyright |
— |
✅ |
"© 2026 ISLABOX." |
✅ Login
| Elemento |
Doc |
App |
Notas |
| Email |
Sí |
✅ |
placeholder "ejemplo@correo.com" |
| Contraseña con toggle visibilidad |
(estándar) |
✅ |
|
| "¿Olvidaste tu contraseña?" |
(estándar) |
✅ |
navega a ForgotPassword |
| "¿No tienes cuenta? Regístrate" |
(estándar) |
✅ |
navega a Register |
| Validación de email |
Sí |
❌ |
sin validación |
| Validación de contraseña |
Sí |
❌ |
sin requisitos (longitud, caracteres) |
| Reintento con rate limit |
Sí (5/min) |
❌ |
no aplica sin backend |
| Navegación al hacer click |
(navega) |
⚠️ |
navega a Main sin validar credenciales |
⚠️ Register (Registro)
| Elemento |
Doc |
App |
Notas |
| Nombre y apellidos |
Sí |
✅ |
dos IslaTextField lado a lado |
| Email |
Sí |
✅ |
|
| Teléfono con código de país |
Sí |
✅ |
Solo +1 (EE.UU.) — correcto por diseño según la Regla de origen del usuario. |
| Contraseña |
Sí |
✅ |
con toggle visibilidad |
| Repetir contraseña |
(estándar) |
✅ |
con error inline si no coinciden |
| Validación de match |
Sí |
✅ |
passwordsMatch |
| Validación de formato email |
Sí |
❌ |
|
| Validación de requisitos contraseña |
Sí |
❌ |
|
| Checkbox de términos |
(estándar) |
❌ |
no está |
| Handler de envío |
— |
❌ |
vacío (TODO) |
✅ ForgotPassword
| Elemento |
Doc |
App |
Notas |
| Email |
Sí |
✅ |
|
| Botón "Enviar código" |
(estándar) |
✅ |
navega a VerificationCode(email) |
| Link "Volver al Login" |
(estándar) |
✅ |
|
✅ VerificationCode (OTP)
| Elemento |
Doc |
App |
Notas |
| Input OTP de 6 dígitos |
Sí |
✅ |
OtpInputField custom (BasicTextField + 6 boxes) |
| Email visible |
Sí |
✅ |
"enviado a {email}" |
| Botón "Verificar" |
(estándar) |
✅ |
habilitado cuando código tiene 6 chars |
| Reenviar con timer |
(estándar) |
✅ |
45s countdown |
| Validación del código |
(estándar) |
❌ |
no valida, navega siempre |
✅ Success
| Elemento |
Doc |
App |
Notas |
| Imagen de éxito |
Sí |
⚠️ |
Drawable no existe; usa el de IslaTextLogo o crear el success |
| Título configurable |
(genérico) |
✅ |
default "¡Éxito!" |
| Subtítulo configurable |
(genérico) |
✅ |
|
| Botón de acción |
(genérico) |
✅ |
configurable |
Flujo 2: Dashboard (Inicio)
⚠️ Dashboard
| Elemento |
Doc |
App |
Notas |
| Saludo "Bienvenido, {nombre}" |
Sí |
✅ |
GreetingSection |
| Identificador del casillero (CP-XXX) |
Sí |
✅ |
pero hardcoded CP-001042-7 |
| Punto verde de "activo" |
— |
✅ |
decorativo |
| Dirección completa copiable |
Sí |
⚠️ |
LockerAddressSection tiene la dirección pero no muestra botón de copiar todo |
| Copiar por campos |
Sí |
⚠️ |
cada campo tiene su propio IconButton(ContentCopy) |
| Selector Amazon/Shein/Temu |
(implícito) |
✅ |
segmented control en la sección de dirección |
| 4 secciones de paquetes |
Sí |
❌ |
Solo 3: En Tránsito, En Almacén, Entregados. Falta "Compras en camino al almacén" |
| Banner "¿Compraste algo nuevo?" |
(implícito) |
✅ |
ReportActionBanner |
| Acceso a tutoriales |
Sí |
❌ |
no hay link directo a Amazon/Shein/Temu desde el dashboard |
| Botón de notificaciones |
Sí |
✅ |
pero NotificationsScreen solo tiene empty state |
| Sección "Requiere tu atención" |
Sí |
❌ |
no existe |
| Acceso al historial completo de notificaciones |
Sí |
❌ |
solo navega a empty state |
❌ Notificaciones
| Elemento |
Doc |
App |
Notas |
| Lista de notificaciones |
Sí |
❌ |
empty state |
| Indicador de no leídas |
Sí |
❌ |
el badge rojo en la campana es decorativo, no funcional |
| Tipos de notificaciones |
18+ eventos |
❌ |
|
| Push: días de almacenaje por vencer |
Sí |
❌ |
|
| Push: cargos por almacenaje |
Sí |
❌ |
|
| Push: aduana |
Sí |
❌ |
|
| Push: cargos adicionales |
Sí |
❌ |
|
Flujo 3: Reportes (Prealertas)
⚠️ Reportes (Mis reportes)
| Elemento |
Doc |
App |
Notas |
| Lista de prealertas |
Sí |
✅ |
ReportesScreen con 4 ejemplos |
| Cada item: tienda |
Sí |
✅ |
badge con tienda |
| Cada item: estado |
Sí |
✅ |
badge con estado |
| Cada item: tracking (o "Sin tracking aún") |
Sí |
✅ |
"Sin tracking aún" implementado |
| Cada item: número de orden |
Sí |
✅ |
|
| Cada item: fecha de compra |
Sí |
✅ |
|
| FAB para nuevo reporte |
(estándar) |
✅ |
navega a ReporteForm |
| Estado vacío |
(estándar) |
✅ |
"No tienes reportes pendientes" |
| Estado "Reportada" |
Sí |
✅ |
|
| Estado "Esperando tracking" |
Sí |
✅ |
como "Esperando tracking" |
| Estado "Tracking recibido" |
Sí |
✅ |
|
| Estado "Esperando llegada al almacén" |
Sí |
✅ |
|
| Estado "Requiere corrección" |
Sí |
✅ |
|
| Estado "Vinculada a paquete" |
Sí |
❌ |
no hay ejemplo |
| Estado "Cancelada" |
Sí |
❌ |
no hay ejemplo |
| Click → detalle |
(estándar) |
✅ |
navega a ReporteDetalle (raíz) |
| Campo |
Doc |
App |
Notas |
| Tienda (Amazon, SHEIN, Temu) |
Sí |
✅ |
IslaTextField libre (no es dropdown) |
| Nº de orden |
Sí |
✅ |
|
| Fecha de compra |
Sí |
⚠️ |
TextField libre con placeholder "DD/MM/AAAA", no es DatePicker |
| Tracking (opcional) |
Sí |
✅ |
|
| Categoría (dropdown) |
Sí |
✅ |
ExposedDropdownMenuBox con 8 categorías |
| Descripción |
Sí |
✅ |
|
| Cantidad |
Sí |
✅ |
KeyboardType.Number |
| Valor pagado (USD) |
Sí |
✅ |
KeyboardType.Decimal |
| Enlace del producto (opcional) |
Sí |
✅ |
|
| Instrucciones especiales (opcional) |
Sí |
✅ |
multilinea |
| ¿Desea consolidar? (Sí/No) |
Sí |
✅ |
2 RadioButton |
| Servicios adicionales (Inspección, Prueba, Reempaque) |
Sí |
✅ |
3 Checkbox |
| Foto/captura de orden (opcional) |
Sí |
⚠️ |
CaptureUploadSection no abre cámara ni galería |
| Remitente (EE.UU.) |
Sí |
⚠️ |
RemitenteSelector no permite elegir (asume único) |
| Destinatario (Cuba) |
Sí |
⚠️ |
DestinatarioSelector no abre lista de contactos |
| Validación de campos requeridos |
Sí |
⚠️ |
solo deshabilita el botón si están vacíos; no muestra errores inline |
| Validación de tracking (formato) |
Sí (5+ alfanum) |
❌ |
|
| Validación de valor > 0 |
Sí |
❌ |
|
✅ ReporteDetalle (raíz)
| Sección |
Doc |
App |
Notas |
| Header con tienda y categoría |
Sí |
✅ |
|
| Card de tracking y orden |
Sí |
✅ |
|
| Información en almacén (fecha, embalaje, peso, dimensiones) |
Sí |
✅ |
pero valores "Pendiente" si vacíos |
| Timeline de estados |
Sí |
✅ |
con default si vacío |
| Almacenaje (días, gratis, costo) |
Sí |
✅ |
StorageInfoCard |
| Fotos del paquete |
Sí |
⚠️ |
3 placeholders "PhotoLibrary" (no hay fotos reales) |
| Detalles de compra (fecha, valor, descripción, cantidad) |
Sí |
✅ |
|
| Información de entrega (remitente, destinatario, consolidar) |
Sí |
✅ |
|
| Instrucciones especiales |
Sí |
✅ |
Card destacado si existe |
| Acciones disponibles según estado |
Sí |
✅ |
ActionButtonsGroup con when por estado |
Acciones implementadas:
- "En almacén": Solicitar inspección, Solicitar reempaque, Solicitar devolución, Agregar a consolidación, Enviar solo
- "En servicio adicional": Ver estado del servicio, Esperar resultado
- "Listo para consolidar": Agregar a consolidación
- "Consolidado": Ver consolidación
- "Incidencia": Ver motivo, Resolver problema
- Otros: "No se requieren acciones para este estado"
⚠️ Los onClick de cada acción son vacíos (onClick = { /* TODO */ }).
Flujo 4: Paquetes
⚠️ Paquetes (Mis paquetes)
| Elemento |
Doc |
App |
Notas |
| Lista de paquetes recibidos |
Sí |
✅ |
PaquetesScreen con 3 ejemplos |
| Foto del paquete |
Sí |
⚠️ |
placeholder si no hay fotos |
| Tienda |
Sí |
✅ |
|
| Estado |
Sí |
✅ |
"En almacén", "Listo para enviar", "En tránsito" |
| Tracking |
Sí |
✅ |
|
| Fecha de recepción |
Sí |
✅ |
|
| Días en almacén |
Sí |
✅ |
con color rojo si > 5 |
| Fecha límite sin recargo |
Sí |
✅ |
|
| Click → detalle |
(estándar) |
✅ |
navega a ReporteDetalle (mismo componente) |
❌ Sección "En tránsito"
La doc pide 4 secciones en el dashboard (en camino, en almacén, envíos, entregados). La app solo tiene 3 en PackageSummarySection. Falta desglose entre "en almacén" y "envíos".
❌ Sección "Entregados"
Existe en PackageSummarySection.delivered: Int pero no tiene su propia pantalla de lista.
❌ Detalle de envío (distinto a detalle de paquete)
La doc define shipments con estados específicos: despachado_desde_almacen, en_transito_a_cuba, en_aduana, liberado_de_aduana, en_reparto, entregado. La app no tiene pantalla dedicada para esto.
Flujo 5: Guía
⚠️ Guía (Centro de ayuda)
| Elemento |
Doc |
App |
Notas |
| Título "Guía" |
Sí |
✅ |
|
| Subtítulo "Todo lo que necesitas saber sobre IslaBox" |
Sí |
✅ |
|
| Badge "CENTRO DE AYUDA" |
(estándar) |
✅ |
|
| Featured card "Empieza aquí" |
(estándar) |
✅ |
3 pasos: Compra, Reporta, Recibe |
| Lista de guías |
Sí |
✅ |
6 items |
| "Cómo enviar con IslaBox" |
Sí |
⚠️ |
onClick = { /* TODO */ } |
| "Usa tu dirección en EE. UU." |
Sí |
⚠️ |
onClick = { /* TODO */ } |
| "Artículos permitidos" |
Sí |
⚠️ |
onClick = { /* TODO */ } |
| "Tiempos de entrega" |
Sí |
⚠️ |
onClick = { /* TODO */ } |
| "Información de aduana" |
Sí |
⚠️ |
onClick = { /* TODO */ } |
| "Preguntas frecuentes" |
Sí |
⚠️ |
onClick = { /* TODO */ } |
❌ Tutoriales por marketplace
| Elemento |
Doc |
App |
| Tutorial Amazon |
Sí |
❌ |
| Tutorial SHEIN |
Sí |
❌ |
| Tutorial Temu |
Sí |
❌ |
| Capturas de pantalla de los campos |
Sí |
❌ |
Ejemplo: Línea 2 = ISLABOX CP-001042-8 |
Sí |
❌ |
| Errores frecuentes específicos |
Sí |
❌ |
| Validación final antes de comprar |
Sí |
❌ |
| Elemento |
Doc |
App |
| Qué entra como envío no comercial |
Sí |
❌ |
| Límites por valor/peso |
Sí |
❌ |
| Exenciones aplicables |
Sí |
❌ |
| Categorías frecuentes |
Sí |
❌ |
| Cómo se calcula |
Sí |
❌ |
| Artículos restringidos |
Sí |
❌ |
| Fecha de actualización |
Sí |
❌ |
| Fuente normativa |
Sí |
❌ |
| Glosario |
Sí |
❌ |
Flujo 6: Perfil
⚠️ Perfil
| Elemento |
Doc |
App |
Notas |
| Avatar con iniciales |
(estándar) |
✅ |
"KV" hardcoded |
| Nombre |
Sí |
✅ |
hardcoded "Kleudy Victor Torno Peña" |
| Email |
Sí |
✅ |
hardcoded "kleudy@example.com" |
| Identificador del casillero |
Sí |
✅ |
con dot verde + texto |
| Sección "CUENTA" |
— |
✅ |
3 items |
| Item "Mi Información" |
(estándar) |
⚠️ |
sin onClick |
| Item "Direcciones" |
(estándar) |
⚠️ |
sin onClick (debería llevar a lista de direcciones) |
| Item "Métodos de Pago" |
(estándar) |
⚠️ |
sin onClick (debería llevar a gestión de pagos) |
| Sección "PREFERENCIAS" |
— |
✅ |
3 items |
| Item "Notificaciones" |
(estándar) |
⚠️ |
sin onClick |
| Item "Ayuda y Soporte" |
(estándar) |
⚠️ |
sin onClick |
| Item "Privacidad" |
(estándar) |
⚠️ |
sin onClick |
| Botón "Cerrar Sesión" |
(estándar) |
⚠️ |
onClick = { /* Logout logic */ } vacío |
| Versión |
— |
✅ |
"Versión 1.0.0 - IslaBox" |
No existe. Debería mostrar: nombre, email, teléfono, dirección, fecha de registro, KYC status, etc. con opción a editar.
❌ Direcciones (CRUD)
No existe. Debería:
- Listar direcciones del casillero (puede ser 1 sola en MVP)
- Listar destinatarios en Cuba (múltiples)
- Crear/editar destinatario (nombre, CI, teléfono, dirección, provincia, municipio)
❌ Métodos de Pago
No existe. La doc define payments + payment_methods (no explícito pero implícito). Debería:
- Mostrar historial de pagos
- Permitir registrar método de pago (tarjeta, etc.)
- Mostrar pagos pendientes
❌ Notificaciones (preferencias)
No existe como sub-pantalla. Debería permitir:
- Activar/desactivar push
- Activar/desactivar email
- Categorías de notificaciones
❌ Ayuda y Soporte
No existe. Debería incluir:
- FAQ
- Contacto (WhatsApp, email)
- Términos y condiciones
- Política de privacidad
❌ Privacidad
No existe. Debería mostrar:
- Política de privacidad
- Gestión de datos personales
- Cerrar cuenta
Flujo 7: KYC (Verificación de identidad)
❌ KYC completo (6 pasos según doc)
| Paso |
Doc |
App |
| Bienvenida al proceso |
Sí |
❌ |
| Tipo de documento (Pasaporte, CI, Licencia) |
Sí |
❌ |
| Foto del documento (frente) |
Sí |
❌ |
| Foto del documento (reverso) |
Sí |
❌ |
| Selfie con documento |
Sí |
❌ |
| Datos de residencia (dirección, provincia, municipio) |
Sí |
❌ |
| Envío a revisión |
Sí |
❌ |
❌ Estados de KYC
| Estado |
Doc |
App |
sin_iniciar |
Sí |
❌ |
borrador |
Sí |
❌ |
enviado |
Sí |
❌ |
en_revision |
Sí |
❌ |
aprobado |
Sí |
❌ |
rechazado |
Sí |
❌ |
requiere_mas_informacion |
Sí |
❌ |
vencido (10 años) |
Sí |
❌ |
bloqueado_manual |
Sí |
❌ |
❌ Bloqueo suave (en doc, no implementado)
La doc dice:
"El usuario puede navegar por la app aunque no tenga KYC aprobado. El bloqueo ocurre solo cuando intenta crear un envío, confirmar una consolidación para despacho, pagar un envío internacional, aplicar crédito o usar tarjetas promocionales."
Como no hay consolidación, pagos ni crédito, no aplica todavía. Pero cuando se agreguen, hay que recordar este bloqueo.
Flujo 8: Cotización y Pago — estado al 2026-06-07
Alcance MVP visual (sin backend): QuoteScreen, PaymentScreen e InvoiceScreen ya existen (T-404). Falta conectarlas desde ReporteDetalle con datos coherentes del paquete (T-422) y desde la consolidación (T-406). El pago real, la pasarela Stripe y el lock de Redis son para Fase 2.
⚠️ Cotización (parcial)
| Elemento |
Doc |
App |
Notas |
| Detalle de cotización con desglose |
Sí |
✅ |
QuoteScreen existe (T-404) |
| Items de la cotización |
Sí |
✅ |
QuoteItemRow con descripción, cantidad, total |
| Subtotal, impuestos, descuento, total |
Sí |
✅ |
Implementado en QuoteScreen |
| Banner de expiración |
Sí |
✅ |
"Esta cotización expira el: ..." |
| Botón "Aceptar y Pagar" |
Sí |
✅ |
Navega a PaymentScreen |
| Lista de cotizaciones pendientes |
Sí |
❌ |
No hay pantalla de lista |
| 9 conceptos de costo |
Sí |
⚠️ |
Solo 2 items mockeados en FakeDataSource.quotes |
| Tiempo de validez (7 días) |
Sí |
✅ |
Quote.expiresAt |
⚠️ Pago (parcial)
| Elemento |
Doc |
App |
Notas |
| Pantalla de pago |
Sí |
✅ |
PaymentScreen existe (T-404) |
| Pantalla de factura |
Sí |
✅ |
InvoiceScreen existe (T-404) |
| Selección de método de pago |
Sí |
⚠️ |
Depende de implementación interna |
| Confirmación de pago |
Sí |
✅ |
Navega a InvoiceScreen |
payment_method_mix (real + crédito + tarjeta) |
Sí |
✅ |
Modelos creados (T-111) |
| Lock en Redis |
Sí |
❌ (no aplica) |
Sin backend |
❌ Cotización ligada al envío real (CRÍTICO)
| Elemento |
Doc |
App |
Notas |
ReporteDetalle navega a Quote con id real |
Sí |
❌ |
onPayClick("QUO-001") hardcodeado. T-422 |
Flujo 9: Consolidación — estado al 2026-06-07
Alcance MVP visual (sin backend): ConsolidationListScreen y ConsolidationDetailScreen ya existen (T-110, solo lectura). Falta ConsolidationCreateScreen + ConsolidationSummaryScreen para crear y persistir en FakeDataSource (T-406). Sin lock distribuido, sin cálculo contra servidor de la agencia aliada.
⚠️ Listar consolidaciones (parcial)
| Elemento |
Doc |
App |
Notas |
| Pantalla de lista |
Sí |
✅ |
ConsolidationListScreen existe |
| Card con descripción, peso, # paquetes, status |
Sí |
✅ |
Implementado |
| Navegación a detalle |
(estándar) |
✅ |
onConsolidationClick navega a ConsolidationDetailScreen |
| FAB "Nueva consolidación" siempre visible |
(estándar) |
❌ |
T-406 |
| Empty state con CTA "Crear primera" |
(estándar) |
⚠️ |
Solo dice "No tienes consolidaciones activas" sin CTA |
⚠️ Detalle de consolidación (parcial)
| Elemento |
Doc |
App |
Notas |
| Pantalla de detalle |
Sí |
✅ |
ConsolidationDetailScreen existe |
| Header con descripción, ID, fecha |
Sí |
✅ |
|
| Card de resumen (estado, peso, valor, # paquetes, tracking master) |
Sí |
✅ |
|
| Status badge |
Sí |
✅ |
Coloreado por status |
| Lista de paquetes incluidos |
Sí |
✅ |
Click navega a ReporteDetalle |
| Sección de notas |
Sí |
✅ |
Si notes != null |
| Botón "Pagar" |
Sí |
❌ |
No navega a QuoteScreen con id real. T-406 |
❌ Crear consolidación (CRÍTICO — bloquea el flujo)
| Elemento |
Doc |
App |
Notas |
| Lista de paquetes a consolidar |
Sí |
❌ |
T-406: ConsolidationCreateScreen |
| Selección múltiple con checkbox |
Sí |
❌ |
T-406 |
| Definir destinatario |
Sí |
❌ |
T-406 |
| Cálculo de peso y costo |
Sí |
❌ |
T-406 + constantes en AppSettings |
| Selector de vía (Barco $2.40 / Avión $3.35) |
Sí |
❌ |
T-406 |
| Validación KYC aprobado |
Sí |
❌ |
T-406 (visual, sin backend) |
Generación de Quote con vigencia 7 días |
Sí |
❌ |
T-406 (mockeada, persiste en FakeDataSource) |
| Cambio de paquetes → recálculo |
Sí |
❌ |
T-406 |
❌ Punto de entrada desde ReporteDetalle
| Elemento |
Doc |
App |
Notas |
| Botón "Agregar a consolidación" |
Sí |
❌ |
// TODO (T-428) |
✅ Estados de consolidación (cubierto)
8 estados en doc, 8 implementados en ConsolidationStatus enum (T-105).
Flujo 10: Servicios adicionales — estado al 2026-06-07
Alcance MVP visual (sin backend): ServiceRequestsListScreen (T-501), RequestInspectionScreen (T-502) y RequestReturnScreen (T-503) ya existen. Falta RequestRepackScreen (T-428) y conectar los handlers de "Agregar a consolidación" / "Solicitar reempaque" en ReporteDetalle.
✅ Ver mis servicios solicitados
T-501: ServiceRequestsListScreen con filtros ServiceType y ServiceStatus por FilterChip.
⚠️ Inspección visual (solicitar)
| Elemento |
Doc |
App |
Notas |
Solicitar desde ReporteDetalle |
Sí |
✅ |
RequestInspectionScreen (T-502) |
| Ver estado del servicio |
Sí |
❌ |
Tarea nueva |
| Ver evidencia (fotos/videos) |
Sí |
❌ |
Tarea nueva |
| Aprobar costo de inspección |
Sí |
❌ |
Tarea nueva |
❌ Reempaque (solicitar)
| Elemento |
Doc |
App |
Notas |
| Solicitar |
Sí |
❌ |
T-428: falta RequestRepackScreen |
| Ver estado |
Sí |
❌ |
|
⚠️ Devolución (solicitar)
| Elemento |
Doc |
App |
Notas |
| Solicitar |
Sí |
✅ |
RequestReturnScreen (T-503) |
| 10 estados de devolución |
Sí |
⚠️ |
ServiceStatus tiene 10 valores pero no son específicos de devolución |
| Ver estado |
Sí |
❌ |
|
| Costo de envío de retorno |
Sí |
❌ |
|
Flujo 11: Envíos (después de pagar)
❌ Mis envíos (lista)
| Elemento |
Doc |
App |
| Lista de envíos en curso |
Sí |
❌ |
| Filtros por estado |
Sí |
⚠️ |
| Tarjeta de envío con timeline |
Sí |
⚠️ |
❌ Detalle de envío
| Elemento |
Doc |
App |
| Tracking visual del envío |
Sí |
⚠️ |
| Estado actual |
Sí |
❌ |
| Información de aduana |
Sí |
❌ |
| Costo final (no estimado) |
Sí |
❌ |
| Fecha de entrega |
Sí |
⚠️ |
| Costo de aduana |
Sí |
❌ |
| Reportar incidencia |
Sí |
❌ |
❌ Estados de envío
16 estados en doc, 0 en app.
Flujo 12: Incidencias
❌ Centro de incidencias
| Elemento |
Doc |
App |
| Lista de incidencias activas |
Sí |
❌ |
| Tipos (11 tipos en doc) |
Sí |
❌ |
| Abrir nueva incidencia |
Sí |
❌ |
| Responder a solicitud del operador |
Sí |
❌ |
❌ Detalle de incidencia
| Elemento |
Doc |
App |
| Motivo |
Sí |
❌ |
| Qué necesita el usuario |
Sí |
❌ |
| Acción "Resolver" |
Sí |
❌ |
Flujo 13: Almacenaje (dentro del detalle de paquete)
✅ Ya implementado en StorageInfoCard y ReporteDetalleScreen
| Elemento |
Doc |
App |
| Fecha de recepción |
Sí |
✅ |
| Días en almacén |
Sí |
✅ |
| Días gratis disponibles |
Sí |
⚠️ |
| Costo por día extra |
Sí |
⚠️ |
| Total acumulado |
Sí |
✅ |
| Notificaciones (días por vencer, cargos aplicados) |
Sí |
❌ |
Flujo 14: Direcciones
❌ Lista de direcciones
No existe como pantalla propia (solo accesible desde Perfil > Direcciones que no tiene onClick).
❌ CRUD de destinatarios
No existe.
Flujo 15: Crecimiento (Fase 2) — 🔒
| Funcionalidad |
Doc |
App |
| Código de referido por usuario |
Sí |
🔒 |
| Pantalla de red de referidos |
Sí |
🔒 |
| Crédito acumulado y vencimiento |
Sí |
🔒 |
| Pantalla de crédito y tarjetas |
Sí |
🔒 |
| Niveles 1/2/3 dinámicos |
Sí |
🔒 |
| Pool de referidos |
Sí |
🔒 |
| Tarjetas promocionales |
Sí |
🔒 |
🔒 No es parte del MVP operativo. La base de datos se prepara desde el día 1 según la doc, pero la UI no es visible hasta Fase 2.
Resumen del gap
| Categoría |
Total doc |
En app |
% |
| Pantallas principales |
17 |
7 |
41% |
| Flujos completos |
15 |
3 |
20% |
| Acciones con lógica |
100+ |
~5 |
5% |
Pantallas que SÍ existen (7)
- ✅ Welcome
- ✅ Login
- ⚠️ Register (sin handler)
- ✅ ForgotPassword
- ✅ VerificationCode
- ✅ Success
- ✅ Dashboard
- ⚠️ Reportes (lista + form, falta detalle de destinatario)
- ⚠️ Paquetes
- ⚠️ ReporteDetalle (sin acciones funcionales)
- ⚠️ Guía (sin tutoriales)
- ⚠️ Perfil (sin sub-pantallas)
- ⚠️ Notificaciones (solo empty state)
Pantallas que FALTAN (28)
Auth (1)
KYC (7)
- ❌ KycWelcome
- ❌ KycDocumentType
- ❌ KycDocumentFront
- ❌ KycDocumentBack
- ❌ KycSelfie
- ❌ KycResidence
- ❌ KycReview
Destinatarios (3)
- ❌ RecipientsList
- ❌ RecipientForm (crear/editar)
- ❌ AddressList (direcciones del casillero)
Tutoriales (4)
- ❌ TutorialAmazon
- ❌ TutorialShein
- ❌ TutorialTemu
- ❌ AduanaInfo (módulo informativo)
Cotización y Pago (3)
- ❌ QuoteList
- ❌ QuoteDetail
- ❌ PaymentCheckout
Consolidación (2)
- ❌ ConsolidationNew
- ❌ ConsolidationDetail
Envíos (2)
- ❌ ShipmentList
- ❌ ShipmentDetail
Servicios (4)
- ❌ ServiceRequestList
- ❌ InspectionRequest
- ❌ RepackRequest
- ❌ ReturnRequest
Incidencias (2)
- ❌ IncidentList
- ❌ IncidentDetail
Otros (2)
- ❌ EditProfile
- ❌ Settings / Preferences