Files
shopify_run_run/docs/analisis_tiempos.md
T

84 lines
3.2 KiB
Markdown
Raw Normal View History

# Análisis de tiempos del pipeline Shopify → SAP
Fecha de medición: 2026-09-25. Entorno: SAP Service Layer (`SBODemoCL`) en la misma
red/VPN, Shopify Admin API por internet.
## Latencias individuales medidas (llamadas aisladas)
| Llamada | Tiempo promedio |
|---|---|
| SAP GET (misma red/VPN) | ~0.056 s |
| Shopify GET orden completa | ~0.469 s |
## Ciclo real completo (20 órdenes, `snobbycl`, sin RUT)
| Métrica | Valor |
|---|---|
| Duración total | 87 s |
| Promedio por orden | ~4.3 s |
| Intervalo configurado ("rapido") | 600 s |
| Margen usado | ~14% del ciclo |
Esta medición corresponde a órdenes **sin RUT** (ninguna llamó a `BusinessPartners`),
caso "tienda" completo: Invoice → Payment → InventoryTransferRequest → StockTransfer
→ Delivery, con sus referencias cruzadas.
## Ruta más larga: tienda + RUT nuevo (creación de BusinessPartner)
16 llamadas en total:
| # | Servicio | Llamada | Tiempo aprox. |
|---|---|---|---|
| 1 | Shopify | GET `orders/{id}.json` | ~0.47 s |
| 2 | SAP | GET `BusinessPartners` (buscar por RUT) | ~0.06 s |
| 3 | SAP | POST `BusinessPartners` (crear, RUT no existía) | ~0.40 s |
| 4 | SAP | POST `Invoices` | ~0.35 s |
| 5 | SAP | POST `IncomingPayments` | ~0.35 s |
| 6 | SAP | POST `InventoryTransferRequests` | ~0.35 s |
| 7 | SAP | GET `Invoices` (leer referencias) | ~0.06 s |
| 8 | SAP | PATCH `Invoices` (agregar ref. ITR) | ~0.35 s |
| 9 | SAP | GET `InventoryTransferRequests` (traer líneas completas) | ~0.06 s |
| 10 | SAP | POST `StockTransfers` | ~0.35 s |
| 11 | SAP | GET `Invoices` (leer referencias) | ~0.06 s |
| 12 | SAP | PATCH `Invoices` (agregar ref. StockTransfer) | ~0.35 s |
| 13 | SAP | GET `StockTransfers` (traer líneas completas) | ~0.06 s |
| 14 | SAP | POST `DeliveryNotes` | ~0.35 s |
| 15 | SAP | GET `Invoices` (leer referencias) | ~0.06 s |
| 16 | SAP | PATCH `Invoices` (agregar ref. Delivery) | ~0.35 s |
### Subtotales
| Tipo | Cantidad | Tiempo total |
|---|---|---|
| Shopify GET | 1 | ~0.47 s |
| SAP GET | 6 | ~0.36 s |
| SAP POST | 6 | ~2.15 s |
| SAP PATCH | 3 | ~1.05 s |
| **Total** | **16** | **~4.0-4.6 s** |
Coincide con lo medido en vivo (~4.3 s/orden en `snobbycl` sin RUT — a esa ruta le
faltan las llamadas 2 y 3 de la tabla, por eso da un poco menos que esta ruta
completa con creación de BusinessPartner).
Caso CD (solo ITR, sin StockTransfer ni Delivery, sin RUT): ~5 llamadas, bastante
más rápido que el caso tienda completo.
## Capacidad estimada por ciclo
Con ~4.3-4.6 s/orden real, dejando colchón de seguridad (~70-80% del intervalo
usado, el resto para variabilidad de red, reintentos por 401, rate limit de
Shopify):
| Modo | Intervalo | Teórico máx. | Recomendado con margen |
|---|---|---|---|
| rapido | 600 s | ~139 órdenes | ~95-110 |
| full | 1800 s | ~418 órdenes | ~290-330 |
## Configuración aplicada
`max_orders_per_cycle = 50` para ambas tiendas (`snobbycl` y
`on-chile-distributor-prod`), muy por debajo de la capacidad real medida —
deja margen amplio para picos de tráfico o llamadas más lentas de lo normal.
Con 50 órdenes/ciclo y ~4.6 s/orden en el peor caso (todas con RUT nuevo),
un ciclo tardaría ~230 s, menos del 40% del intervalo "rapido" de 600 s.