test-structured-content-fix.js•10.5 kB
#!/usr/bin/env node
/**
* Test structured content object parsing fix
* This tests the exact format Claude Desktop sends based on the transcript
*/
import { ContentWidgetAnalyzer } from '../../src/tools/analyze-content-for-widgets.js';
// Based on the transcript data (lines 261-384)
const structuredClaudeContent = {
title: "A Reforma Protestante: Uma Revolução Religiosa no Século XVI",
content: {
timeline: [
{
year: "1517",
event: "Martinho Lutero publica as 95 Teses"
},
{
year: "1520",
event: "Lutero queima a bula papal que o excomungava"
},
{
year: "1521",
event: "Dieta de Worms - Lutero é declarado herege"
},
{
year: "1534",
event: "Henrique VIII rompe com Roma e cria a Igreja Anglicana"
},
{
year: "1545-1563",
event: "Concílio de Trento (Contrarreforma)"
},
{
year: "1555",
event: "Paz de Augsburgo - príncipes alemães podem escolher a religião de seus territórios"
},
{
year: "1618-1648",
event: "Guerra dos Trinta Anos"
}
],
objectives: [
"Compreender as causas da Reforma Protestante",
"Conhecer as principais figuras do movimento",
"Analisar as consequências para a Europa e o mundo",
"Entender a importância da liberdade religiosa"
],
vocabulary: [
{
term: "Indulgência",
definition: "Perdão dos pecados que a Igreja vendia em troca de dinheiro"
},
{
term: "Reforma",
definition: "Movimento de renovação e mudança na Igreja"
},
{
term: "Protestante",
definition: "Nome dado aos cristãos que 'protestaram' contra a Igreja Católica"
},
{
term: "Contrarreforma",
definition: "Movimento de renovação da Igreja Católica em resposta à Reforma"
},
{
term: "Predestinação",
definition: "Doutrina que afirma que Deus já escolheu quem será salvo"
},
{
term: "Clero",
definition: "Conjunto de pessoas que trabalham na Igreja (padres, bispos, etc.)"
},
{
term: "Concílio",
definition: "Assembleia de líderes religiosos para discutir questões da Igreja"
},
{
term: "Inquisição",
definition: "Tribunal religioso que julgava e punia hereges"
}
],
introduction: "Imagine que você vive no século XVI e a Igreja Católica controla quase todos os aspectos da vida das pessoas. De repente, um monge alemão chamado Martinho Lutero desafia essa autoridade e muda o mundo para sempre. Essa é a história da Reforma Protestante!",
mainSections: [
{
title: "Contexto Histórico: A Europa no Século XVI",
content: "No início do século XVI, a Igreja Católica era extremamente poderosa. O Papa não era apenas um líder religioso, mas também um governante político que controlava vastos territórios. A Igreja possuía muitas terras, cobrava impostos e vendia 'indulgências' - uma espécie de 'perdão' pelos pecados que as pessoas podiam comprar com dinheiro. Muitas pessoas estavam insatisfeitas com essa situação. A Igreja havia se tornado muito rica e alguns membros do clero viviam luxuosamente, enquanto o povo comum enfrentava dificuldades. Além disso, muitos cristãos queriam ler a Bíblia em sua própria língua, mas ela estava apenas em latim, que poucos sabiam ler."
},
{
title: "Martinho Lutero: O Monge que Mudou a História",
content: "Martinho Lutero nasceu em 1483 na Alemanha. Era um monge agostiniano e professor de teologia. Em 1517, ele ficou revoltado com a venda de indulgências pelo monge João Tetzel, que prometia perdão dos pecados em troca de dinheiro. Em 31 de outubro de 1517, Lutero escreveu as '95 Teses' - uma lista de pontos questionando as práticas da Igreja Católica. Segundo a tradição, ele pregou essas teses na porta da Igreja do Castelo de Wittenberg. Graças à recém-inventada imprensa, suas ideias se espalharam rapidamente por toda a Europa."
},
{
title: "Outros Reformadores Importantes",
content: "João Calvino (1509-1564): Reformador francês que desenvolveu o calvinismo em Genebra, enfatizando a predestinação - a ideia de que Deus já escolheu quem será salvo. Henrique VIII (1491-1547): Rei da Inglaterra que rompeu com Roma para criar a Igreja Anglicana, principalmente para poder se divorciar de Catarina de Aragão. Ulrich Zuínglio (1484-1531): Reformador suíço que liderou a reforma em Zurique, defendendo ideias semelhantes às de Lutero."
},
{
title: "A Contrarreforma: A Resposta Católica",
content: "A Igreja Católica não ficou parada. Entre 1545 e 1563, realizou o Concílio de Trento, que: Reafirmou as doutrinas católicas, Criou o Index (lista de livros proibidos), Fortaleceu a Inquisição, Reformou o clero e eliminou vários abusos"
},
{
title: "Consequências da Reforma Protestante",
content: "Religiosas: Divisão do cristianismo em várias denominações, Surgimento de igrejas nacionais, Desenvolvimento do conceito de tolerância religiosa. Políticas: Fortalecimento do poder dos reis nacionais, Guerras religiosas na Europa (como a Guerra dos Trinta Anos), Declínio do poder político do Papa. Sociais e Culturais: Aumento da alfabetização (para ler a Bíblia), Desenvolvimento da imprensa, Valorização do trabalho e da educação, Influência na formação do capitalismo. Econômicas: Confisco de bens da Igreja em países protestantes, Desenvolvimento de uma 'ética do trabalho' protestante, Mudanças nas práticas comerciais"
}
],
lutherPrinciples: [
{
principle: "Sola Scriptura (Somente a Escritura)",
explanation: "A Bíblia é a única fonte de autoridade religiosa"
},
{
principle: "Sola Fide (Somente a Fé)",
explanation: "A salvação vem apenas pela fé, não por obras ou pagamentos"
},
{
principle: "Sacerdócio Universal",
explanation: "Todos os cristãos podem se relacionar diretamente com Deus"
},
{
principle: "Tradução da Bíblia",
explanation: "A Bíblia deve ser traduzida para as línguas locais"
}
],
reflectionQuestions: [
"Por que você acha que as ideias de Lutero se espalharam tão rapidamente?",
"Como a invenção da imprensa ajudou a Reforma Protestante?",
"Que semelhanças você vê entre a Reforma Protestante e os movimentos de mudança social de hoje?"
]
},
subject: "História",
duration: 35,
gradeLevel: "7º ano"
};
async function testStructuredContentFix() {
console.log('🧪 Testing structured content object parsing fix');
console.log('📊 Input content structure:');
console.log(` - Timeline events: ${structuredClaudeContent.content.timeline.length}`);
console.log(` - Objectives: ${structuredClaudeContent.content.objectives.length}`);
console.log(` - Vocabulary terms: ${structuredClaudeContent.content.vocabulary.length}`);
console.log(` - Main sections: ${structuredClaudeContent.content.mainSections.length}`);
console.log(` - Luther principles: ${structuredClaudeContent.content.lutherPrinciples.length}`);
console.log(` - Reflection questions: ${structuredClaudeContent.content.reflectionQuestions.length}`);
try {
const analyzer = new ContentWidgetAnalyzer();
const result = await analyzer.analyzeContent({
claudeContent: structuredClaudeContent
});
console.log('\n✅ Analysis completed successfully');
console.log('📊 Result structure:', {
success: result.success,
contentLength: result.debug?.contentLength || 0,
segmentsAnalyzed: result.debug?.segmentsAnalyzed || 0,
widgetTypes: result.data?.selectedWidgetTypes?.map(w => w.type) || [],
totalWidgets: result.data?.selectedWidgetTypes?.length || 0
});
// Check segments and their types
const segments = result.data?.contentStructure?.segments || [];
console.log('\n📋 Segments detected:');
segments.forEach((segment, i) => {
console.log(` ${i+1}. "${segment.title}" (${segment.type}) - ${segment.content.length} chars`);
});
// Check widget diversity
const widgetTypes = result.data?.selectedWidgetTypes?.map(w => w.type) || [];
const uniqueTypes = [...new Set(widgetTypes)];
console.log(`\n🎯 Widget diversity: ${uniqueTypes.length} unique types`);
console.log(` Types: ${uniqueTypes.join(', ')}`);
// Check for specific educational components
const hasQuiz = segments.some(s => s.type === 'assessment');
const hasVocabulary = segments.some(s => s.type === 'vocabulary');
const hasTimeline = segments.some(s => s.type === 'list' && s.title?.includes('Tempo'));
console.log('\n🔍 Educational components detected:');
console.log(` Assessment/Quiz: ${hasQuiz ? '✅' : '❌'}`);
console.log(` Vocabulary: ${hasVocabulary ? '✅' : '❌'}`);
console.log(` Timeline: ${hasTimeline ? '✅' : '❌'}`);
// Compare with the previous problematic results
const previousContentLength = 60; // from transcript
const previousSegments = 1; // from transcript
const previousWidgetTypes = 2; // from transcript
console.log('\n📈 Improvement vs. Previous Results:');
console.log(` Content length: ${result.debug?.contentLength || 0} vs ${previousContentLength} (${Math.round(((result.debug?.contentLength || 0) / previousContentLength) * 100)}% improvement)`);
console.log(` Segments: ${segments.length} vs ${previousSegments} (${segments.length - previousSegments} more segments)`);
console.log(` Widget types: ${uniqueTypes.length} vs ${previousWidgetTypes} (${uniqueTypes.length - previousWidgetTypes} more types)`);
if (result.debug?.contentLength > 1000 && uniqueTypes.length >= 4) {
console.log('\n🎉 SUCCESS: Significant improvement achieved!');
} else {
console.log('\n⚠️ Partial improvement - may need further refinement');
}
return result;
} catch (error) {
console.error('\n❌ Test failed with error:', error.message);
console.error('Stack:', error.stack);
return null;
}
}
// Run test
testStructuredContentFix().catch(console.error);