#!/usr/bin/env node

/**
 * TEST PIPELINE 4 PHASES AVEC AUTOREPORTER FORCÉ
 * Test compatible avec le runner Node.js pour détection correcte AutoReporter
 */

import { test } from 'node:test';
import { AutoReporter } from './reporters/AutoReporter.js';

// Démarrage AutoReporter AVANT le test
const autoReporter = new AutoReporter();
console.log('🚀 AutoReporter démarré pour capture pipeline 4 phases');

test('Pipeline 4 Phases Complet avec AutoReporter', async (t) => {
  console.log('🔥 === DÉMARRAGE PIPELINE 4 PHASES ===');
  console.log('📋 Workflow: Generation initial => adversarial => Heavy enhancement => human touch');

  try {
    // Import du module pipeline (CommonJS)
    const { handleFullWorkflow } = await import('../lib/Main.js');

    // Configuration test data
    const testData = {
      csvData: {
        mc0: 'solutions digitales enterprise',
        t0: 'Solutions digitales enterprise pour transformation métier avec architecture moderne et pipeline 4 phases',
        personality: { nom: 'TechTest', style: 'technique' },
        tMinus1: 'transformation digitale',
        mcPlus1: 'architecture moderne,pipeline complet,solutions enterprise,transformation métier',
        tPlus1: 'Architecture Moderne Enterprise,Pipeline Transformation Complet,Solutions Digitales Avancées,Métier Transformation Intelligente'
      },
      xmlTemplate: Buffer.from(`<?xml version='1.0' encoding='UTF-8'?>
<article>
  <h1>|Titre_H1{{T0}}{Rédige titre H1 technique}|</h1>
  <intro>|Introduction{{MC0}}{Introduction engagement}|</intro>
  <avantages>|Avantages_Techniques{{MC0}}{Avantages techniques}|</avantages>
  <conclusion>|Conclusion{{T0}}{Conclusion professionnelle}|</conclusion>
</article>`).toString('base64'),
      source: 'pipeline_4_phases_test'
    };

    console.log('\n📝 PHASE 1/4: Génération Initiale (Content de base)');

    // Configurer pour pipeline 4 phases
    process.env.FORCE_4_PHASE_PIPELINE = 'true';
    process.env.SELECTIVE_STACK = 'lightEnhancement';
    process.env.ADVERSARIAL_STACK = 'lightDefense';
    process.env.HUMAN_SIMULATION_STACK = 'lightSimulation';

    // Lancer la pipeline complète
    const result = await handleFullWorkflow(testData);

    console.log('\n🎯 === PIPELINE 4 PHASES TERMINÉE ===');
    console.log('✅ Toutes les phases exécutées avec succès');
    console.log('📊 AutoReporter devrait capturer toutes les phases et LLM calls');

    // Vérifier que nous avons un résultat
    if (!result || !result.compiledText) {
      throw new Error('Pipeline 4 phases n\'a pas produit de résultat valide');
    }

    console.log('✅ Test Pipeline 4 Phases RÉUSSI');
    return true;

  } catch (error) {
    console.error('❌ ERREUR Pipeline 4 phases:', error.message);
    throw error;
  }
});

// Force flush des logs pour AutoReporter
process.stdout.write('🎯 Test pipeline 4 phases avec AutoReporter terminé\n');

console.log('\n🚀 Test configuré pour AutoReporter avec runner Node.js officiel');