Ruta: /item-details
Componentes:
- Encabezado
- Tarjeta con los detalles del ítem
- Nombre/descripción
- Imagen
- Marca
- Categoría
- Precio actual
- Estatus del precio (verde, amarillo, rojo)
- Fecha de actualización
- Botón Reintentar (oculto al inicio)
- Botones para interacciones con el ítem actual (ocultos al inicio)
- Guardar en favoritos, o simplemente Guardar
- Activar recordatorio (según una fecha específica)
- Activar alarma (según cuando cambie de precio)
- Compartir (URL dentro de la app)
- Ocultar, o “No mostrar en resultados”
- Sección Insights o Estadísticas (oculto al inicio)
- Precio mínimo (cuánto y cuándo)
- Precio máximo (cuánto y cuándo)
- Qué tan bueno es el precio actual (basado en su historial, qué tan alejado del precio medio)
- Progress bar (estilo percentiles como google flights)
- Qué tan popular es este ítem (basado en sus vistas)
- Histograma (serie de precio vs tiempo) básico (90 días)
- Ver histograma extendido
- Histograma extendido (360 días) (oculto al inicio)
- Sección “relacionados” o qué otros ítems tienen la misma marca o la misma categoría o una descripción similar (oculto al inicio)
- Sección “recomendaciones” o qué otros ítems están buscando los usuarios que también buscaron el ítem actual (oculto al inicio)
- Loading
Acciones:
- Al inicio: leer ítem seleccionado desde la URL y el que está guardado en el estado de la aplicación (App context)
- Si no coincide, no es el mismo ítem, hacer una llamada a GET /item-details
- Si la respuesta es exitosa debe actualizar el estado de la aplicación con el ítem recibido recibido para que ambos coincidan
- Si la respuesta no es exitosa, ocultar el Loading, mostrar botón Reintentar, mostrar mensaje “Algo salió mal”
- Una vez que el ítem de la URL y del estado de la aplicación coincidan se debe:
- Actualizar la Tarjeta con los detalles del ítem
- Mostrar los botones de Interacciones basado en los detalles del ítem (evaluar si debe mostrar cada botón)
- Iniciar las llamadas adicionales basado en los detalles del ítem (evaluar si debe hacer cada llamada)
- Si hace click en Reintentar, debe ocultar/bloquear dicho botón, mostrar el Loading, repetir la llamada a GET /item-details
- Llamadas adicionales:
- GET item-insights
- GET related-items
- GET recomended-items
- Al finalizar dichas llamadas debe ocultar el Loading
Integraciones