Productos más Populares por Subcategoría - bootcamp-uchile-2026/grupo-2-backend GitHub Wiki

Productos más Populares por Subcategoría

La funcionalidad Productos más Populares por Subcategoría permite mostrar una selección de los productos con mayor nivel de ventas dentro de una subcategoría determinada.

Desde la perspectiva Backend, esta funcionalidad consiste en consultar los productos pertenecientes a una subcategoría, determinar cuáles presentan el mayor nivel de ventas según el criterio definido por el negocio y retornar una cantidad determinada de productos ordenados de mayor a menor popularidad.


Objetivo

Proporcionar a Frontend y Mobile una selección de los 4 productos más vendidos de una subcategoría, para ser presentada al usuario como parte de la navegación y exploración de productos.


Responsabilidad Backend

El Backend deberá:

  • Identificar la subcategoría sobre la cual se realizará la consulta.
  • Consultar los productos pertenecientes a la subcategoría.
  • Determinar el nivel de ventas de cada producto según el criterio definido por el negocio.
  • Ordenar los productos de mayor a menor nivel de ventas.
  • Limitar la cantidad de resultados retornados según el parámetro cantidad.
  • Entregar la información necesaria para representar cada producto.
  • Proporcionar los resultados a las aplicaciones cliente.

Contrato de API

Endpoint asociado:

GET /subcategorias/{subcategoriaId}/productos/populares

Query Parameter asociado:

cantidad: cantidad máxima de productos populares que se desean obtener. Si no se especifica, se utilizará un valor predeterminado de 4. El Backend no retornará más de 4 productos, independientemente del valor solicitado.

DTO de salida:

PopularSubCategoriaDto[]

La definición del parámetro cantidad, método HTTP, ruta y respuesta se encuentra centralizada en Endpoints.

La estructura completa de los datos devueltos se encuentra centralizada en DTOs.


Reglas de Negocio

  • Los productos retornados deben pertenecer a la subcategoría indicada mediante subcategoriaId.
  • Los productos deben ordenarse de acuerdo con el nivel de ventas definido como criterio de popularidad por el negocio.
  • Los productos con mayor cantidad de ventas deberán aparecer primero.
  • La cantidad máxima de productos retornados estará determinada por el parámetro cantidad.
  • Si la subcategoría contiene menos productos disponibles que la cantidad solicitada, se deberán retornar únicamente los productos disponibles.
  • Los productos que no cumplan las condiciones de disponibilidad definidas por el negocio no deberán ser considerados en los resultados.
  • En caso de existir productos con el mismo nivel de ventas, el criterio para resolver el empate deberá estar definido por el negocio.

Relación con la Página de Categorías

flowchart TD
    A["GET /categorias"] --> B["Seleccionar una categoría"]
    B --> C["GET /categorias/{categoriaId}/subcategorias"]
    C --> D["Seleccionar una subcategoría"]
    D --> E["GET /subcategorias/{subcategoriaId}/productos/populares"]
    E --> F["Productos más populares"]