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.
- Búsqueda de Productos
- Carrusel de Ofertas
- Productos más Populares
- Novedades o Nuevos Productos
- Detalle de Producto
- Huella Verde del Producto
- Valoraciones de Producto
- Productos Relacionados
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.