← Volver al catálogo

🛒 Shopify Pedidos Watch (Secretario)

Archivo: /Users/user/rifai-agents/agentes/migrated/shopify-pedidos-watch.ts · Plist: com.rifai.shopify-pedidos · Horario: 9:05 y 14:05 cada día (StartCalendarInterval); el script salta los domingos y exige ventana 9:00–9:30 / 14:00–14:30.

Qué hace

Briefing operativo de pedidos pendientes de la tienda Shopify, dos veces al día (mañana y mediodía), de lunes a sábado. Consulta los pedidos abiertos sin enviar y los borradores (drafts) creados a partir de una fecha de arranque ("pizarra limpia": 2026-06-04 en adelante). Cuenta los pedidos pending, cuántos están marcados como "Confirmado" (listos para registrar en GLS) y los drafts abiertos. Si hay algo pendiente, manda un resumen con importe total y enlace al admin de Shopify. Aunque nació en la carpeta "Secretario" de n8n, es ops: la alerta va a Oscar (ops) con copia a Fernando (finanzas) por impacto en cash flow.

Cómo funciona

1. Parsea .env y construye la URL base de la Admin API (2024-10) y la cabecera con X-Shopify-Access-Token.

2. Calcula hora Madrid; sale si es domingo o si la hora no cae en las ventanas de 9 o 14 (min < 30). El flag FORCE=1 salta ambas guardas.

3. Fija CONTAR_DESDE = '2026-06-04' y deriva el ISO de arranque.

4. GET orders.json con status=open&fulfillment_status=unshipped&created_at_min=<desde> pidiendo campos mínimos.

5. GET draft_orders.json (la API no admite created_at_min para drafts → filtra en cliente por created_at >= desde).

6. Filtra pending (financial_status pending y sin tag auto-cod-shipped); de esos, los que tienen "confirmad" en la nota. Filtra drafts por fecha.

7. Si no hay pending ni drafts, sale ("todo al día"). Si hay, suma el importe total y compone un mensaje HTML con desglose y enlace.

8. Envía vía notify({ event: 'ops_pedido_pending', level: 'info', ... }).

Datos/APIs

  • Shopify Admin API (https://<SHOPIFY_STORE>/admin/api/2024-10) — endpoints orders.json y draft_orders.json.
  • Router de notificaciones (tools/notify-router.ts) → Telegram Oscar (ops) + Fernando (finanzas) vía evento ops_pedido_pending.
  • Variables .env: SHOPIFY_STORE, SHOPIFY_ACCESS_TOKEN, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID (el router usa los tokens de Oscar y Fernando).

Cómo probarlo

cd /Users/user/rifai-agents && FORCE=1 npx tsx agentes/migrated/shopify-pedidos-watch.ts

Sin FORCE=1 solo corre dentro de las ventanas de 9 ó 14 (Madrid) y no en domingo. Con FORCE=1 ignora día y hora y consulta/avisa con datos reales.

Si se rompe / recuperar

launchctl unload ~/Library/LaunchAgents/com.rifai.shopify-pedidos.plist
launchctl load   ~/Library/LaunchAgents/com.rifai.shopify-pedidos.plist

Logs en /Users/user/rifai-agents/logs/shopify-pedidos.log. Si no avisa, comprueba el token Shopify, que CONTAR_DESDE no esté en el futuro y que haya pedidos pending sin el tag auto-cod-shipped.

Cómo replicarlo

Origen n8n: workflow Q6lFq5HEzOcb7baL "Secretario - Shopify Pedidos v4". Backup en /Users/user/rifai-agents/backups/n8n-export/03_shopify-pedidos-v4.json. Piezas para rehacerlo:

1. Trigger cron a las 9:05 y 14:05 (StartCalendarInterval) + guarda domingo/ventana en código.

2. Llamadas Admin API: orders (open + unshipped + created_at_min) y draft_orders (filtro de fecha en cliente).

3. Filtros: pending sin tag auto-cod-shipped; subconjunto con nota "Confirmado"; drafts desde fecha de arranque.

4. Resumen con importe total y enlace al admin; envío vía router (ops_pedido_pending) a Oscar + Fernando.