mirror of
https://github.com/lucasrcsantana/story-generator.git
synced 2025-12-17 22:07:52 +00:00
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:
parent
28ac3ef8cc
commit
c94c46f5c1
@ -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
|
- Removidos limites `minimum` e `maximum` dos campos numéricos
|
||||||
- Removida restrição `minItems` dos arrays de pontos fortes e melhorias
|
- Removida restrição `minItems` dos arrays de pontos fortes e melhorias
|
||||||
- Simplificada a validação para maior flexibilidade na Edge Function
|
- 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
|
||||||
|
|||||||
@ -72,14 +72,50 @@ export function EssayAnalysis() {
|
|||||||
// Carregar análise
|
// Carregar análise
|
||||||
const { data: analysisData, error: analysisError } = await supabase
|
const { data: analysisData, error: analysisError } = await supabase
|
||||||
.from('essay_analyses')
|
.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)
|
.eq('essay_id', id)
|
||||||
.order('created_at', { ascending: false })
|
.order('created_at', { ascending: false })
|
||||||
.limit(1)
|
.limit(1)
|
||||||
.single();
|
.single();
|
||||||
|
|
||||||
if (analysisError) throw analysisError;
|
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) {
|
} catch (error) {
|
||||||
console.error('Erro ao carregar dados:', error);
|
console.error('Erro ao carregar dados:', error);
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user