import test from 'node:test';
import assert from 'node:assert';
import { requireCommonJS } from './_helpers/commonjs-bridge.js';
import { AutoReporter } from './reporters/AutoReporter.js';

/**
 * SINGLE LLM TEST - Test qui force un appel LLM pour vérifier la capture
 */

const autoReporter = new AutoReporter();

const mockCsvData = {
  mc0: 'plaque métallique premium',  // Contenu qui devrait déclencher amélioration technique
  t0: 'Plaque signalétique professionnelle',
  personality: {
    nom: 'Marc',
    style: 'technique'
  }
};

// Contenu plus long pour déclencher l'amélioration technique
const mockContent = {
  'Titre_H1': 'Plaque basique standard normale pour amélioration technique nécessaire avec matériaux génériques'
};

test('Single LLM lightEnhancement', { timeout: 30000 }, async () => {
  autoReporter.onTestStart('Single LLM lightEnhancement');

  const { applyPredefinedStack } = requireCommonJS('selective-enhancement/SelectiveLayers');

  // Forcer l'appel LLM avec analysisMode: false
  const result = await applyPredefinedStack(mockContent, 'lightEnhancement', {
    csvData: mockCsvData,
    analysisMode: false  // Mode production pour forcer LLM calls
  });

  assert.ok(result, 'lightEnhancement doit retourner un résultat');
  console.log('Résultat:', Object.keys(result));
});

test.after(async () => {
  // Attendre que tout se termine
  await new Promise(resolve => setTimeout(resolve, 500));

  console.log(`\n=== RÉSULTATS AUTO-REPORTER ===`);
  console.log(`Tests capturés: ${autoReporter.testResults.length}`);
  console.log(`LLM calls: ${autoReporter.llmCalls.length}`);

  if (autoReporter.llmCalls.length > 0) {
    autoReporter.llmCalls.forEach((call, i) => {
      console.log(`  ${i+1}. ${call.provider} (${call.model}) - ${call.duration}ms - Context: "${call.testContext}"`);
    });
  }

  const reportFile = autoReporter.generateReport();
  console.log(`Rapport généré: ${reportFile}`);
});