- import_devices_and_enrich.py : creds via env (secret hors repo) + SKIP_ENRICH (devices seuls).
Rattrapage : 1160 devices importés (tous les devices F courants sont maintenant en Service Equipment).
- FIX bug d'import : rename_all_doctypes.py avait renommé Service Equipment (EQ-{md5}→EQP-{seq})
sans cascader vers Service Subscription.device → 6980 liens orphelins ("Could not find Device: EQ-…",
bloquait les saves pleine-doc). 5241 remappés via legacy_device_id+md5 (UPDATE PG direct).
Résiduel 1739 = device supprimé côté F (1584 Actif / 155 Annulé) → décision NULL vs relink en attente.
- Récurrence : tickets-daily.sh importe désormais AUSSI les devices (SKIP_ENRICH=1), quotidien 04:30.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
35 lines
1.9 KiB
Bash
35 lines
1.9 KiB
Bash
#!/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@<prod>:/opt/targo-sync/
|
|
# scp scripts/targo-sync/tickets-daily.sh root@<prod>:/opt/targo-sync/ && chmod +x /opt/targo-sync/tickets-daily.sh
|
|
# echo 'LEGACY_PW=<mdp F>' > /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)"
|