Files
rpa_vision_v3/fix_screenshot_upload_v2.py
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:23:51 +01:00

112 lines
3.6 KiB
Python

#!/usr/bin/env python3
"""
Script de correction pour l'upload des screenshots manquants - Version 2.
Correction du problème de structure ZIP.
"""
import os
import json
import zipfile
from pathlib import Path
import sys
# Ajouter le répertoire agent_v0 au path
sys.path.insert(0, 'agent_v0')
from uploader import upload_session_zip
def inspect_zip_structure(zip_path: Path):
"""Inspecte la structure d'un ZIP pour debug."""
print(f"🔍 Structure de {zip_path.name}:")
try:
with zipfile.ZipFile(zip_path, 'r') as zf:
for name in zf.namelist():
print(f" 📄 {name}")
except Exception as e:
print(f" ❌ Erreur lecture ZIP: {e}")
def fix_session_upload(session_dir: Path) -> bool:
"""
Corrige l'upload d'une session en incluant les screenshots.
Args:
session_dir: Répertoire de la session
Returns:
True si correction réussie
"""
session_id = session_dir.name
json_file = session_dir / f"{session_id}.json"
shots_dir = session_dir / "shots"
if not json_file.exists():
print(f"❌ JSON manquant pour {session_id}")
return False
if not shots_dir.exists() or not list(shots_dir.glob("*.png")):
print(f"⚠️ Pas de screenshots pour {session_id}")
return False
# Créer un nouveau ZIP avec screenshots
zip_path = session_dir.parent / f"{session_id}_fixed.zip"
try:
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zf:
# Ajouter le JSON à la racine du ZIP (pas dans un sous-dossier)
zf.write(json_file, json_file.name)
# Ajouter tous les screenshots dans le dossier shots/
for screenshot in shots_dir.glob("*.png"):
zf.write(screenshot, f"shots/{screenshot.name}")
print(f"📦 Archive créée : {zip_path}")
# Debug : inspecter la structure
inspect_zip_structure(zip_path)
# Uploader la nouvelle archive
if upload_session_zip(str(zip_path), session_id):
print(f"✅ Upload réussi pour {session_id}")
# Nettoyer l'archive temporaire
zip_path.unlink()
return True
else:
print(f"❌ Upload échoué pour {session_id}")
return False
except Exception as e:
print(f"❌ Erreur création ZIP pour {session_id}: {e}")
return False
def test_single_session():
"""Test avec une seule session pour debug."""
print("🧪 Test avec une session unique...")
agent_sessions = Path("agent_v0/sessions")
if not agent_sessions.exists():
print("❌ Répertoire agent_v0/sessions non trouvé")
return
# Prendre la première session avec screenshots
for session_dir in agent_sessions.iterdir():
if session_dir.is_dir() and session_dir.name.startswith('sess_'):
shots_dir = session_dir / "shots"
if shots_dir.exists() and list(shots_dir.glob("*.png")):
print(f"🎯 Test avec {session_dir.name}")
success = fix_session_upload(session_dir)
print(f"📊 Résultat test : {'✅ Réussi' if success else '❌ Échoué'}")
return
print("❌ Aucune session avec screenshots trouvée")
def main():
"""Point d'entrée principal."""
print("🚀 Correction des uploads de screenshots - Version 2")
print("=" * 60)
# Test avec une session d'abord
test_single_session()
if __name__ == "__main__":
main()