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¶
- El usuario toca el tab Perfil en la bottom nav.
- El sistema muestra la pantalla Perfil con:
- Avatar con iniciales del nombre
- Nombre completo
- Email (con badge "verificado" o "pendiente")
- Teléfono (con badge "verificado" o "pendiente")
- Identificador de casillero
CP-NNNNNN-Dcon badge "Activo" - Estado del KYC (con CTA si está pendiente o rechazado)
- Sección "Mis destinatarios" (lista o CTA para agregar)
- Sección "Mis remitentes" (lista o CTA para agregar)
- Botón Cerrar sesión (en rojo)
B) Editar nombre¶
- El usuario toca Editar junto al nombre.
- Se abre un modal con dos campos: nombre y apellidos.
- El usuario edita y toca Guardar.
- El sistema valida que no estén vacíos.
- El sistema actualiza y muestra toast "Nombre actualizado".
C) Cambiar contraseña¶
- El usuario toca Cambiar contraseña.
- Se abre un modal con campos: contraseña actual, nueva contraseña, repetir nueva contraseña.
- El usuario completa y toca Cambiar.
- El sistema valida la contraseña actual (re-autenticación).
- El sistema valida la nueva contraseña (requisitos).
- El sistema actualiza el hash y registra en
audit_logs. - El sistema invalida otros
refresh_tokendel usuario. - Muestra toast "Contraseña actualizada" y notifica "Otras sesiones se han cerrado".
D) Cambiar correo¶
- El usuario toca Editar junto al correo.
- Se abre un modal: nuevo correo + contraseña actual.
- El usuario completa y toca Guardar.
- El sistema valida la contraseña actual.
- El sistema valida formato y unicidad del nuevo correo.
- El sistema actualiza y marca
email_verified = false. - El sistema envía un nuevo enlace de verificación.
- Muestra toast "Verifica tu nuevo correo".
E) Agregar destinatario¶
- El usuario toca Agregar destinatario.
- Se abre un sheet con campos:
- Nombre completo
- CI (opcional)
- Teléfono (con prefijo +53 o +1, según corresponda)
- Provincia (dropdown con las 16 provincias de Cuba)
- Municipio
- Dirección
- Referencias de entrega
- ¿Es tu dirección por defecto? (checkbox)
- El usuario completa y toca Guardar.
- El sistema valida campos requeridos.
- El sistema valida formato de teléfono (8 dígitos para +53, 10 dígitos para +1).
- El sistema crea el
Recipienty lo asocia al usuario. - Muestra toast "Destinatario agregado".
F) Editar destinatario¶
- El usuario toca un destinatario existente.
- Se abre el mismo sheet con los datos pre-rellenados.
- El usuario modifica y guarda (mismas validaciones que en E).
G) Eliminar destinatario¶
- El usuario toca el icono de papelera junto al destinatario.
- El sistema muestra confirmación: "¿Eliminar a {nombre}? Si está asociado a envíos pendientes, no podrá eliminarse."
- Si confirma y no tiene envíos activos, el sistema marca
deleted_at(soft delete). - Si tiene envíos activos, el sistema muestra "No se puede eliminar: tiene envíos pendientes".
H) Cerrar sesión¶
- El usuario toca Cerrar sesión (botón rojo al final del perfil).
- El sistema muestra confirmación: "¿Cerrar sesión? Tendrás que volver a iniciar."
- El usuario confirma.
- El sistema elimina los tokens del dispositivo.
- 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 = falsey 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