#!/usr/bin/env node // 🧪 TESTE DO MODO RIGOROSO - API ANALYZER V2.0 // Demonstra como o sistema para a execução quando não consegue acessar endpoints reais const { analyzeAPIForDomain } = require('./create-domain-v2-api-analyzer.js'); console.log('🧪 TESTE DO MODO RIGOROSO - API ANALYZER V2.0'); console.log('='.repeat(50)); async function testStrictMode() { const testCases = [ { name: 'product', description: 'Domínio que DEVERIA ter endpoint real', expectation: 'Deve parar execução se não conseguir acessar dados reais' }, { name: 'nonexistent', description: 'Domínio que NÃO existe na API', expectation: 'Deve parar execução no modo rigoroso' } ]; for (const testCase of testCases) { console.log(`\n${'='.repeat(60)}`); console.log(`🔍 TESTANDO: ${testCase.name.toUpperCase()}`); console.log(`📋 Descrição: ${testCase.description}`); console.log(`🎯 Expectativa: ${testCase.expectation}`); console.log('='.repeat(60)); try { console.log('🔒 Executando em MODO RIGOROSO...\n'); const result = await analyzeAPIForDomain(testCase.name, undefined, true); if (result.success) { console.log(`✅ SUCESSO! Estratégia: ${result.strategy}`); if (result.strategy === 'response_analysis') { console.log('🎉 DADOS REAIS DA API DETECTADOS!'); console.log(`📊 Endpoint: ${result.metadata.endpoint}`); console.log(`📦 Sample size: ${result.metadata.sampleSize}`); console.log('\n📝 Interface gerada:'); console.log(result.interface.split('\n').slice(0, 10).join('\n')); console.log('...'); } else { console.log('⚠️ Usando estratégia alternativa (não dados reais)'); } } else { console.log('❌ Falha na análise'); } } catch (error) { if (error.code === 'ENDPOINT_ACCESS_FAILED') { console.log('\n🚨 ERRO CRÍTICO DETECTADO!'); console.log(`❌ ${error.message}`); console.log(`🔗 Endpoint que falhou: ${error.endpoint}`); console.log('\n🎯 COMPORTAMENTO CORRETO: Sistema parou execução'); console.log('📋 Isso é o esperado quando endpoint existe mas não consegue acessar'); } else if (error.code === 'STRICT_MODE_FAILURE') { console.log('\n🚨 MODO RIGOROSO - TODAS AS ESTRATÉGIAS FALHARAM!'); console.log(`❌ ${error.message}`); console.log('\n🎯 COMPORTAMENTO CORRETO: Sistema parou execução'); console.log('📋 Isso é o esperado quando não consegue obter dados reais'); } else { console.log('\n❌ ERRO INESPERADO:'); console.log(error.message); } } console.log('\n' + '⏸️ '.repeat(30)); // Pequena pausa entre testes await new Promise(resolve => setTimeout(resolve, 2000)); } console.log('\n🏁 TESTE DE MODO RIGOROSO CONCLUÍDO'); console.log('\n📊 RESUMO:'); console.log('✅ Modo rigoroso implementado'); console.log('✅ Sistema para execução quando não consegue acessar endpoints reais'); console.log('✅ Erros informativos com soluções sugeridas'); console.log('✅ Comportamento correto para diferentes cenários'); console.log('\n🚀 PRONTO PARA PRODUÇÃO!'); console.log('📋 Agora o Create-Domain V2.0 só gera interfaces baseadas em dados reais'); } // Demonstração de uso normal vs rigoroso async function demonstrateComparison() { console.log('\n' + '='.repeat(60)); console.log('🔄 DEMONSTRAÇÃO: MODO NORMAL VS RIGOROSO'); console.log('='.repeat(60)); const testDomain = 'product'; console.log('\n1️⃣ MODO NORMAL (strictMode = false):'); try { const normalResult = await analyzeAPIForDomain(testDomain, undefined, false); console.log(`✅ Resultado: ${normalResult.strategy} (${normalResult.fields.length} campos)`); console.log('📋 Modo normal: Sempre retorna resultado (fallback se necessário)'); } catch (error) { console.log(`❌ Erro no modo normal: ${error.message}`); } console.log('\n2️⃣ MODO RIGOROSO (strictMode = true):'); try { const strictResult = await analyzeAPIForDomain(testDomain, undefined, true); console.log(`✅ Resultado: ${strictResult.strategy} (${strictResult.fields.length} campos)`); console.log('📋 Modo rigoroso: Só aceita dados reais da API'); } catch (error) { console.log(`❌ Erro no modo rigoroso: ${error.message}`); console.log('📋 Modo rigoroso: Para execução se não conseguir dados reais'); } } if (require.main === module) { testStrictMode() .then(() => demonstrateComparison()) .catch(console.error); }