feat: Adicionando análises do ENEM

This commit is contained in:
Lucas Santana 2025-02-12 19:26:05 -03:00
parent cdb98eb61d
commit 374ac90a3b
3 changed files with 267 additions and 1 deletions

View File

@ -27,6 +27,28 @@ interface EssayAnalysisResponse {
vocabulary: number;
grammar: number;
};
competencies: {
language_domain: {
value: number;
justification: string;
};
proposal_comprehension: {
value: number;
justification: string;
};
argument_selection: {
value: number;
justification: string;
};
linguistic_mechanisms: {
value: number;
justification: string;
};
intervention_proposal: {
value: number;
justification: string;
};
};
}
interface EssayType {
@ -175,6 +197,69 @@ Forneça uma análise detalhada considerando:
7. Pontos a melhorar
8. Sugestões específicas para aprimoramento
Essas são as competências do ENEM para você analisar a redação:
- Competência 1: Domínio da língua
- Competência 2: Compreensão da proposta
- Competência 3: Seleção de argumentos
- Competência 4: Mecanismos linguísticos
- Competência 5: Proposta de intervenção
## Competência 1: Demonstrar domínio da modalidade escrita formal da Língua Portuguesa
| Nota | Grade de Correção | Características |
|------|------------------|-----------------|
| 200 pontos | Demonstra excelente domínio da modalidade escrita formal da Língua Portuguesa e de escolha de registro. Desvios gramaticais ou de convenções da escrita serão aceitos somente como excepcionalidade e quando não caracterizem reincidência. | Ausência de marcas de oralidade e de registro informal<br> Precisão vocabular<br> Obediência às regras gramaticais<br> Não apresenta ou apresenta pouquíssimos desvios gramaticais leves e de convenções da escrita |
| 160 pontos | Demonstra bom domínio da modalidade escrita formal da Língua Portuguesa e de escolha de registro, com poucos desvios gramaticais e de convenções da escrita. | Poucos desvios gramaticais leves<br> Desvios de pontuação que não comprometem o sentido<br> Desvios de ortografia e acentuação que não comprometem o sentido |
| 120 pontos | Demonstra domínio mediano da modalidade escrita formal da Língua Portuguesa e de escolha de registro, com alguns desvios gramaticais e de convenções da escrita. | Alguns desvios gramaticais graves<br> Problemas de concordância<br> Problemas de regência<br> Problemas de estrutura sintática<br> Marcas de oralidade |
| 80 pontos | Demonstra domínio insuficiente da modalidade escrita formal da Língua Portuguesa, com muitos desvios gramaticais, de escolha de registro e de convenções da escrita. | Grande quantidade de desvios graves<br> Períodos incompletos<br> Graves problemas de pontuação<br> Desvios graves de grafia e acentuação<br> Presença de gíria |
| 40 pontos | Demonstra domínio precário da modalidade escrita formal da Língua Portuguesa, de forma sistemática, com diversificados e frequentes desvios gramaticais. | Graves e frequentes desvios gramaticais<br> Presença de gírias e marcas de oralidade<br> Desestruturação sintática em excesso |
| 0 ponto | Demonstra desconhecimento da modalidade escrita formal da Língua Portuguesa. | Excesso de desvios que impossibilitam a compreensão |
## Competência 2: Compreender a proposta de redação e aplicar conceitos das várias áreas de conhecimento
| Nota | Grade de Correção | Características |
|------|------------------|-----------------|
| 200 pontos | Desenvolve o tema por meio de argumentação consistente, a partir de um repertório sociocultural produtivo, e apresenta excelente domínio do texto dissertativo-argumentativo. | Tema muito bem desenvolvido<br> Estrutura completa (introdução, argumentos, conclusão)<br> Argumentos originais, além dos textos motivadores |
| 160 pontos | Desenvolve o tema por meio de argumentação consistente e apresenta bom domínio do texto dissertativo-argumentativo. | Desenvolve bem o tema<br> Boa argumentação<br> Não se limita aos textos motivadores |
| 120 pontos | Desenvolve o tema por meio de argumentação previsível e apresenta domínio mediano do texto dissertativo-argumentativo. | Abordagem superficial<br> Argumentação previsível<br> Reproduz ideias do senso comum |
| 80 pontos | Desenvolve o tema recorrendo à cópia de trechos dos textos motivadores ou apresenta domínio insuficiente do texto dissertativo-argumentativo. | Tendência ao tangenciamento<br> Argumentação falha<br> Cópia dos textos motivadores |
| 40 pontos | Apresenta o assunto, tangenciando o tema, ou demonstra domínio precário do texto dissertativo-argumentativo. | Tangencia o tema<br> Ausência de argumentação<br> Pode apresentar texto narrativo |
| 0 ponto | Fuga ao tema/não atendimento à estrutura dissertativo-argumentativa. | Desenvolve outro tema<br> Usa outra estrutura textual |
## Competência 3: Selecionar, relacionar, organizar e interpretar informações, fatos, opiniões e argumentos
| Nota | Grade de Correção | Características |
|------|------------------|-----------------|
| 200 pontos | Apresenta informações, fatos e opiniões relacionados ao tema proposto, de forma consistente e organizada, configurando autoria. | Seleciona e organiza informações consistentemente<br> Explicita tese clara<br> Argumentos comprovam a tese |
| 160 pontos | Apresenta informações, fatos e opiniões relacionados ao tema, de forma organizada, com indícios de autoria. | Organização consistente<br> Argumentos previsíveis mas próprios |
| 120 pontos | Apresenta informações, fatos e opiniões relacionados ao tema, limitados aos argumentos dos textos motivadores. | Organização pouco consistente<br> Informações aleatórias<br> Argumentos pouco convincentes |
| 80 pontos | Apresenta informações, fatos e opiniões relacionados ao tema, mas desorganizados ou contraditórios. | Argumentos pouco articulados<br> Reprodução dos textos motivadores |
| 40 pontos | Apresenta informações, fatos e opiniões pouco relacionados ao tema ou incoerentes. | Sem defesa de ponto de vista<br> Informações desarticuladas |
| 0 ponto | Apresenta informações, fatos e opiniões não relacionados ao tema. | Informações incoerentes<br> Sem ponto de vista |
## Competência 4: Demonstrar conhecimento dos mecanismos linguísticos necessários para a construção da argumentação
| Nota | Grade de Correção | Características |
|------|------------------|-----------------|
| 200 pontos | Articula bem as partes do texto e apresenta repertório diversificado de recursos coesivos. | Articulação muito boa<br> Pleno domínio dos recursos coesivos |
| 160 pontos | Articula as partes do texto com poucas inadequações e apresenta repertório diversificado de recursos coesivos. | Boa articulação<br> Poucos desvios nos conectores<br> Algumas repetições desnecessárias |
| 120 pontos | Articula as partes do texto, de forma mediana, com inadequações. | Algumas inadequações nos recursos coesivos<br> Frases fragmentadas ocasionais<br> Problemas de paragrafação |
| 80 pontos | Articula as partes do texto, de forma insuficiente, com muitas inadequações. | Muitas inadequações<br> Frases fragmentadas frequentes<br> Problemas de estrutura |
| 40 pontos | Articula as partes do texto de forma precária. | Graves problemas de articulação<br> Períodos muito longos ou fragmentados<br> Ausência de conectores |
| 0 ponto | Apresenta informações desconexas. | Não se configura como texto |
## Competência 5: Elaborar proposta de intervenção para o problema abordado
| Nota | Grade de Correção | Características |
|------|------------------|-----------------|
| 200 pontos | Elabora muito bem proposta de intervenção, detalhada, relacionada ao tema. | Proposta detalhada (o que fazer, como fazer, meios e participantes) |
| 160 pontos | Elabora bem proposta de intervenção relacionada ao tema. | Proposta relacionada mas não totalmente detalhada |
| 120 pontos | Elabora, de forma mediana, proposta de intervenção relacionada ao tema. | Proposta relacionada mas sem detalhamento |
| 80 pontos | Elabora, de forma insuficiente, proposta de intervenção. | Proposta não atende totalmente à discussão |
| 40 pontos | Apresenta proposta de intervenção vaga, precária ou relacionada apenas ao assunto. | Proposta vaga ou não configurada adequadamente |
| 0 ponto | Não apresenta proposta de intervenção ou apresenta proposta não relacionada ao tema. | Ausência de proposta<br> Proposta foge ao tema |
Responda em formato JSON seguindo exatamente esta estrutura:
{
"overall_score": number, // 0 a 100
@ -192,6 +277,28 @@ Responda em formato JSON seguindo exatamente esta estrutura:
"cohesion": number, // 0 a 100 - Coesão
"vocabulary": number, // 0 a 100 - Vocabulário
"grammar": number // 0 a 100 - Gramática e ortografia
},
"competencies": {
"language_domain": {
value: number, // 0 a 200 - Competência 1
justification: string // Justificativa para a pontuação
},
"proposal_comprehension": {
value: number, // 0 a 200 - Competência 2
justification: string // Justificativa para a pontuação
},
"argument_selection": {
value: number, // 0 a 200 - Competência 3
justification: string // Justificativa para a pontuação
},
"linguistic_mechanisms": {
value: number, // 0 a 200 - Competência 4
justification: string // Justificativa para a pontuação
},
"intervention_proposal": {
value: number, // 0 a 200 - Competência 5
justification: string // Justificativa para a pontuação
}
}
}`
@ -219,7 +326,7 @@ Responda em formato JSON seguindo exatamente esta estrutura:
schema: {
type: "object",
additionalProperties: false,
required: ["overall_score", "suggestions", "feedback", "strengths", "improvements", "criteria_scores"],
required: ["overall_score", "suggestions", "feedback", "strengths", "improvements", "criteria_scores", "competencies"],
properties: {
overall_score: {
type: "number",
@ -290,6 +397,93 @@ Responda em formato JSON seguindo exatamente esta estrutura:
description: "Gramática e ortografia (0-100)"
}
}
},
competencies: {
type: "object",
additionalProperties: false,
required: [
"language_domain",
"proposal_comprehension",
"argument_selection",
"linguistic_mechanisms",
"intervention_proposal"
],
properties: {
language_domain: {
type: "object",
additionalProperties: false,
required: ["value", "justification"],
properties: {
value: {
type: "number",
description: "Pontuação da competência (0-200)"
},
justification: {
type: "string",
description: "Justificativa para a pontuação"
}
}
},
proposal_comprehension: {
type: "object",
additionalProperties: false,
required: ["value", "justification"],
properties: {
value: {
type: "number",
description: "Pontuação da competência (0-200)" },
justification: {
type: "string",
description: "Justificativa para a pontuação"
}
}
},
argument_selection: {
type: "object",
additionalProperties: false,
required: ["value", "justification"],
properties: {
value: {
type: "number",
description: "Pontuação da competência (0-200)"
},
justification: {
type: "string",
description: "Justificativa para a pontuação"
}
}
},
linguistic_mechanisms: {
type: "object",
additionalProperties: false,
required: ["value", "justification"],
properties: {
value: {
type: "number",
description: "Pontuação da competência (0-200)"
},
justification: {
type: "string",
description: "Justificativa para a pontuação"
}
}
},
intervention_proposal: {
type: "object",
additionalProperties: false,
required: ["value", "justification"],
properties: {
value: {
type: "number",
description: "Pontuação da competência (0-200)"
},
justification: {
type: "string",
description: "Justificativa para a pontuação"
}
}
}
}
}
}
}

View File

@ -0,0 +1,52 @@
-- Adiciona campos de competências na tabela essay_analyses
ALTER TABLE essay_analyses
ADD COLUMN language_domain_value INTEGER,
ADD COLUMN language_domain_justification TEXT,
ADD COLUMN proposal_comprehension_value INTEGER,
ADD COLUMN proposal_comprehension_justification TEXT,
ADD COLUMN argument_selection_value INTEGER,
ADD COLUMN argument_selection_justification TEXT,
ADD COLUMN linguistic_mechanisms_value INTEGER,
ADD COLUMN linguistic_mechanisms_justification TEXT,
ADD COLUMN intervention_proposal_value INTEGER,
ADD COLUMN intervention_proposal_justification TEXT;
-- Adiciona restrições para garantir que os valores estejam entre 0 e 200
ALTER TABLE essay_analyses
ADD CONSTRAINT check_competency_values
CHECK (
language_domain_value BETWEEN 0 AND 200 AND
proposal_comprehension_value BETWEEN 0 AND 200 AND
argument_selection_value BETWEEN 0 AND 200 AND
linguistic_mechanisms_value BETWEEN 0 AND 200 AND
intervention_proposal_value BETWEEN 0 AND 200
);
-- Atualiza as políticas de segurança para incluir os novos campos
ALTER POLICY "Estudantes podem ver suas próprias análises" ON essay_analyses
USING (
essay_id IN (
SELECT id FROM student_essays
WHERE student_id = auth.uid()
)
);
-- Comentários para documentação
COMMENT ON COLUMN essay_analyses.language_domain_value IS 'Valor da competência de domínio da língua (0-200)';
COMMENT ON COLUMN essay_analyses.language_domain_justification IS 'Justificativa para a nota de domínio da língua';
COMMENT ON COLUMN essay_analyses.proposal_comprehension_value IS 'Valor da competência de compreensão da proposta (0-200)';
COMMENT ON COLUMN essay_analyses.proposal_comprehension_justification IS 'Justificativa para a nota de compreensão da proposta';
COMMENT ON COLUMN essay_analyses.argument_selection_value IS 'Valor da competência de seleção de argumentos (0-200)';
COMMENT ON COLUMN essay_analyses.argument_selection_justification IS 'Justificativa para a nota de seleção de argumentos';
COMMENT ON COLUMN essay_analyses.linguistic_mechanisms_value IS 'Valor da competência de mecanismos linguísticos (0-200)';
COMMENT ON COLUMN essay_analyses.linguistic_mechanisms_justification IS 'Justificativa para a nota de mecanismos linguísticos';
COMMENT ON COLUMN essay_analyses.intervention_proposal_value IS 'Valor da competência de proposta de intervenção (0-200)';
COMMENT ON COLUMN essay_analyses.intervention_proposal_justification IS 'Justificativa para a nota de proposta de intervenção';

View File

@ -0,0 +1,20 @@
-- Remove a restrição de verificação dos valores
ALTER TABLE essay_analyses
DROP CONSTRAINT IF EXISTS check_competency_values;
-- Remove os campos de competências
ALTER TABLE essay_analyses
DROP COLUMN IF EXISTS language_domain_value,
DROP COLUMN IF EXISTS language_domain_justification,
DROP COLUMN IF EXISTS proposal_comprehension_value,
DROP COLUMN IF EXISTS proposal_comprehension_justification,
DROP COLUMN IF EXISTS argument_selection_value,
DROP COLUMN IF EXISTS argument_selection_justification,
DROP COLUMN IF EXISTS linguistic_mechanisms_value,
DROP COLUMN IF EXISTS linguistic_mechanisms_justification,
DROP COLUMN IF EXISTS intervention_proposal_value,
DROP COLUMN IF EXISTS intervention_proposal_justification;