Carrito de Compras - bootcamp-uchile-2026/grupo-2-backend GitHub Wiki
Carrito de Compras
La funcionalidad Carrito de Compras permite que un comprador mantenga una selección temporal de productos que desea adquirir.
Esta funcionalidad podrá ser utilizada desde distintas secciones de EcoTienda y tendrá acceso directo desde el Header.
Desde la perspectiva Backend, consiste en mantener el estado del carrito asociado al comprador o a su sesión y administrar los productos y cantidades incorporadas.
Objetivo
Permitir que Frontend y Mobile consulten y administren los productos incorporados al carrito de compras.
Responsabilidad Backend
El Backend deberá:
- Consultar el carrito asociado al comprador o a su sesión.
- Permitir agregar productos al carrito.
- Permitir modificar la cantidad de un producto.
- Permitir eliminar productos del carrito.
- Verificar que el producto exista antes de incorporarlo.
- Validar las cantidades solicitadas.
- Calcular los subtotales correspondientes.
- Calcular el total del carrito.
- Mantener el estado del carrito durante el proceso de compra.
- Entregar la información necesaria para representar los productos incorporados.
Contratos de API
Consultar Carrito
Endpoint asociado:
DTO de salida:
Agregar Producto al Carrito
Endpoint asociado:
DTO de entrada:
Actualizar Cantidad
Endpoint asociado:
PATCH /carrito/items/:productoId
DTO de entrada:
Eliminar Producto del Carrito
Endpoint asociado:
DELETE /carrito/items/:productoId
La definición completa de métodos HTTP, parámetros y respuestas se encuentra centralizada en Endpoints.
La estructura de los datos de entrada y salida se encuentra centralizada en DTOs.
Reglas de Negocio
La administración del carrito deberá considerar inicialmente las siguientes reglas:
- El producto deberá existir antes de ser agregado.
- La cantidad solicitada deberá ser mayor que cero.
- Un mismo producto no deberá generar elementos duplicados dentro del carrito.
- Si un producto ya existe en el carrito, deberá definirse si la nueva cantidad reemplaza o incrementa la cantidad anterior.
- El subtotal de cada elemento deberá calcularse a partir del precio unitario y la cantidad.
- El total del carrito deberá calcularse a partir de los elementos incorporados.
- Eliminar un elemento del carrito no deberá eliminar el producto del catálogo.
- El carrito deberá mantenerse separado de los carritos de otros compradores o sesiones.
Pendiente de definición: establecer cómo se manejará la disponibilidad de stock cuando la cantidad solicitada sea superior al inventario disponible.
Pendiente de definición: establecer cómo se identificará y persistirá el carrito tanto para usuarios autenticados como para compradores invitados.
Relación con el Header
Header
|
v
Carrito de Compras
|
+---- GET /carrito
|
+---- POST /carrito/items
|
+---- PATCH /carrito/items/:productoId
|
+---- DELETE /carrito/items/:productoId
|
v
Backend