seogeneratorserver/lib/adversarial-generation/demo-modulaire.js
StillHammer dbf1a3de8c Add technical plan for multi-format export system
Added plan.md with complete architecture for format-agnostic content generation:
- Support for Markdown, HTML, Plain Text, JSON formats
- New FormatExporter module with neutral data structure
- Integration strategy with existing ContentAssembly and ArticleStorage
- Bonus features: SEO metadata generation, readability scoring, WordPress Gutenberg format
- Implementation roadmap with 4 phases (6h total estimated)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 16:14:29 +08:00

202 lines
8.4 KiB
JavaScript

// ========================================
// DÉMONSTRATION ARCHITECTURE MODULAIRE
// Usage: node lib/adversarial-generation/demo-modulaire.js
// Objectif: Valider l'intégration modulaire adversariale
// ========================================
const { logSh } = require('../ErrorReporting');
// Import modules adversariaux modulaires
const { applyAdversarialLayer } = require('./AdversarialCore');
const {
applyPredefinedStack,
applyAdaptiveLayers,
getAvailableStacks
} = require('./AdversarialLayers');
const { calculateAntiDetectionScore, evaluateAdversarialImprovement } = require('./AdversarialUtils');
/**
* EXEMPLE D'UTILISATION MODULAIRE
*/
async function demoModularAdversarial() {
console.log('\n🎯 === DÉMONSTRATION ADVERSARIAL MODULAIRE ===\n');
// Contenu d'exemple (simulé contenu généré normal)
const exempleContenu = {
'|Titre_Principal_1|': 'Guide complet pour choisir votre plaque personnalisée',
'|Introduction_1|': 'La personnalisation d\'une plaque signalétique représente un enjeu optimal pour votre entreprise. Cette solution comprehensive permet de créer une identité visuelle robuste et seamless.',
'|Texte_1|': 'Il est important de noter que les matériaux utilisés sont cutting-edge. Par ailleurs, la qualité est optimal. En effet, nos solutions sont comprehensive et robust.',
'|FAQ_Question_1|': 'Quels sont les matériaux disponibles ?',
'|FAQ_Reponse_1|': 'Nos matériaux sont optimal : dibond, aluminium, PMMA. Ces solutions comprehensive garantissent une qualité robust et seamless.'
};
console.log('📊 CONTENU ORIGINAL:');
Object.entries(exempleContenu).forEach(([tag, content]) => {
console.log(` ${tag}: "${content.substring(0, 60)}..."`);
});
// Analyser contenu original
const scoreOriginal = calculateAntiDetectionScore(Object.values(exempleContenu).join(' '));
console.log(`\n📈 Score anti-détection original: ${scoreOriginal}/100`);
try {
// ========================================
// TEST 1: COUCHE SIMPLE
// ========================================
console.log('\n🔧 TEST 1: Application couche adversariale simple');
const result1 = await applyAdversarialLayer(exempleContenu, {
detectorTarget: 'general',
intensity: 0.8,
method: 'enhancement'
});
console.log(`✅ Résultat: ${result1.stats.elementsModified}/${result1.stats.elementsProcessed} éléments modifiés`);
const scoreAmeliore = calculateAntiDetectionScore(Object.values(result1.content).join(' '));
console.log(`📈 Score anti-détection amélioré: ${scoreAmeliore}/100 (+${scoreAmeliore - scoreOriginal})`);
// ========================================
// TEST 2: STACK PRÉDÉFINI
// ========================================
console.log('\n📦 TEST 2: Application stack prédéfini');
// Lister stacks disponibles
const stacks = getAvailableStacks();
console.log(' Stacks disponibles:');
stacks.forEach(stack => {
console.log(` - ${stack.name}: ${stack.description} (${stack.layersCount} couches)`);
});
const result2 = await applyPredefinedStack(exempleContenu, 'standardDefense', {
csvData: {
personality: { nom: 'Marc', style: 'technique' },
mc0: 'plaque personnalisée'
}
});
console.log(`✅ Stack standard: ${result2.stats.totalModifications} modifications totales`);
console.log(` 📊 Couches appliquées: ${result2.stats.layers.filter(l => l.success).length}/${result2.stats.layers.length}`);
const scoreStack = calculateAntiDetectionScore(Object.values(result2.content).join(' '));
console.log(`📈 Score anti-détection stack: ${scoreStack}/100 (+${scoreStack - scoreOriginal})`);
// ========================================
// TEST 3: COUCHES ADAPTATIVES
// ========================================
console.log('\n🧠 TEST 3: Application couches adaptatives');
const result3 = await applyAdaptiveLayers(exempleContenu, {
targetDetectors: ['gptZero', 'originality'],
maxIntensity: 1.2
});
if (result3.stats.adaptive) {
console.log(`✅ Adaptatif: ${result3.stats.layersApplied || result3.stats.totalModifications} modifications`);
const scoreAdaptatif = calculateAntiDetectionScore(Object.values(result3.content).join(' '));
console.log(`📈 Score anti-détection adaptatif: ${scoreAdaptatif}/100 (+${scoreAdaptatif - scoreOriginal})`);
}
// ========================================
// COMPARAISON FINALE
// ========================================
console.log('\n📊 COMPARAISON FINALE:');
const evaluation = evaluateAdversarialImprovement(
Object.values(exempleContenu).join(' '),
Object.values(result2.content).join(' '),
'general'
);
console.log(` 🔹 Réduction empreintes IA: ${evaluation.fingerprintReduction.toFixed(2)}%`);
console.log(` 🔹 Augmentation diversité: ${evaluation.diversityIncrease.toFixed(2)}%`);
console.log(` 🔹 Amélioration variation: ${evaluation.variationIncrease.toFixed(2)}%`);
console.log(` 🔹 Score amélioration global: ${evaluation.improvementScore}`);
console.log(` 🔹 Taux modification: ${evaluation.modificationRate.toFixed(2)}%`);
console.log(` 💡 Recommandation: ${evaluation.recommendation}`);
// ========================================
// EXEMPLES DE CONTENU TRANSFORMÉ
// ========================================
console.log('\n✨ EXEMPLES DE TRANSFORMATION:');
const exempleTransforme = result2.content['|Introduction_1|'] || result1.content['|Introduction_1|'];
console.log('\n📝 AVANT:');
console.log(` "${exempleContenu['|Introduction_1|']}"`);
console.log('\n📝 APRÈS:');
console.log(` "${exempleTransforme}"`);
console.log('\n✅ === DÉMONSTRATION MODULAIRE TERMINÉE ===\n');
return {
success: true,
originalScore: scoreOriginal,
improvedScore: Math.max(scoreAmeliore, scoreStack),
improvement: evaluation.improvementScore
};
} catch (error) {
console.error('\n❌ ERREUR DÉMONSTRATION:', error.message);
return { success: false, error: error.message };
}
}
/**
* EXEMPLE D'INTÉGRATION AVEC PIPELINE NORMALE
*/
async function demoIntegrationPipeline() {
console.log('\n🔗 === DÉMONSTRATION INTÉGRATION PIPELINE ===\n');
// Simuler résultat pipeline normale (Level 1)
const contenuNormal = {
'|Titre_H1_1|': 'Solutions de plaques personnalisées professionnelles',
'|Intro_1|': 'Notre expertise en signalétique permet de créer des plaques sur mesure adaptées à vos besoins spécifiques.',
'|Texte_1|': 'Les matériaux proposés incluent l\'aluminium, le dibond et le PMMA. Chaque solution présente des avantages particuliers selon l\'usage prévu.'
};
console.log('💼 SCÉNARIO: Application adversarial post-pipeline normale');
try {
// Exemple Level 6 - Post-processing adversarial
console.log('\n🎯 Étape 1: Contenu généré par pipeline normale');
console.log(' ✅ Contenu de base: qualité préservée');
console.log('\n🎯 Étape 2: Application couche adversariale modulaire');
const resultAdversarial = await applyAdversarialLayer(contenuNormal, {
detectorTarget: 'gptZero',
intensity: 0.9,
method: 'hybrid',
preserveStructure: true
});
console.log(` ✅ Couche adversariale: ${resultAdversarial.stats.elementsModified} éléments modifiés`);
console.log('\n📊 RÉSULTAT FINAL:');
Object.entries(resultAdversarial.content).forEach(([tag, content]) => {
console.log(` ${tag}:`);
console.log(` AVANT: "${contenuNormal[tag]}"`);
console.log(` APRÈS: "${content}"`);
console.log('');
});
return { success: true, result: resultAdversarial };
} catch (error) {
console.error('❌ ERREUR INTÉGRATION:', error.message);
return { success: false, error: error.message };
}
}
// Exécuter démonstrations si fichier appelé directement
if (require.main === module) {
(async () => {
await demoModularAdversarial();
await demoIntegrationPipeline();
})().catch(console.error);
}
module.exports = {
demoModularAdversarial,
demoIntegrationPipeline
};