test-biomas-sections-fix.js•9.43 kB
#!/usr/bin/env node
/**
* Test the sections array format fix
* This verifies Claude Desktop's direct-to-tools format is handled correctly
*/
import { ContentWidgetAnalyzer } from '../../src/tools/analyze-content-for-widgets.js';
// Exact format from Biomas transcript when Claude Desktop went directly to tools
const biomasSectionsFormat = {
title: "Os Biomas do Brasil - Uma Viagem pela Biodiversidade Nacional",
duration: 35,
homework: "Escolha um bioma e pesquise sobre uma espécie animal típica dele. Prepare uma apresentação de 3 minutos sobre as adaptações dessa espécie ao ambiente do bioma escolhido.",
sections: [
{
type: "introduction",
title: "Descobrindo os Tesouros Naturais do Brasil",
content: "Você sabia que o Brasil é um dos países mais biodiversos do mundo? Imagine uma jornada pelos diferentes ambientes naturais do nosso país: desde as densas florestas amazônicas até os campos abertos do Cerrado, passando pelas praias da Mata Atlântica e pelos manguezais costeiros. Cada um desses ambientes únicos é chamado de bioma, e hoje vamos explorar essa incrível diversidade natural que faz do Brasil um verdadeiro tesouro ecológico mundial."
},
{
type: "concept_explanation",
title: "O que são Biomas?",
content: "Bioma é um conjunto de ecossistemas terrestres com características semelhantes de vegetação, clima, solo e fauna. É como se fosse uma 'casa' natural onde diferentes seres vivos compartilham o mesmo tipo de ambiente e se adaptaram às condições locais. No Brasil, temos seis biomas principais, cada um com suas próprias características e importância para o equilíbrio ambiental do planeta."
},
{
type: "main_content",
title: "Os Seis Biomas Brasileiros",
content: {
pampa: {
area: "Menor bioma em área",
fauna: "Nandu, graxaim, veado-campeiro, gato-palheiro",
title: "Pampa - Os Campos Sulinos",
climate: "Subtropical",
location: "Rio Grande do Sul",
importance: "Importante para pecuária, conservação da água",
vegetation: "Campos nativos, gramíneas, poucas árvores"
},
cerrado: {
area: "Segundo maior bioma brasileiro",
fauna: "Lobo-guará, tatu-canastra, ema, seriema, jaguatirica",
title: "Cerrado - A Savana Brasileira",
climate: "Duas estações bem definidas: seca e chuvosa",
location: "Região Centro-Oeste e partes do Nordeste",
importance: "Importante para agricultura, nascentes de grandes rios, rica biodiversidade",
vegetation: "Árvores baixas e tortuosas, gramíneas, ipês, pequizeiros"
},
amazonia: {
area: "Ocupa cerca de 60% do território brasileiro",
fauna: "Onça-pintada, boto-cor-de-rosa, tucano, preguiça, araras",
title: "Amazônia - A Floresta Tropical",
climate: "Quente e úmido o ano todo",
location: "Região Norte e parte do Centro-Oeste",
importance: "Regula o clima global, abriga maior biodiversidade do mundo, fornece água doce",
vegetation: "Floresta densa com árvores de grande porte, como castanheira, mogno e seringueira"
},
caatinga: {
area: "Única no mundo, exclusivamente brasileira",
fauna: "Sagui-do-nordeste, asa-branca, preá, cobra-coral",
title: "Caatinga - O Sertão Nordestino",
climate: "Semiárido, com chuvas irregulares",
location: "Região Nordeste",
importance: "Adaptação única à vida no semiárido, rica em espécies endêmicas",
vegetation: "Plantas adaptadas à seca: cactos, mandacaru, xiquexique"
},
pantanal: {
area: "Menor bioma brasileiro em área",
fauna: "Maior concentração de fauna: jacaré, capivara, tuiuiú, onça-pintada",
title: "Pantanal - A Maior Planície Alagável",
climate: "Tropical com duas estações: seca e chuvosa",
location: "Mato Grosso e Mato Grosso do Sul",
importance: "Berçário de vida aquática, controle de enchentes",
vegetation: "Campos alagados, plantas aquáticas, palmeiras"
},
mata_atlantica: {
area: "Hoje restam apenas 12% da cobertura original",
fauna: "Mico-leão-dourado, muriqui, saíra-sete-cores, jaguatirica",
title: "Mata Atlântica - A Floresta Costeira",
climate: "Tropical úmido",
location: "Faixa litorânea do país",
importance: "Protege a costa, onde vive 70% da população brasileira",
vegetation: "Floresta densa, bromélias, orquídeas, pau-brasil"
}
}
},
{
type: "interactive_activity",
title: "Atividade Prática: Explorando os Biomas",
content: "Agora vamos testar seus conhecimentos! Relacione cada característica ao bioma correto e descubra curiosidades sobre nossa biodiversidade."
},
{
type: "vocabulary",
terms: [
{
term: "Bioma",
definition: "Conjunto de ecossistemas com características semelhantes de vegetação, clima e fauna"
},
{
term: "Biodiversidade",
definition: "Variedade de seres vivos existentes em um ambiente"
},
{
term: "Ecossistema",
definition: "Sistema natural onde seres vivos interagem entre si e com o ambiente"
}
]
}
]
};
async function testBiomasSectionsFix() {
console.log('🧪 Testing Biomas sections array format fix');
console.log('📋 This tests the exact format Claude Desktop sends when going directly to tools');
const analyzer = new ContentWidgetAnalyzer();
try {
console.log('📊 Input analysis:');
console.log(` Title: "${biomasSectionsFormat.title}"`);
console.log(` Sections: ${biomasSectionsFormat.sections.length}`);
console.log(` Has homework: ${!!biomasSectionsFormat.homework}`);
// Log section types
biomasSectionsFormat.sections.forEach((section, i) => {
console.log(` Section ${i+1}: type="${section.type}", title="${section.title}"`);
});
const result = await analyzer.analyzeContent({
claudeContent: biomasSectionsFormat
});
console.log('\n✅ Analysis completed successfully');
console.log('📊 Results:');
console.log(` Success: ${result.success}`);
console.log(` Content length: ${result.debug?.contentLength || 0} characters`);
console.log(` Segments analyzed: ${result.debug?.segmentsAnalyzed || 0}`);
console.log(` Widget types: ${result.data?.selectedWidgetTypes?.length || 0}`);
// Check content preservation
const previousLength = 61; // From transcript - only title was processed
const currentLength = result.debug?.contentLength || 0;
const improvement = Math.round((currentLength / previousLength) * 100);
console.log('\n📈 Content preservation comparison:');
console.log(` Before fix: ${previousLength} characters (title only)`);
console.log(` After fix: ${currentLength} characters`);
console.log(` Improvement: ${improvement}% (${Math.round(currentLength / previousLength)}x more content)`);
// Check segment details
const segments = result.data?.contentStructure?.segments || [];
console.log('\n📋 Detected segments:');
segments.forEach((segment, i) => {
console.log(` ${i+1}. "${segment.title}" (${segment.type}) - ${segment.content.length} chars`);
});
// Check for bioma content
const biomaContent = segments.find(s => s.content.includes('Amazônia') || s.content.includes('Cerrado'));
const hasVocabulary = segments.some(s => s.type === 'vocabulary' || s.content.includes('Bioma:'));
const hasActivity = segments.some(s => s.type === 'assessment' || s.title?.includes('Atividade'));
console.log('\n🔍 Content validation:');
console.log(` Bioma descriptions found: ${biomaContent ? '✅' : '❌'}`);
console.log(` Vocabulary terms found: ${hasVocabulary ? '✅' : '❌'}`);
console.log(` Interactive activity found: ${hasActivity ? '✅' : '❌'}`);
// Check widget diversity
const widgetTypes = result.data?.selectedWidgetTypes?.map(w => w.type) || [];
const uniqueTypes = [...new Set(widgetTypes)];
console.log('\n🎯 Widget types detected:');
console.log(` Unique types: ${uniqueTypes.length}`);
console.log(` Types: ${uniqueTypes.join(', ')}`);
if (currentLength > 2000 && uniqueTypes.length >= 4) {
console.log('\n🎉 SUCCESS: Sections array format handling working correctly!');
console.log(' ✅ Full content from sections extracted');
console.log(' ✅ Nested content objects handled');
console.log(' ✅ Widget diversity achieved');
} else {
console.log('\n⚠️ Partial success - may need further refinement');
if (currentLength <= 2000) {
console.log(' ⚠️ Content extraction may be incomplete');
}
if (uniqueTypes.length < 4) {
console.log(' ⚠️ Widget diversity limited');
}
}
} catch (error) {
console.error('\n❌ Test failed:', error.message);
console.error('Stack:', error.stack);
}
}
// Run the test
testBiomasSectionsFix().catch(console.error);