#!/usr/bin/env python3
"""
Test complet du pipeline de traitement
"""

import asyncio
import logging
from modules.scraper import VideoScraper
from modules.llm_processor import LLMProcessor
from modules.database import Database

# Configuration du logging
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)

async def test_complete_pipeline():
    """Test complet du pipeline"""
    
    # URL de test
    test_url = "https://www.instagram.com/p/DLZcth3N5WD/"
    
    print(f"🔍 Test pipeline complet pour: {test_url}")
    print("=" * 60)
    
    # 1. Scraper
    print("\n1️⃣ Test du scraper...")
    scraper = VideoScraper()
    video_data = scraper.scrape_video(test_url)
    
    print(f"✅ Données scrapées:")
    for key, value in video_data.items():
        print(f"   {key}: {value}")
    
    # 2. LLM Processor
    print("\n2️⃣ Test du processeur LLM...")
    llm = LLMProcessor()
    
    # Test juste du prompt (sans appeler l'API)
    prompt = llm.generate_scam_prompt(video_data)
    print(f"✅ Prompt généré (extrait):")
    print(prompt[:500] + "...")
    
    # Vérifier si la date est dans le prompt
    if video_data.get('published_date', 'Non trouvée') in prompt:
        print(f"✅ Date présente dans le prompt: {video_data.get('published_date')}")
    else:
        print(f"❌ Date absente du prompt!")
    
    # 3. Base de données
    print("\n3️⃣ Test de la base de données...")
    db = Database()
    
    # Test d'ajout
    success = db.add_processed_video(
        creator_id=999,  # ID test
        video_url=test_url,
        video_title="Test Video",
        video_duration=video_data.get('duration', ''),
        video_published_date=video_data.get('published_date', ''),
        game_name="Test Game",
        form_data="Test Form Data"
    )
    
    if success:
        print("✅ Vidéo ajoutée en base")
        
        # Test de récupération
        form_data = db.get_processed_form(test_url)
        if form_data:
            print(f"✅ Données récupérées:")
            for key, value in form_data.items():
                print(f"   {key}: {value}")
        else:
            print("❌ Impossible de récupérer les données")
    else:
        print("❌ Erreur ajout en base")

if __name__ == "__main__":
    print("🤖 Test complet du pipeline")
    print("=" * 60)
    
    try:
        asyncio.run(test_complete_pipeline())
    except Exception as e:
        print(f"\n❌ ERREUR: {e}")
        import traceback
        traceback.print_exc()