erp-core/docs/01-fase-foundation/MGN-002-users/historias-usuario/US-MGN002-002.md

7.9 KiB

US-MGN002-002: Perfil de Usuario

Identificacion

Campo Valor
ID US-MGN002-002
Modulo MGN-002 Users
Sprint Sprint 2
Prioridad P1 - Alta
Story Points 5
Estado Ready
Autor System
Fecha 2025-12-05

Historia de Usuario

Como usuario autenticado del sistema Quiero poder ver y editar mi informacion personal Para mantener mis datos actualizados y personalizar mi experiencia


Criterios de Aceptacion

Escenario 1: Ver mi perfil

Given un usuario autenticado
When accede a GET /api/v1/users/me
Then el sistema retorna su perfil completo
  And incluye firstName, lastName, email, phone
  And incluye avatarUrl, avatarThumbnailUrl
  And incluye createdAt, lastLoginAt
  And incluye sus roles asignados
  And NO incluye passwordHash

Escenario 2: Actualizar nombre

Given un usuario autenticado con nombre "Juan"
When actualiza su nombre a "Carlos"
Then el sistema guarda el cambio
  And responde con el perfil actualizado
  And firstName es "Carlos"

Escenario 3: Subir avatar

Given un usuario autenticado
  And una imagen JPG de 2MB
When sube la imagen como avatar
Then el sistema redimensiona a 200x200 px
  And genera thumbnail de 50x50 px
  And actualiza avatarUrl en su perfil
  And responde con las URLs generadas

Escenario 4: Avatar muy grande

Given un usuario autenticado
  And una imagen de 15MB
When intenta subir como avatar
Then el sistema responde con status 400
  And el mensaje es "Imagen excede tamaño maximo (10MB)"

Escenario 5: Eliminar avatar

Given un usuario con avatar
When elimina su avatar
Then avatarUrl se establece a null
  And avatarThumbnailUrl se establece a null
  And el avatar anterior se marca como no actual

Mockup / Wireframe

+------------------------------------------------------------------+
|  [Logo]   Mi Perfil                                               |
+------------------------------------------------------------------+
|                                                                   |
|   +-------+                                                       |
|   |       |   Juan Perez                                         |
|   | FOTO  |   juan@empresa.com                                   |
|   |       |   Admin, Manager                                     |
|   +-------+                                                       |
|   [Cambiar foto]                                                 |
|                                                                   |
|   ┌─────────────────────────────────────────────────────────┐    |
|   │ INFORMACION PERSONAL                                     │    |
|   ├─────────────────────────────────────────────────────────┤    |
|   │ Nombre        [Juan                    ]                 │    |
|   │ Apellido      [Perez                   ]                 │    |
|   │ Telefono      [+521234567890           ]                 │    |
|   │ Email         juan@empresa.com  [Cambiar email]          │    |
|   │                                                          │    |
|   │ [  Cancelar  ]           [ Guardar Cambios ]            │    |
|   └─────────────────────────────────────────────────────────┘    |
|                                                                   |
|   ┌─────────────────────────────────────────────────────────┐    |
|   │ SEGURIDAD                                                │    |
|   ├─────────────────────────────────────────────────────────┤    |
|   │ Contraseña    ••••••••         [Cambiar contraseña]     │    |
|   │ Ultimo login  05/12/2025 10:30                          │    |
|   │ Miembro desde 01/01/2025                                │    |
|   └─────────────────────────────────────────────────────────┘    |
+------------------------------------------------------------------+

Modal: Subir Avatar
┌──────────────────────────────────────────────────────────────────┐
│                      CAMBIAR FOTO                                 │
├──────────────────────────────────────────────────────────────────┤
│                                                                   │
│   +------------------+                                            │
│   |                  |   Arrastra una imagen o                   │
│   |   [ + ]          |   [Selecciona archivo]                    │
│   |                  |                                            │
│   +------------------+   Formatos: JPG, PNG, WebP                │
│                          Tamaño max: 10MB                        │
│                                                                   │
│   [  Cancelar  ]                        [ Subir ]                │
└──────────────────────────────────────────────────────────────────┘

Notas Tecnicas

API Endpoints

// Obtener perfil
GET /api/v1/users/me

// Response 200
{
  "id": "user-uuid",
  "email": "juan@empresa.com",
  "firstName": "Juan",
  "lastName": "Perez",
  "phone": "+521234567890",
  "avatarUrl": "https://storage.../avatar-200.jpg",
  "avatarThumbnailUrl": "https://storage.../avatar-50.jpg",
  "status": "active",
  "emailVerifiedAt": "2025-01-01T00:00:00Z",
  "lastLoginAt": "2025-12-05T10:30:00Z",
  "createdAt": "2025-01-01T00:00:00Z",
  "roles": [{ "id": "...", "name": "admin" }]
}

// Actualizar perfil
PATCH /api/v1/users/me
{
  "firstName": "Carlos",
  "lastName": "Lopez",
  "phone": "+521234567890"
}

// Subir avatar
POST /api/v1/users/me/avatar
Content-Type: multipart/form-data
avatar: [file]

// Response 200
{
  "avatarUrl": "https://storage.../avatar-200.jpg",
  "avatarThumbnailUrl": "https://storage.../avatar-50.jpg"
}

Validaciones de Avatar

Validacion Valor
Formatos image/jpeg, image/png, image/webp
Tamaño max 10MB
Resize main 200x200 px
Resize thumb 50x50 px

Definicion de Done

  • Endpoint GET /api/v1/users/me
  • Endpoint PATCH /api/v1/users/me
  • Endpoint POST /api/v1/users/me/avatar
  • Endpoint DELETE /api/v1/users/me/avatar
  • Procesamiento de imagen con Sharp
  • Upload a storage (S3/local)
  • Frontend: ProfilePage
  • Frontend: AvatarUploader component
  • Tests unitarios
  • Code review aprobado

Estimacion

Tarea Horas
Backend: Profile endpoints 3h
Backend: Avatar upload + resize 4h
Backend: Tests 2h
Frontend: ProfilePage 4h
Frontend: AvatarUploader 3h
Frontend: Tests 2h
Total 18h

Historial

Version Fecha Autor Cambios
1.0 2025-12-05 System Creacion inicial