fix: corrige consulta de análise de redações - Adiciona join com tabelas relacionadas - Implementa transformação dos dados - Adiciona tratamento para valores nulos

This commit is contained in:
Lucas Santana 2025-02-07 10:06:27 -03:00
parent 28ac3ef8cc
commit c94c46f5c1
2 changed files with 45 additions and 2 deletions

View File

@ -270,3 +270,10 @@ e este projeto adere ao [Semantic Versioning](https://semver.org/lang/pt-BR/).
- Removidos limites `minimum` e `maximum` dos campos numéricos
- Removida restrição `minItems` dos arrays de pontos fortes e melhorias
- Simplificada a validação para maior flexibilidade na Edge Function
### Técnico
- Corrigida consulta de análise de redações no componente `EssayAnalysis`:
- Adicionado join com tabelas relacionadas (feedback, strengths, improvements, scores)
- Implementada transformação dos dados para o formato esperado
- Adicionado tratamento para valores nulos
- Melhorada tipagem dos dados retornados

View File

@ -72,14 +72,50 @@ export function EssayAnalysis() {
// Carregar análise
const { data: analysisData, error: analysisError } = await supabase
.from('essay_analyses')
.select('*')
.select(`
*,
feedback:essay_analysis_feedback(
structure_feedback,
content_feedback,
language_feedback
),
strengths:essay_analysis_strengths(strength),
improvements:essay_analysis_improvements(improvement),
scores:essay_analysis_scores(
adequacy,
coherence,
cohesion,
vocabulary,
grammar
)
`)
.eq('essay_id', id)
.order('created_at', { ascending: false })
.limit(1)
.single();
if (analysisError) throw analysisError;
setAnalysis(analysisData);
// Transformar os dados para o formato esperado
const formattedAnalysis = {
...analysisData,
feedback: {
structure: analysisData.feedback[0]?.structure_feedback || '',
content: analysisData.feedback[0]?.content_feedback || '',
language: analysisData.feedback[0]?.language_feedback || ''
},
strengths: analysisData.strengths?.map(s => s.strength) || [],
improvements: analysisData.improvements?.map(i => i.improvement) || [],
criteria_scores: {
adequacy: analysisData.scores[0]?.adequacy || 0,
coherence: analysisData.scores[0]?.coherence || 0,
cohesion: analysisData.scores[0]?.cohesion || 0,
vocabulary: analysisData.scores[0]?.vocabulary || 0,
grammar: analysisData.scores[0]?.grammar || 0
}
};
setAnalysis(formattedAnalysis);
} catch (error) {
console.error('Erro ao carregar dados:', error);
} finally {