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
- Autenticación
- Registro de Usuario
- Perfil de Usuario
- Direcciones
- Mis Compras
- Devoluciones
- Puntos Verdes
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
- Home
- Módulos y Dominios
- Servicios de la API
- Endpoints
- DTOs
- OpenAPI y Swagger
- Componentes Transversales
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.