services: production-orders-sync: image: ${PRODUCTION_ORDERS_SYNC_IMAGE:-gitea.blyzer.com.br/blyzer/production-order-tiny:latest} environment: NODE_ENV: production TINY_API_TOKEN: ${TINY_API_TOKEN:?TINY_API_TOKEN is required} DATABASE_URL: ${DATABASE_URL:?DATABASE_URL is required} TINY_API_BASE_URL: ${TINY_API_BASE_URL:-https://api.tiny.com.br/api2} TINY_LIST_ENDPOINT: ${TINY_LIST_ENDPOINT:-ordens.producao.pesquisa.php} TINY_DETAIL_ENDPOINT: ${TINY_DETAIL_ENDPOINT:-ordem.producao.obter.php} TINY_HTTP_METHOD: ${TINY_HTTP_METHOD:-POST} TINY_START_DATE_PARAM: ${TINY_START_DATE_PARAM:-dataInicial} TINY_END_DATE_PARAM: ${TINY_END_DATE_PARAM:-dataFinal} TINY_DATE_FORMAT: ${TINY_DATE_FORMAT:-DD/MM/YYYY} TINY_FETCH_DETAILS: ${TINY_FETCH_DETAILS:-false} TINY_REQUEST_DELAY_MS: ${TINY_REQUEST_DELAY_MS:-5000} TINY_BLOCK_RETRY_MS: ${TINY_BLOCK_RETRY_MS:-60000} TINY_MAX_RETRIES: ${TINY_MAX_RETRIES:-3} SYNC_MODE: ${SYNC_MODE:-recent} SYNC_TIME_ZONE: ${SYNC_TIME_ZONE:-America/Sao_Paulo} RECENT_SYNC_DAYS: ${RECENT_SYNC_DAYS:-2} SYNC_START_DATE: ${SYNC_START_DATE:-} SYNC_END_DATE: ${SYNC_END_DATE:-} DRY_RUN: ${DRY_RUN:-true} POLL_INTERVAL_SECONDS: ${POLL_INTERVAL_SECONDS:-1800} command: - sh - -c - | while true; do npm run sync exit_code=$$? if [ "$$exit_code" -ne 0 ]; then echo "[Production Orders Sync] run failed with exit code $$exit_code; sleeping before retry" fi sleep "$${POLL_INTERVAL_SECONDS:-1800}" done restart: unless-stopped