HU06 Consultar la información detallada de coleccionista - nicolasjaramillocely99/Proyecto_Ingenieria_Software_Aplicaciones_Moviles GitHub Wiki
Descripción
Como usuario visitante
Quiero ver el detalle de un coleccionista
Para conocer sus gustos musicales
Persona Asignada
Julian David Rodriguez
Prioridad
Alta
Criterios de Aceptación
- La pantalla de detalle debe mostrar: avatar/foto en grande, nombre del coleccionista, ubicación (país/ciudad) y una bio corta.
- Debe visualizarse un resumen de gustos musicales mediante chips/etiquetas (p. ej., géneros favoritos) y/o estadísticas (p. ej., "Álbumes en colección", "Artistas favoritos").
- Debe existir una sección de Álbumes destacados del coleccionista (mín. 1 carrusel horizontal o grid compacto) mostrando portada, título y artista.
- Al tocar un álbum destacado, la aplicación debe navegar a la pantalla de detalle del álbum correspondiente.
- La navegación a esta pantalla debe recibir el ID del coleccionista como argumento y cargar sus datos asociados.
- Las imágenes (avatar y portadas) deben cargarse de forma asíncrona sin bloquear la UI.
- Debe mostrarse un indicador de carga mientras se obtienen los datos.
- Si ocurre un error al cargar, debe mostrarse un mensaje de error con opción a reintentar.
- Si el coleccionista no tiene información de gustos o álbumes destacados, deben mostrarse estados vacíos con mensajes claros (sin errores).
- Debe existir un botón de retroceso (Back) para regresar al listado de coleccionistas.
- La barra de navegación inferior debe mantenerse visible con las opciones: Álbumes, Artistas, Coleccionistas y Mi Colección (con Coleccionistas activo).
- El título "Detalle del coleccionista" (o el nombre del coleccionista) debe ser visible en la parte superior de la pantalla.
Tareas de Implementación
| Código | Descripción de la Tarea | Estimación |
|---|---|---|
| T06-01 | Crear la ruta/vista de DetalleColeccionista y registrar en el componente de navegación (recibir collectorId) |
0h 30m |
| T06-02 | Extender el modelo Coleccionista para detalle (campos extra: lista de génerosFavoritos, artistasFavoritos, albumesDestacados [id, titulo, artista, portadaUrl]) |
0h 30m |
| T06-03 | Implementar CollectorRepository.getCollectorDetail(collectorId) con datos hardcodeados (y manejo de error/no encontrado) |
0h 45m |
| T06-04 | Implementar ViewModel/UseCase para orquestar carga, estados (Loading/Success/Empty/Error) y reintento | 1h 00m |
| T06-05 | Diseñar layout principal del detalle (header con avatar + nombre + ubicación + bio) | 1h 00m |
| T06-06 | Implementar chips/etiquetas de géneros favoritos y estadísticas | 0h 45m |
| T06-07 | Implementar lista/carrusel de Álbumes destacados con navegación al detalle de álbum | 0h 45m |
| T06-08 | Integrar carga asíncrona de imágenes con placeholders y fallback de error | 0h 30m |
| T06-09 | Estados de UI: cargando, vacíos (sin gustos / sin álbumes), error con botón Reintentar | 0h 45m |
| T06-10 | Accesibilidad: contentDescription en imágenes, tamaños táctiles mínimos, lectura por TalkBack/VoiceOver | 0h 30m |
| T06-11 | Pruebas unitarias (ViewModel/UseCase) y simulación de errores/red | 1h 00m |
| T06-12 | Pruebas de UI (navegación desde listado, back, clic en álbum destacado, estados) | 1h 00m |
| T06-13 | Optimización (memoización/diffing, lazy lists, precarga simple) | 0h 30m |
| T06-14 | Animaciones sutiles (aparición del header, transición al tocar álbum) | 0h 30m |
Tiempo total estimado: 10h 45m