#!/bin/bash # Catch-up QUOTIDIEN legacy → ERPNext : tickets (Issue) + appareils (Service Equipment). # Scripts idempotents (skip par legacy_*_id) : n'importent que les nouveaux. # Séparé de run.sh (horaire) car les scans complets (252k tickets / 11k devices) sont lourds. # (Nom de fichier conservé pour la stabilité du crontab.) # # Déploiement (hôte) : # scp scripts/migration/migrate_tickets.py scripts/migration/import_devices_and_enrich.py root@:/opt/targo-sync/ # scp scripts/targo-sync/tickets-daily.sh root@:/opt/targo-sync/ && chmod +x /opt/targo-sync/tickets-daily.sh # echo 'LEGACY_PW=' > /opt/targo-sync/secrets.env && chmod 600 /opt/targo-sync/secrets.env # secret HORS repo # crontab: 30 4 * * * /opt/targo-sync/tickets-daily.sh set -uo pipefail DIR=/opt/targo-sync LOG="$DIR/tickets-sync.log" [ -f "$LOG" ] && tail -n 3000 "$LOG" > "$LOG.tmp" 2>/dev/null && mv "$LOG.tmp" "$LOG" exec >> "$LOG" 2>&1 echo "===== $(date -Is) daily-catchup (tickets + appareils) =====" exec 9>"$DIR/.tickets.lock" flock -n 9 || { echo "déjà en cours, skip"; exit 0; } # secret (LEGACY_PW) chargé depuis un fichier hôte non versionné [ -f "$DIR/secrets.env" ] && set -a && . "$DIR/secrets.env" && set +a LH="${LEGACY_HOST:-10.100.80.100}" echo "-- tickets → Issue --" docker cp "$DIR/migrate_tickets.py" erpnext-backend-1:/tmp/migrate_tickets.py 2>/dev/null docker exec -e LEGACY_PW="${LEGACY_PW:-}" -e LEGACY_HOST="$LH" -e PG_HOST=db \ erpnext-backend-1 /home/frappe/frappe-bench/env/bin/python /tmp/migrate_tickets.py 2>&1 | tail -6 echo "-- appareils → Service Equipment (device-only) --" docker cp "$DIR/import_devices_and_enrich.py" erpnext-backend-1:/tmp/import_devices.py 2>/dev/null docker exec -e LEGACY_PW="${LEGACY_PW:-}" -e LEGACY_HOST="$LH" -e SKIP_ENRICH=1 \ erpnext-backend-1 /home/frappe/frappe-bench/env/bin/python /tmp/import_devices.py 2>&1 | tail -4 echo "done $(date -Is)"