Flujos críticos
Recorridos de negocio que validan el sistema
El backend se considera correcto cuando estos flujos se pueden ejecutar por API con integridad, trazabilidad y comportamiento idempotente.
Flujo 1: venta completa
- Autenticación y selección de contexto.
- Apertura de sesión POS.
- Creación de orden.
- Alta de ítems, modifiers y descuentos.
- Envío a producción.
- Cobro mediante
payment_transactions. - Cierre de ticket.
El ciclo de órdenes también contempla eliminación de renglones, bloqueo, reapertura y cancelación como comandos explícitos del dominio.
Flujo 2: venta con impacto real en inventario
- La orden se cobra con éxito.
- Se registra el movimiento de pago.
- Se generan
inventory_movements. - Se generan
inventory_consumptionsligados a cada renglón. - Se actualizan snapshots de stock y costo promedio.
Flujo 3: compra completa
- Alta de proveedor.
- Creación de purchase order.
- Creación de receipt.
- Posteo de receipt con
POST /purchase-receipts/{id}/post. - Entrada a inventario y actualización de costos.
- Generación o relación con documento AP.
Flujo 4: cuentas por pagar
- Creación de documento AP.
- Registro de pago AP.
- Aplicación contra documento.
- Recalculo de
open_amount.
Flujo 5: sincronización operativa
- La terminal envía comando con
source_device_id,command_typeeidempotency_key. - El backend deduplica en
processed_commands. - La operación exitosa escribe
outbox_events. - La terminal consulta cambios por cursor.
Alcance offline inicial
- Sync operativo habilitado para POS.
- Cash dentro del alcance offline inicial.
- Tarjeta solo online.
Endpoints base del núcleo
POST /auth/login
POST /auth/refresh
GET /me
POST /me/context
POST /pos/sessions/open
POST /pos/sessions/{id}/close
POST /pos/sessions/{id}/reconcile
POST /orders
POST /orders/{id}/items
DELETE /orders/{id}/items/{itemId}
POST /orders/{id}/discounts
POST /orders/{id}/send-to-production
POST /orders/{id}/lock
POST /orders/{id}/reopen
POST /orders/{id}/cancel
POST /orders/{id}/payments
POST /payments/{id}/refund
POST /payments/{id}/void
POST /purchase-receipts/{id}/post
POST /ap/payments/{id}/apply
POST /sync/commands