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.


CU-003: Gestionar perfil personal

Caso de uso detallado para la gestión del perfil del usuario (datos personales, contactos, KYC, cerrar sesión).


Metadatos

Campo Valor
ID CU-003
Nombre Gestionar perfil personal
Actor primario Usuario Final
Módulo Autenticación y registro
Prioridad Alta (MVP)
Frecuencia esperada Media
Trazabilidad SRS RF-006

Descripción

El usuario accede a la pantalla Perfil desde la bottom navigation y puede: - Ver sus datos personales y de KYC - Editar nombre y correo - Cambiar contraseña - Gestionar destinatarios en Cuba - Gestionar remitentes en EE.UU. - Ver su identificador y dirección del casillero - Cerrar sesión


Precondiciones

  • El usuario tiene una sesión activa.
  • El usuario está en la pantalla Perfil (accedida desde la bottom nav).

Postcondiciones

Éxito: - Los datos modificados quedan persistidos. - Si cambió el correo, este se marca como email_verified = false y se envía un nuevo enlace de verificación. - Si cambió la contraseña, se invalidan las sesiones anteriores (ver CU-002). - Si agregó/editó un destinatario, queda registrado bajo su user_id. - Si cerró sesión, el token se elimina del dispositivo y se vuelve a Welcome.


Flujo principal

A) Ver perfil

  1. El usuario toca el tab Perfil en la bottom nav.
  2. El sistema muestra la pantalla Perfil con:
  3. Avatar con iniciales del nombre
  4. Nombre completo
  5. Email (con badge "verificado" o "pendiente")
  6. Teléfono (con badge "verificado" o "pendiente")
  7. Identificador de casillero CP-NNNNNN-D con badge "Activo"
  8. Estado del KYC (con CTA si está pendiente o rechazado)
  9. Sección "Mis destinatarios" (lista o CTA para agregar)
  10. Sección "Mis remitentes" (lista o CTA para agregar)
  11. Botón Cerrar sesión (en rojo)

B) Editar nombre

  1. El usuario toca Editar junto al nombre.
  2. Se abre un modal con dos campos: nombre y apellidos.
  3. El usuario edita y toca Guardar.
  4. El sistema valida que no estén vacíos.
  5. El sistema actualiza y muestra toast "Nombre actualizado".

C) Cambiar contraseña

  1. El usuario toca Cambiar contraseña.
  2. Se abre un modal con campos: contraseña actual, nueva contraseña, repetir nueva contraseña.
  3. El usuario completa y toca Cambiar.
  4. El sistema valida la contraseña actual (re-autenticación).
  5. El sistema valida la nueva contraseña (requisitos).
  6. El sistema actualiza el hash y registra en audit_logs.
  7. El sistema invalida otros refresh_token del usuario.
  8. Muestra toast "Contraseña actualizada" y notifica "Otras sesiones se han cerrado".

D) Cambiar correo

  1. El usuario toca Editar junto al correo.
  2. Se abre un modal: nuevo correo + contraseña actual.
  3. El usuario completa y toca Guardar.
  4. El sistema valida la contraseña actual.
  5. El sistema valida formato y unicidad del nuevo correo.
  6. El sistema actualiza y marca email_verified = false.
  7. El sistema envía un nuevo enlace de verificación.
  8. Muestra toast "Verifica tu nuevo correo".

E) Agregar destinatario

  1. El usuario toca Agregar destinatario.
  2. Se abre un sheet con campos:
  3. Nombre completo
  4. CI (opcional)
  5. Teléfono (con prefijo +53 o +1, según corresponda)
  6. Provincia (dropdown con las 16 provincias de Cuba)
  7. Municipio
  8. Dirección
  9. Referencias de entrega
  10. ¿Es tu dirección por defecto? (checkbox)
  11. El usuario completa y toca Guardar.
  12. El sistema valida campos requeridos.
  13. El sistema valida formato de teléfono (8 dígitos para +53, 10 dígitos para +1).
  14. El sistema crea el Recipient y lo asocia al usuario.
  15. Muestra toast "Destinatario agregado".

F) Editar destinatario

  1. El usuario toca un destinatario existente.
  2. Se abre el mismo sheet con los datos pre-rellenados.
  3. El usuario modifica y guarda (mismas validaciones que en E).

G) Eliminar destinatario

  1. El usuario toca el icono de papelera junto al destinatario.
  2. El sistema muestra confirmación: "¿Eliminar a {nombre}? Si está asociado a envíos pendientes, no podrá eliminarse."
  3. Si confirma y no tiene envíos activos, el sistema marca deleted_at (soft delete).
  4. Si tiene envíos activos, el sistema muestra "No se puede eliminar: tiene envíos pendientes".

H) Cerrar sesión

  1. El usuario toca Cerrar sesión (botón rojo al final del perfil).
  2. El sistema muestra confirmación: "¿Cerrar sesión? Tendrás que volver a iniciar."
  3. El usuario confirma.
  4. El sistema elimina los tokens del dispositivo.
  5. El sistema navega a Welcome (con pop hasta Welcome).

