Funcionalidades Backend - bootcamp-uchile-2026/grupo-2-backend GitHub Wiki

Funcionalidades Backend

Esta página describe las funcionalidades de BuenOrigen que requieren soporte de la API REST, tomando como referencia los flujos, wireframes y sitemap de UX/UI y las implementaciones documentadas en el backend.

El backend no implementa las pantallas: proporciona datos, aplica reglas de negocio y expone contratos HTTP para que las aplicaciones Frontend y Mobile puedan construirlas.

Alcance de esta documentación: las operaciones de catálogo, subcategorías y emprendedores están respaldadas por los antecedentes del proyecto. Los nombres técnicos corresponden a las convenciones en inglés adoptadas en el código durante la normalización del 13 de octubre de 2026. Para verificar detalles de parámetros, DTOs y códigos de respuesta específicos, la referencia es Endpoints, DTOs y OpenAPI y Swagger. Las funcionalidades adicionales de UX/UI no deben interpretarse automáticamente como endpoints implementados.


Criterios de documentación

  • Implementada: existe un endpoint o servicio de soporte documentado para esa funcionalidad.
  • Definida en UX/UI: la funcionalidad forma parte del diseño, sin que esta página acredite una implementación completa en backend.
  • Parcial o por precisar: existe soporte relacionado, pero no está confirmado el alcance completo del flujo de usuario.

Esta clasificación describe la cobertura funcional, no constituye un seguimiento de entregas o hitos.


Página de Inicio

Carrusel de Ofertas

  • Página: Carrusel de Ofertas
  • Dominio: Productos.
  • Operación documentada: GET /productos/ofertas.
  • Soporte: consulta de productos que tienen un precio de oferta y entrega información para representar la oferta.
  • Cobertura: implementada.

La eventual vigencia temporal de ofertas depende de que existan reglas y datos específicos para ello; no se debe presumir esa funcionalidad.

Productos más Populares

  • Página: Productos más Populares
  • Dominio: Productos.
  • Operación documentada: GET /productos/mas-vendidos.
  • Soporte: consulta de productos ordenados mediante una métrica de ventas, con límite de resultados cuando corresponde.
  • Cobertura: implementada.

En el modelo normalizado se utiliza la propiedad salesLastMonth para representar las ventas del último mes. La popularidad documentada responde a este criterio, no a un algoritmo de recomendaciones.

Novedades o Nuevos Productos

  • Página: Novedades o Nuevos Productos
  • Dominio: Productos.
  • Operación documentada: GET /productos/nuevos.
  • Soporte: consulta de productos ordenados por su fecha de creación, utilizando la propiedad createdAt.
  • Cobertura: implementada.

Nuestros Emprendedores

  • Página: Nuestros Emprendedores
  • Dominio: Emprendedores.
  • Operación documentada: GET /emprendedores.
  • Soporte: consulta pública del directorio y uso de los datos en una sección destacada de la página de inicio.
  • Cobertura: implementada.

Artículos de nuestro Blog

  • Página: Artículos de nuestro Blog
  • Dominio funcional identificado: Artículos.
  • Operación propuesta en la documentación funcional: GET /articulos.
  • Cobertura: definida en UX/UI; no se acredita como implementada.

Catálogo y Detalle de Producto

Funcionalidad Página de la Wiki Operación documentada Cobertura
Búsqueda de productos Búsqueda de Productos GET /productos Implementada
Detalle de producto Detalle de Producto GET /productos/:productoId Implementada
Huella Verde Huella Verde del Producto GET /productos/:productoId/huella-verde Implementada
Valoraciones públicas Valoraciones de Producto GET /productos/:productoId/valoraciones Implementada
Productos relacionados Productos Relacionados GET /productos/:productoId/relacionados Implementada

Búsqueda de Productos

El backend recibe los criterios de consulta documentados y devuelve los productos coincidentes. La ausencia de coincidencias se representa mediante una colección vacía, cuando corresponde al contrato de búsqueda. Los parámetros admitidos deben consultarse en Endpoints para evitar mantener ejemplos desactualizados.

Detalle de Producto

La consulta utiliza el identificador del producto y devuelve la información de detalle. Si el producto solicitado no existe, debe responder mediante el tratamiento HTTP de recurso no encontrado definido por la API.

Huella Verde del Producto

Expone información ambiental asociada al producto cuando se encuentra disponible en sus datos, según el contrato documentado. No debe confundirse con una certificación externa independiente.

Valoraciones de Producto

Permite consultar las valoraciones públicas de un producto. El servicio contempla verificar la existencia del producto y devolver la colección correspondiente.

Productos Relacionados

Obtiene productos de la misma subcategoría, excluye el producto consultado y utiliza los criterios de ordenamiento y límite definidos en el servicio.


Subcategorías

Funcionalidad Página de la Wiki Operación documentada Cobertura
Subcategorías de una categoría Subcategorías Existentes GET /categorias/:categoriaId/subcategorias Implementada
Productos por subcategoría Productos por Subcategoría GET /subcategorias/:subcategoriaId/productos Implementada
Productos populares por subcategoría Productos más Populares por Subcategoría GET /subcategorias/:subcategoriaId/productos/populares Implementada

Estas operaciones permiten navegar por la clasificación del catálogo, obtener los productos vinculados a una subcategoría y consultar su selección popular. La definición del comportamiento ante identificadores inexistentes y parámetros inválidos corresponde a los contratos REST documentados.


