// ========================================
// DEMO SYSTÈME TENDANCES
// Démo directe du système de tendances configurables
// ========================================

const { TrendManager } = require('../lib/trend-prompts/TrendManager');

async function demoTrends() {
  console.log('🎯 === DEMO SYSTÈME DE TENDANCES ===\n');

  // Initialiser TrendManager
  const trendManager = new TrendManager();

  // 1. LISTER TENDANCES DISPONIBLES
  console.log('📋 Tendances disponibles:');
  const trends = trendManager.getAvailableTrends();
  trends.forEach(trend => {
    console.log(`  • ${trend.id} (${trend.category})`);
    console.log(`    ${trend.description}\n`);
  });

  // 2. SÉLECTIONNER UNE TENDANCE
  console.log('🎯 Test tendance "eco-responsable":');
  await trendManager.setTrend('eco-responsable');

  const currentTrend = trendManager.getCurrentTrend();
  console.log(`  ✅ Tendance active: ${currentTrend.name}`);
  console.log(`  📝 Description: ${currentTrend.description}`);

  // 3. CONFIGURATION COUCHE TECHNIQUE
  console.log('\n⚙️ Configuration couche technique avec tendance:');
  const techConfig = trendManager.getLayerConfig('technical', { intensity: 0.9 });
  console.log('  • Target Terms:', techConfig.targetTerms);
  console.log('  • Focus Areas:', techConfig.focusAreas);
  console.log('  • Intensité:', techConfig.intensity);

  // 4. CONFIGURATION COUCHE STYLE
  console.log('\n🎨 Configuration couche style avec tendance:');
  const styleConfig = trendManager.getLayerConfig('style');
  console.log('  • Target Style:', styleConfig.targetStyle);
  console.log('  • Tone:', styleConfig.tone);
  console.log('  • Values:', styleConfig.values);

  // 5. TEST AUTRE TENDANCE
  console.log('\n🚀 Test tendance "tech-innovation":');
  await trendManager.setTrend('tech-innovation');

  const techInnovConfig = trendManager.getLayerConfig('technical');
  console.log('  • Target Terms:', techInnovConfig.targetTerms);
  console.log('  • Style:', techInnovConfig.targetStyle);

  // 6. TENDANCE SAISONNIÈRE
  console.log('\n🍂 Test tendance "automne-cocooning":');
  await trendManager.setTrend('automne-cocooning');

  const cocoConfig = trendManager.getLayerConfig('style');
  console.log('  • Target Terms:', cocoConfig.targetTerms);
  console.log('  • Tone:', cocoConfig.tone);

  // 7. STATUS FINAL
  console.log('\n📊 Status final:');
  const status = trendManager.getStatus();
  console.log(`  • Tendance active: ${status.activeTrend.name}`);
  console.log(`  • Tendances disponibles: ${status.availableTrends}`);
  console.log(`  • Tendances custom: ${status.customTrends}`);

  console.log('\n✅ === DEMO TERMINÉE ===');
}

// CRÉER TENDANCE PERSONNALISÉE
async function demoCustomTrend() {
  console.log('\n✨ === DEMO TENDANCE PERSONNALISÉE ===\n');

  const trendManager = new TrendManager();

  // Créer tendance "luxe-parisien"
  const luxeTrend = {
    name: 'Luxe Parisien',
    description: 'Élégance et raffinement à la française',
    config: {
      technical: {
        targetTerms: ['élégant', 'raffiné', 'prestigieux', 'exclusif', 'haut de gamme'],
        focusAreas: ['design français', 'savoir-faire', 'exclusivité']
      },
      style: {
        targetStyle: 'élégant et sophistiqué',
        tone: 'raffiné et prestigieux',
        values: ['élégance', 'tradition', 'excellence']
      }
    }
  };

  trendManager.createCustomTrend('luxe-parisien', luxeTrend);
  await trendManager.setTrend('luxe-parisien');

  console.log('🏛️ Tendance "Luxe Parisien" créée et appliquée:');

  const config = trendManager.getLayerConfig('style');
  console.log('  • Target Terms:', config.targetTerms);
  console.log('  • Target Style:', config.targetStyle);
  console.log('  • Values:', config.values);

  console.log('\n✅ === TENDANCE PERSONNALISÉE OK ===');
}

// EXÉCUTER DEMO
if (require.main === module) {
  demoTrends()
    .then(() => demoCustomTrend())
    .catch(console.error);
}