Servicios de la API - bootcamp-uchile-2026/grupo-2-backend GitHub Wiki

Servicios de la API

Esta página describe las responsabilidades de los servicios de BuenOrigen Backend y su relación con los dominios y controllers. Se basa en la arquitectura y los cambios documentados hasta el 13 de octubre de 2026. Para las firmas exactas de los métodos, consultar el código de develop y Endpoints.


Principio de separación de responsabilidades

Los controllers reciben las solicitudes HTTP y delegan el trabajo en los services. Los DTOs representan los contratos de entrada y salida; los modelos expresan los datos de dominio. Los services realizan consultas, reglas de negocio y composición de información.

flowchart TD
  Client[Frontend / Mobile] --> Controller[Controller]
  Controller --> Service[Service]
  Service --> Models[Modelos y datos]
  Service --> DTO[DTOs de respuesta]
  DTO --> Client

Servicios con implementación documentada

Service Dominio Responsabilidades principales
ProductsService Productos Búsqueda, ofertas, populares, novedades, detalle, huella verde, valoraciones y relacionados
SubcategoriesService Subcategorías Consulta de subcategorías y productos asociados
EntrepreneursService Emprendedores Listado y perfil público; consulta de productos por emprendedor mediante reutilización de la lógica de productos

Los nombres anteriores sustituyen a la nomenclatura en español utilizada en versiones antiguas de la Wiki. Las rutas HTTP existentes permanecen según el contrato real de la API.

Productos

ProductsService administra las consultas al catálogo utilizando modelos y datos en memoria en la implementación documentada. Contempla productos en oferta, búsqueda, ventas recientes, novedades, detalle, información ambiental, valoraciones públicas, relacionados y productos vinculados con emprendedores.

Subcategorías

SubcategoriesService atiende consultas del catálogo por categoría y subcategoría. Cuando corresponde obtener productos, debe mantenerse una única responsabilidad sobre la fuente de datos del catálogo, sin copiar colecciones completas entre servicios.

Emprendedores

EntrepreneursService atiende consultas públicas del listado y los perfiles. Para la consulta de productos asociados a un emprendedor, reutiliza ProductsService mediante la dependencia entre módulos documentada en Módulos y Dominios.

flowchart LR
  EC[EntrepreneursController] --> ES[EntrepreneursService]
  ES --> PS[ProductsService]
  PS --> P[Catálogo de productos]

Servicios previstos por necesidades UX/UI

Las siguientes áreas requieren operaciones de backend según los wireframes y sitemap, sin que eso implique la existencia de services o módulos con esos nombres:

Área Operaciones por definir
Favoritos Consultar, agregar y eliminar productos favoritos
Carrito Consultar, agregar productos, cambiar cantidades y eliminar
Cuentas Registro, autenticación, perfil, direcciones y permisos
Compras, pagos y envíos Historial, checkout, información de pago y entrega
Devoluciones y Puntos Verdes Solicitudes, seguimiento y beneficios
Emprendedor privado Dashboard, perfil, mis productos, mis ventas
Otras funciones del emprendedor Métricas, reseñas, facturación, reembolsos e inbox
Blog Consulta de artículos publicados

La distribución de estas responsabilidades debe acordarse antes de crear nuevos componentes. No es necesario crear un service por pantalla o widget de UX/UI.

Contratos y reglas comunes

  • Las firmas de methods y nombres de clases se mantienen en inglés, según el código existente.
  • Los DTOs y modelos vigentes se describen en DTOs y Módulos y Dominios.
  • Las rutas HTTP no se traducen al inglés por el cambio de nombres internos.
  • Las validaciones y el tratamiento de errores se centralizan en los componentes correspondientes; consultar Componentes Transversales.
  • Los services no deben exponer datos privados en respuestas públicas de emprendedores.

Referencias