Saltar a contenido

RF-000 — Plataforma base de comercio (Medusa v2 stock)

Alcance. Documentar únicamente las capacidades provistas por Medusa v2.15.5 sin desarrollo propio. Las extensiones construidas sobre esta base se documentan en Inventario del desarrollo custom y en los requisitos siguientes de esta serie.

Requisito

Disponer de una plataforma de comercio headless que resuelva sin desarrollo propio la gestión de catálogo, precios, inventario, carrito, pedido, pago, envío, promociones, impuestos y clientes; exponer dichas capacidades como API HTTP versionada para el storefront y para integradores; y proveer una interfaz de administración para la operación comercial.

Solución adoptada: adoptar Medusa v2.15.5 sobre Node 20, PostgreSQL 15 y Redis 7, desplegado como proceso único (workerMode: shared) que sirve API de tienda, API de administración, dashboard de admin y procesamiento asíncrono.

Dominios cubiertos

flowchart LR
    subgraph CAT[Catálogo]
        P[Product]
        PR[Pricing]
        INV[Inventory]
        SL[Stock Location]
        SC[Sales Channel]
    end
    subgraph VEN[Venta]
        C[Cart]
        O[Order]
        PROM[Promotion]
        TAX[Tax]
    end
    subgraph OPS[Operación]
        PAY[Payment]
        FUL[Fulfillment]
    end
    subgraph IDE[Identidad]
        CUS[Customer]
        AUTH[Auth]
        USR[User]
        AK[API Key]
    end
    subgraph CFG[Configuración]
        REG[Region]
        ST[Store]
        CUR[Currency]
    end

    C --> O --> PAY
    O --> FUL
    P --> C
    PR --> C
    INV --> FUL
    PROM --> C
    TAX --> C
    CUS --> C
    REG --> C

Módulos de comercio

Módulo Capacidad cubierta de fábrica
Product Productos, variantes, opciones, colecciones, categorías, tipos, tags e imágenes
Pricing Precios por moneda y región, reglas de precio, listas de precios y precios por cantidad
Inventory Ítems de inventario, niveles por ubicación, reservas y control de stock
Stock Location Ubicaciones físicas y su asociación a canales de venta y perfiles de envío
Sales Channel Segmentación de catálogo y stock por canal
Cart Carrito, líneas, cálculo de totales, direcciones, envío y promociones aplicadas
Order Pedido, edición de pedido, devoluciones, cambios, reclamos y borradores
Payment Sesiones y colecciones de pago, autorización, captura y reembolso vía providers
Fulfillment Perfiles de envío, zonas de servicio, opciones de envío, cálculo de tarifa y preparación
Promotion Promociones y campañas por reglas, con descuentos de importe fijo o porcentual
Tax Regiones fiscales, tasas y cálculo de impuesto sobre el carrito y el pedido
Customer Clientes, grupos de clientes y libreta de direcciones
Auth Registro, autenticación y emisión de tokens para clientes y usuarios de admin
User Usuarios de administración e invitaciones
API Key Claves publicables para el storefront y claves secretas para integradores
Region / Store / Currency Regiones, países, monedas y configuración de la tienda
Notification Despacho de notificaciones por canal vía providers
File Carga y resolución de archivos vía providers

Módulos de infraestructura

Módulo Implementación configurada
Cache cache-redis
Event Bus event-bus-redis
Workflow Engine workflow-engine-redis
Locking locking-redis (default)

Providers stock habilitados

Tipo Provider Origen
Auth auth-emailpass Stock
Auth auth-google Stock, configurado con credenciales propias
Fulfillment fulfillment-manual Stock

Los providers de pago, el provider de fulfillment calculado y el provider de notificación en uso son desarrollo propio y quedan fuera de este requisito.

Superficies expuestas

Superficie Prefijo Autenticación Consumidor
API de tienda /store/* Clave publicable + sesión o JWT de cliente Storefront, navegador
API de administración /admin/* Sesión o JWT de usuario, o clave secreta Dashboard, integradores
Autenticación /auth/* Credenciales o proveedor federado Storefront, dashboard
Dashboard de admin /app Sesión de usuario Equipo comercial

Flujo base de compra

sequenceDiagram
    participant SF as Storefront
    participant API as API de tienda
    participant WF as Motor de workflows
    participant PP as Payment provider
    SF->>API: Crear carrito en región y canal
    API-->>SF: Carrito con precios y stock resueltos
    SF->>API: Agregar líneas, dirección y opción de envío
    API-->>SF: Totales con impuesto y promociones
    SF->>API: Iniciar sesión de pago
    API->>PP: Autorizar
    PP-->>API: Estado de autorización
    SF->>API: Completar carrito
    API->>WF: Ejecutar workflow de creación de pedido
    WF-->>API: Pedido creado y reserva de inventario
    API-->>SF: Pedido

Puntos de extensión provistos

Punto Uso previsto
Módulos propios Encapsular dominio nuevo o implementar providers de pago, envío, notificación y archivo
Rutas API Endpoints propios bajo /store, /admin o rutas libres, con ruteo por archivos
Workflows y hooks Orquestación transaccional con compensación e injerto sobre workflows nativos
Suscriptores Reacción asíncrona a eventos de dominio publicados en el event bus
Jobs programados Tareas recurrentes ejecutadas por el worker
Widgets y páginas de admin Extensión del dashboard con React y el Admin SDK
Module links Asociación entre módulos sin acoplar sus esquemas

Fuera del alcance stock

Capacidades requeridas por el negocio que Medusa no cubre de fábrica y que motivan el desarrollo propio documentado en los requisitos siguientes:

  • Medios de pago locales y su confirmación asincrónica — RF-001, RF-003, RF-004.
  • Descuento condicionado al medio de pago — RF-002.
  • Cálculo de flete por tipo de bulto, geozona y categoría de producto — RF-005, RF-006.
  • Notificación transaccional por correo con plantillas propias en castellano — RF-007.
  • Pantallas de administración de listas de precios, geozonas y configuración de envíos — RF-006, RF-008.
  • Búsqueda y facetas de catálogo (resueltas fuera del backend, contra Algolia).
  • Gestión de contenido editorial (resuelta en el CMS).

Criterios de aceptación

# Criterio
1 Publicar y consultar catálogo segmentado por canal de venta y región desde /store/*
2 Resolver precio e impuesto de una variante según región y lista de precios vigente
3 Completar un carrito hasta pedido con reserva de inventario, sin código propio de orquestación
4 Autenticar clientes por email y contraseña y por proveedor federado
5 Operar catálogo, pedidos, clientes y promociones desde el dashboard sin acceso a base de datos
6 Registrar providers propios de pago, envío y notificación sin modificar el núcleo