Emprendedores: consultas públicas

Funcionalidad Página de la Wiki Operación documentada Cobertura
Directorio de emprendedores Nuestros Emprendedores GET /emprendedores Implementada
Perfil público Perfil de Emprendedor GET /emprendedores/:emprendedorId Implementada
Productos del emprendedor Productos del Emprendedor GET /emprendedores/:emprendedorId/productos Implementada

La consulta del perfil público debe limitarse a información destinada a exposición pública. La consulta de productos se relaciona con el identificador del emprendedor, representado como entrepreneurId en el modelo normalizado de productos.

El acceso a productos asociados debe reutilizar la fuente y las operaciones del catálogo, evitando presentar una colección duplicada e independiente como si fuera la fuente principal.


Funcionalidades identificadas en UX/UI

Las siguientes funcionalidades forman parte de la estructura funcional de BuenOrigen. Su inclusión en esta Wiki no equivale a declarar implementadas todas las operaciones necesarias.

Header

  • Favoritos: listado y administración de productos guardados.
  • Carrito de Compras: consulta, incorporación, actualización y eliminación de artículos del carrito.
  • Perfil de Usuario: acceso a datos vinculados a la cuenta.

Cuenta de Usuario

La disponibilidad de rutas individuales para usuarios no debe inferirse a partir de la existencia de un modelo o módulo. En particular, los endpoints customers/me fueron retirados mientras no existiera un mecanismo adecuado de identificación individual.

Cuenta de Emprendedor

Estas pantallas privadas son conceptualmente distintas de Perfil de Emprendedor, que describe la vista pública. Las reglas de autorización y la totalidad de las operaciones administrativas deben documentarse solo cuando estén implementadas.

Blog y otras operaciones comerciales

  • Artículos de nuestro Blog
  • Compras, devoluciones y operaciones vinculadas al pago o envío, según el alcance funcional acordado.

Matriz complementaria de requerimientos pendientes de UX/UI

Estas necesidades corresponden al sitemap y a los antecedentes funcionales compartidos; no son endpoints ni métodos confirmados. Antes de incorporarlas al código deberán acordarse reglas, contratos y el issue correspondiente.

Área Funcionalidad Necesidad backend prevista Situación
Cuenta de comprador Registro de Usuario y Autenticación Registro, identificación y control de acceso Alcance vigente por comprobar
Cuenta de comprador Perfil de Usuario Consulta y mantenimiento de datos de cuenta Comprobar soporte de clientes vigente
Cuenta de comprador Direcciones Guardar y administrar direcciones Pendiente
Cuenta de comprador Mis Compras Consultar historial y detalle de compras Pendiente
Cuenta de comprador Devoluciones Solicitar y consultar devoluciones Pendiente
Cuenta de comprador Puntos Verdes Consultar beneficios, saldos o movimientos según reglas pendientes Pendiente
Compra Carrito de Compras Productos, cantidades y totales Pendiente
Compra Métodos de pago y pagos Operaciones de pago según flujo a definir Pendiente
Compra Envíos Información de entrega y seguimiento Pendiente
Cuenta de emprendedor Dashboard del Emprendedor Indicadores y resumen de actividad Pendiente
Cuenta de emprendedor Perfil del Emprendedor Administración del perfil privado Pendiente
Cuenta de emprendedor Mis Productos Administración de productos propios Pendiente
Cuenta de emprendedor Mis Ventas Consulta y gestión de ventas Pendiente
Cuenta de emprendedor Métricas, reseñas, facturación, reembolsos e inbox Funciones complementarias según definición posterior Por definir
Contenidos Artículos de nuestro Blog Consulta de artículos Pendiente

La organización concreta de los módulos para estos requerimientos se encuentra en Módulos y Dominios.

Correspondencia entre interfaz y arquitectura

Una pantalla o sección visual puede consumir varios endpoints; a su vez, un mismo servicio puede respaldar más de una sección de UX/UI.

flowchart TD
    A["Página de Inicio - UX/UI"] --> B["Carrusel de Ofertas"]
    A --> C["Productos más Populares"]
    A --> D["Novedades"]
    A --> E["Nuestros Emprendedores"]
    B --> F["Dominio Productos"]
    C --> F
    D --> F
    E --> G["Dominio Emprendedores"]
    F --> H["API REST"]
    G --> H

Esta correspondencia funcional no obliga a crear un módulo por componente visual. La organización real de clases, módulos y dependencias se documenta en Módulos y Dominios y Servicios de la API.


Componentes transversales que apoyan las funcionalidades

Las funcionalidades expuestas por la API utilizan, según su configuración y contrato, elementos comunes de NestJS:

  • DTOs y validaciones: control de tipos, campos y parámetros recibidos.
  • Manejo de excepciones: respuestas de error consistentes.
  • Trazabilidad HTTP: registro de solicitudes y tratamiento seguro de la estructura del cuerpo recibido.
  • Swagger/OpenAPI: descripción de rutas y contratos para los equipos consumidores.

Estos mecanismos no constituyen por sí mismos funcionalidades visuales de UX/UI. Su documentación se centraliza en Componentes Transversales, DTOs y OpenAPI y Swagger.


Referencias de la Wiki

Para rutas, tipos de parámetros y respuestas, consultar siempre los contratos vigentes. Esta página documenta qué necesidad funcional atiende el backend, mientras que Endpoints y DTOs documentan cómo se consume.