#!/usr/bin/env python3 """ Script de migration automatique pour fusionner gitlab_reports.json dans gitlab_issues.json. Ce script est conçu pour être appelé AUTOMATIQUEMENT lors du déploiement. Il garantit que toutes les issues sont suivies dans un seul fichier. Usage: python scripts/migrate_gitlab_tracking.py """ import os import json import sys # Chemins des fichiers BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TRACKING_FILE = os.path.join(BASE_DIR, "commandes", "gitlab_issues.json") LEGACY_REPORTS_FILE = os.path.join(BASE_DIR, "data", "gitlab_reports.json") def migrate_tracking(): """Fusionne gitlab_reports.json dans gitlab_issues.json""" print("🔄 Début de la migration GitLab tracking...") # Charge le fichier principal tracking = {} if os.path.exists(TRACKING_FILE): try: with open(TRACKING_FILE, "r", encoding="utf-8") as f: tracking = json.load(f) print(f"✅ Chargé {len(tracking)} issues depuis gitlab_issues.json") except Exception as e: print(f"⚠️ Erreur chargement gitlab_issues.json: {e}") # Fusionne avec l'ancien fichier migrated_count = 0 if os.path.exists(LEGACY_REPORTS_FILE): try: with open(LEGACY_REPORTS_FILE, "r", encoding="utf-8") as f: legacy_data = json.load(f) for issue_iid, user_id in legacy_data.items(): if issue_iid not in tracking: tracking[issue_iid] = { "requester_id": user_id, "last_note_id": 0, "type": "legacy_report" } migrated_count += 1 print(f"✅ Migration: {migrated_count} issues fusionnées depuis gitlab_reports.json") except Exception as e: print(f"⚠️ Erreur migration gitlab_reports.json: {e}") # Sauvegarde le résultat if tracking: os.makedirs(os.path.dirname(TRACKING_FILE), exist_ok=True) temp_file = f"{TRACKING_FILE}.tmp" with open(temp_file, "w", encoding="utf-8") as f: json.dump(tracking, f, ensure_ascii=False, indent=2) os.replace(temp_file, TRACKING_FILE) print(f"✅ Sauvegardé {len(tracking)} issues dans gitlab_issues.json") print("✅ Migration terminée avec succès !") return migrated_count if __name__ == "__main__": migrated = migrate_tracking() # Si des données ont été migrées, on peut optionnellement nettoyer l'ancien fichier if migrated > 0: print(f"\n💡 {migrated} issues ont été migrées depuis gitlab_reports.json") print("💡 Tu peux maintenant supprimer data/gitlab_reports.json si tu veux.") sys.exit(0)