Flujos alternativos

FA-1: KYC no aprobado → CTA visible

  • Si el usuario no tiene KYC aprobado, en la sección "Verificación KYC" del perfil:
  • Si está sin_iniciar → "Verifica tu identidad para despachar" + botón Iniciar verificación
  • Si está en_revision → "Estamos verificando tu identidad" (sin botón)
  • Si está rechazado → "Tu verificación fue rechazada. Motivo: {x}." + botón Corregir y reenviar
  • Si está requiere_mas_informacion → "Necesitamos información adicional" + botón Completar

FA-2: Eliminar destinatario con envíos activos

  • Ver paso 37.

FA-3: Cambiar correo con sesión sin contraseña conocida

  • No aplica: el cambio de correo requiere contraseña actual.

FA-4: Cambio de teléfono (en MVP no se permite; debe contactar soporte)

  • Si el usuario quiere cambiar de teléfono, debe escribir a soporte.
  • Esto es una decisión de seguridad: cambiar el teléfono sin verificación presencial podría permitir robo de cuenta.

Excepciones

Excepción Causa Manejo
EMAIL_ALREADY_EXISTS Nuevo correo ya registrado Mensaje inline
INVALID_CURRENT_PASSWORD Contraseña actual no coincide Mensaje en modal
WEAK_PASSWORD Nueva contraseña no cumple Lista requisitos
RECIPIENT_HAS_ACTIVE_SHIPMENTS Intentar eliminar con envíos Mensaje específico
INVALID_PHONE_FORMAT Teléfono de destinatario no válido Mensaje con formato esperado

Reglas de negocio aplicables

  • RN-1 (Origen del usuario): el usuario vive en EE.UU. (no editable).
  • RN-6 (Destinatarios): pueden tener teléfono +53 (Cuba) o +1 (EE.UU.). Ver reglas-negocio.md.
  • RN-7 (Remitentes): solo +1. Ver reglas-negocio.md.
  • RN-8 (KYC): cambio de estado no editable por el usuario; lo gestiona el operador. Ver kyc.md.
  • RN-9 (Provincias): las 16 provincias cubanas son las oficiales. Ver contacto en modelo de datos.

Criterios de aceptación

  • El usuario puede editar su nombre y apellidos sin necesidad de re-verificar.
  • El cambio de correo marca email_verified = false y envía nuevo enlace.
  • El cambio de contraseña invalida otras sesiones.
  • Un destinatario con envíos activos no se puede eliminar.
  • El teléfono de un destinatario acepta +53 (8 dígitos) o +1 (10 dígitos).
  • Las 16 provincias cubanas aparecen en el dropdown.

Diagrama de actividad

flowchart TD
    A["Pantalla Perfil"] --> B{"¿Qué acción?"}
    B --> C1["Ver datos"]
    B --> C2["Editar nombre"]
    B --> C3["Cambiar contraseña"]
    B --> C4["Cambiar correo"]
    B --> C5["Agregar destinatario"]
    B --> C6["Editar destinatario"]
    B --> C7["Eliminar destinatario"]
    B --> C8["Cerrar sesión"]

    C2 --> D2["Modal nombre/apellidos"]
    D2 --> E2["Valida no vacío"]
    E2 --> F2["Actualiza"]

    C3 --> D3["Modal contraseña"]
    D3 --> E3["Valida actual"]
    E3 --> F3["Valida nueva"]
    F3 --> G3["Actualiza hash"]
    G3 --> H3["Invalida otras sesiones"]

    C4 --> D4["Modal correo"]
    D4 --> E4["Valida contraseña actual"]
    E4 --> F4["Valida formato y unicidad"]
    F4 --> G4["Actualiza email_verified=false"]
    G4 --> H4["Envía enlace verificación"]

    C5 --> D5["Sheet destinatario"]
    D5 --> E5["Valida campos"]
    E5 --> F5["Valida teléfono"]
    F5 --> G5["Crea Recipient"]

    C7 --> D7["Confirmación"]
    D7 --> E7{"¿Envíos activos?"}
    E7 -- Sí --> F7["No se puede eliminar"]
    E7 -- No --> G7["Soft delete"]

    C8 --> D8["Confirmación"]
    D8 --> E8["Elimina tokens"]
    E8 --> F8["Navega a Welcome"]

Pruebas asociadas

  • PT-020: Ver perfil
  • PT-021: Editar nombre
  • PT-022: Cambiar contraseña con éxito
  • PT-023: Cambio de contraseña con contraseña actual incorrecta
  • PT-024: Cambio de correo (genera nueva verificación)
  • PT-025: Agregar destinatario
  • PT-026: Validación de teléfono de destinatario +53
  • PT-027: Validación de teléfono de destinatario +1
  • PT-028: Eliminar destinatario sin envíos
  • PT-029: Eliminar destinatario con envíos activos (debe fallar)
  • PT-030: Cerrar sesión
  • PT-031: Dropdown de 16 provincias cubanas