import { useEffect, useState } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { supabase } from '@/lib/supabase'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { ArrowLeft, CheckCircle2, XCircle } from 'lucide-react'; import { Progress } from '@/components/ui/progress'; interface EssayAnalysis { id: string; essay_id: string; overall_score: number; feedback: { structure: string; content: string; language: string; }; strengths: string[]; improvements: string[]; suggestions: string; criteria_scores: { adequacy: number; coherence: number; cohesion: number; vocabulary: number; grammar: number; }; created_at: string; } interface Essay { id: string; title: string; content: string; essay_type: { title: string; }; essay_genre: { title: string; }; } export function EssayAnalysis() { const navigate = useNavigate(); const { id } = useParams(); const [analysis, setAnalysis] = useState(null); const [essay, setEssay] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { if (id) { loadEssayAndAnalysis(); } }, [id]); async function loadEssayAndAnalysis() { try { // Carregar redação const { data: essayData, error: essayError } = await supabase .from('student_essays') .select(` *, essay_type:essay_types(title), essay_genre:essay_genres(title) `) .eq('id', id) .single(); if (essayError) throw essayError; setEssay(essayData); // Carregar análise const { data: analysisData, error: analysisError } = await supabase .from('essay_analyses') .select('*') .eq('essay_id', id) .order('created_at', { ascending: false }) .limit(1) .single(); if (analysisError) throw analysisError; setAnalysis(analysisData); } catch (error) { console.error('Erro ao carregar dados:', error); } finally { setLoading(false); } } if (loading) return
Carregando...
; if (!essay || !analysis) return
Análise não encontrada
; return (

{essay.title}

{essay.essay_type.title} • {essay.essay_genre.title}

{/* Pontuação Geral */} Pontuação Geral
{analysis.overall_score}
/100
{/* Pontos Fortes */} Pontos Fortes
    {analysis.strengths.map((strength, index) => (
  • {strength}
  • ))}
{/* Pontos a Melhorar */} Pontos a Melhorar
    {analysis.improvements.map((improvement, index) => (
  • {improvement}
  • ))}
{/* Feedback Detalhado */} Feedback Detalhado

Estrutura

{analysis.feedback.structure}

Conteúdo

{analysis.feedback.content}

Linguagem

{analysis.feedback.language}

{/* Critérios de Avaliação */} Critérios de Avaliação
Adequação ao Gênero {analysis.criteria_scores.adequacy}%
Coerência {analysis.criteria_scores.coherence}%
Coesão {analysis.criteria_scores.cohesion}%
Vocabulário {analysis.criteria_scores.vocabulary}%
Gramática {analysis.criteria_scores.grammar}%
{/* Sugestões */} Sugestões para Melhoria

{analysis.suggestions}

); }