Agente de IA para Monitoramento de Frequência Acadêmica

08 de December de 2025 • Tempo de leitura: 5 min

Como criar um agente de IA que monitora e analisa os registros de frequência dos alunos, identificando padrões de absenteísmo e gerando alertas.

1. Propósito e Escopo

Este documento define todos os prompts, configurações de memória, transição entre estados e demais requisitos funcionais para o Fluxo de Agentes "Monitoramento de Frequência Acadêmica", uma solução de automação projetada para monitorar e analisar registros de frequência de alunos. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.

O objetivo principal é identificar padrões de absenteísmo e gerar alertas para a secretaria acadêmica, permitindo uma intervenção rápida e eficiente.

2. Contexto e Problema

Cenário Atual

Atualmente, instituições de ensino enfrentam dificuldades para monitorar a frequência acadêmica dos alunos de forma eficiente. O processo manual é demorado e sujeito a erros, dificultando a identificação de padrões de absenteísmo que podem indicar problemas mais sérios, como desengajamento ou dificuldades pessoais dos alunos.


Problemas Identificados

  • Dificuldade em monitorar a frequência: A coleta e análise manual dos registros de frequência são ineficientes e propensas a erros.
  • Falta de alertas proativos: A ausência de um sistema automatizado para gerar alertas impede uma intervenção oportuna e eficaz.

3. Impactos Esperados

A implementação deste fluxo de automação visa alcançar os seguintes resultados:

  • Automatizar o monitoramento de frequência, aumentando a precisão e reduzindo erros.
  • Identificar padrões de absenteísmo de forma proativa, permitindo uma intervenção mais rápida.
  • Gerar alertas automáticos para a secretaria acadêmica, facilitando a gestão de casos de absenteísmo crítico.

4. Visão Geral da Solução

O agente de IA para monitoramento de frequência acadêmica processa dados de registros de frequência dos alunos, identifica padrões de absenteísmo e gera alertas para a secretaria acadêmica. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que esse agente atue como um assistente útil e autônomo no monitoramento de frequência acadêmica.

A solução consiste em um fluxo de automação composto por 3 agentes de IA. O processo inicia com a preparação dos dados de frequência e termina com a geração de alertas estruturados para a secretaria.

A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.

Agentes Função Principal
Agente de Preparação de Dados de Frequência (RF 1) Validar e normalizar registros de frequência para uso analítico consistente.
Agente de Análise e Detecção de Padrões de Absenteísmo (RF 2) Calcular métricas de frequência e identificar padrões de absenteísmo por aluno.
Agente de Geração de Alertas para Secretaria Acadêmica (RF 3) Transformar achados analíticos em alertas estruturados e acionáveis para a secretaria.

5. Protótipos

Para proporcionar uma visão clara e tangível da solução proposta, criamos protótipos interativos que demonstram tanto o fluxo de trabalho dos agentes quanto o resultado final que a secretaria acadêmica receberá. Explore os links abaixo para entender melhor a solução em ação.

6. Requisitos Funcionais

RF 1. Agente de Preparação de Dados de Frequência

1.1 Tarefa do Agente

Validar e normalizar registros de frequência para uso analítico consistente.

1.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo uma tabela de registros de frequência dos alunos. Este arquivo contém informações sobre a presença e ausência dos alunos em diferentes disciplinas ao longo do período letivo.

# 2. Objetivo
Validar e normalizar esses registros para garantir que possam ser analisados consistentemente pelos agentes subsequentes.

# 3. Regras que você deve seguir para gerar sua resposta
- Interpretação de status: mapear 'p', '1', 'presença' -> 'presente'; 'a', '0', 'falta' -> 'ausente'; 'j', 'just', 'justificada' -> 'justificado'. Caso mapa_status_custom fornecido, aplicar prioridade a ele.
- Datas: converter para ISO (YYYY-MM-DD). Se data inválida ou futura em >7 dias, descartar com motivo 'data_invalida_ou_futura'. Ajustar timezone usando timezone_padrao quando houver timestamp.
- Duplicidades: para chaves iguais (aluno_id+data+disciplina_id opcional), manter 1 registro aplicando prioridade de status: ausente > justificado > presente; em empate, preferir o com timestamp_registro mais recente. Contabilizar em duplicidades_detectadas/resolvidas.
- Feriados e dias sem aula: se calendario_letivo_com_feriados incluir data marcada como sem aula, manter o registro apenas se status='presente' (atividade extracurricular) e marcar tem_feriado=true; do contrário, descartar com motivo 'dia_sem_aula'.
- Justificativas: 'justificado' não conta como ausência para análise de risco; manter status='justificado'.
- Campos obrigatórios: descartar entradas sem aluno_id ou sem data com motivo específico ('aluno_id_ausente'|'data_ausente').
- Weekday: calcular 1-7 (1=segunda, 7=domingo) com base em data_iso.
- Saída consistente: garantir que todos os registros emitidos possuam exatamente os campos especificados em registros_normalizados.

# 4. Exemplo de Output que você deve produzir
JSON com: { registros_normalizados: [ {aluno_id, data_iso (YYYY-MM-DD), weekday (1-7; 1=segunda), status ('presente'|'ausente'|'justificado'), disciplina_id|null, turma_id|null, periodo_letivo|null, fonte_status (valor original), tem_feriado (bool) }... ], relatorio_validacao: {total_entradas_recebidas, total_validas, total_descartadas, motivos_descarte: [{motivo, quantidade}], duplicidades_detectadas, duplicidades_resolvidas, regras_aplicadas: [strings] } }
1.3 Configurações do Agente

1.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente é o ponto de partida do fluxo e deve ser acionado pelo envio de uma tabela de registros de frequência via API. Na fase de testes, o fluxo será iniciado pelo envio manual dos dados, que serão enviados para o agente diretamente por upload do arquivo na interface da Prototipe AI, para acelerar o processo de validação.
  • Tipo do input: O input inicial para o fluxo é uma tabela de registros de frequência, que será processado para normalização e validação.
  • Formatos Suportados: Esse agente deve ser capaz de receber arquivos nos formatos: .csv, .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 100.000 caracteres.

1.3.2 Especificação do Output

  • Formato de output: O output deve ser um arquivo no formato JSON contendo os registros normalizados e um relatório de validação.
  • Exemplo de Estrutura de Output:
     {
      "registros_normalizados": [
        {
          "aluno_id": "12345",
          "data_iso": "2025-08-12",
          "weekday": 2,
          "status": "presente",
          "disciplina_id": null,
          "turma_id": null,
          "periodo_letivo": null,
          "fonte_status": "p",
          "tem_feriado": false
        }
      ],
      "relatorio_validacao": {
        "total_entradas_recebidas": 150,
        "total_validas": 140,
        "total_descartadas": 10,
        "motivos_descarte": [
          {"motivo": "data_invalida_ou_futura", "quantidade": 5},
          {"motivo": "aluno_id_ausente", "quantidade": 5}
        ],
        "duplicidades_detectadas": 3,
        "duplicidades_resolvidas": 3,
        "regras_aplicadas": ["mapa_status_custom", "ajuste_timezone"]
      }
    }
  • Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 3.000 caracteres, podendo variar conforme o número de registros processados.

1.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

1.3.4 Ferramentas do Agente

  • Documentos: Não consulta documentos externos.
  • Calculadora: Não utiliza.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

1.3.5 Memória

1.3.6 Regras de Orquestração e Transição

Ao concluir sua execução, esse agente aciona o Agente de Análise e Detecção de Padrões de Absenteísmo (RF 2).

RF 2. Agente de Análise e Detecção de Padrões de Absenteísmo

2.1 Tarefa do Agente

Calcular métricas de frequência e identificar padrões de absenteísmo por aluno.

2.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com registros de frequência normalizados. Este arquivo foi gerado pelo agente anterior e contém informações detalhadas sobre a presença e ausência dos alunos.

# 2. Objetivo
Calcular métricas de frequência e identificar padrões de absenteísmo por aluno, gerando insights que possam guiar intervenções futuras.

# 3. Regras que você deve seguir para gerar sua resposta
- Base de cálculo: considerar status 'ausente' e 'presente' para métricas; 'justificado' não entra como ausência nem presença, mas conta em total_aulas apenas se a instituição assim definir. Padrão: não contar em total_aulas. Se necessário, usar parâmetro configuracoes.contar_justificado_em_total (bool).
- Ausências consecutivas: ordenar por data ascendente por aluno e contar sequências contíguas de 'ausente' desconsiderando 'justificado'. Guardar atual (sequência ao final do período) e máxima.
- Taxas: taxa_presenca_geral = presentes/(presentes+ausentes). Taxa 30d considera janela dos últimos N dias corridos a partir da maior data disponível; se <5 aulas no período, marcar taxa_presenca_30d como "indisponivel" e não ativar gatilho de taxa.
- Padrões por dia da semana: para cada weekday, calcular razao_ausencia = ausencias/(ausencias+presencas). Destacar se ausencias >= min_ocorrencias_padrao_semana e razao_ausencia >= razao_min_padrao_semana.
- Padrões por disciplina: mesmo critério de destaque usando min_ocorrencias_padrao_disciplina e razao_min_padrao_disciplina; ignorar disciplina_id nula.
- Tendência 14d: comparar taxa de presença dos últimos 7 dias vs. 8-14 dias anteriores; se queda >10 p.p. -> 'aumento' de ausências; se variação entre -10 e +10 p.p. -> 'estavel'; se melhora >10 p.p. -> 'queda'. Se aulas insuficientes (<3 em qualquer janela), 'indisponivel'.
- Gatilhos: ativar quando (i) ausencias_consecutivas_atual >= limiar_ausencias_consecutivas; (ii) taxa_presenca_30d != 'indisponivel' e < taxa_presenca_minima; (iii) existe algum padrao_semana/dia com destaque=true; (iv) existe padrao_disciplina com destaque=true; (v) tendencia_14d == 'aumento'.
- Score de risco (0-100): normalizar componentes: C1= min(1, ausencias_consecutivas_atual/limiar_ausencias_consecutivas); C2= se taxa_presenca_30d indisponivel, usar 0; senão C2= max(0, (taxa_presenca_minima - taxa_presenca_30d)/taxa_presenca_minima); C3= min(1, 0.25*Q) onde Q = quantidade de padrões destacados (semana+disciplina). score = 100*(w1*C1 + w2*C2 + w3*C3) com pesos de configuracoes.pesos_risco.
- Nível de risco: critico se score>=80 ou ausencias_consecutivas_atual >= limiar_ausencias_consecutivas+2; alto se score>=60; medio se score>=35; senão baixo.
- Período de análise: inicio=min(data) e fim=max(data) dos registros do aluno.

# 4. Exemplo de Output que você deve produzir
JSON com analise_por_aluno: [ { aluno_id, periodo_analise: {inicio, fim}, total_aulas, total_presentes, total_ausentes, total_justificados, taxa_presenca_geral, taxa_presenca_30d, ausencias_consecutivas_atual, ausencias_consecutivas_max, padroes_semana: [{weekday, ausencias, presencas, razao_ausencia, destaque (bool)}], padroes_disciplina: [{disciplina_id, ausencias, presencas, razao_ausencia, destaque (bool)}], tendencia_14d: ('aumento'|'estavel'|'queda'|"indisponivel"), gatilhos_ativados: ["consecutivas>=N", "taxa30d 
2.3 Configurações do Agente

2.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 1).
  • Tipo do input: Este agente deve ser apto a receber como input um arquivo JSON contendo registros de frequência normalizados.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 50.000 caracteres.

2.3.2 Especificação do Output

  • Formato de output: O output deve ser um arquivo no formato JSON contendo a análise detalhada por aluno, incluindo métricas de frequência e padrões de absenteísmo identificados.
  • Exemplo de Estrutura de Output:
     {
      "analise_por_aluno": [
        {
          "aluno_id": "12345",
          "periodo_analise": {
            "inicio": "2025-08-01",
            "fim": "2025-08-12"
          },
          "total_aulas": 10,
          "total_presentes": 7,
          "total_ausentes": 3,
          "total_justificados": 0,
          "taxa_presenca_geral": 0.7,
          "taxa_presenca_30d": "indisponivel",
          "ausencias_consecutivas_atual": 2,
          "ausencias_consecutivas_max": 3,
          "padroes_semana": [
            {"weekday": 2, "ausencias": 2, "presencas": 2, "razao_ausencia": 0.5, "destaque": true}
          ],
          "padroes_disciplina": [],
          "tendencia_14d": "estavel",
          "gatilhos_ativados": ["consecutivas>=N"],
          "score_risco": 65,
          "nivel_risco": "alto"
        }
      ]
    }
  • Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 5.000 caracteres, dependendo do número de alunos e registros analisados.

2.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

2.3.4 Ferramentas do Agente

  • Documentos: Não consulta documentos externos.
  • Calculadora: Utiliza lógica interna para cálculos de métricas de frequência.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

2.3.5 Memória

2.3.6 Regras de Orquestração e Transição

Ao concluir sua execução, esse agente aciona o Agente de Geração de Alertas para Secretaria Acadêmica (RF 3).

RF 3. Agente de Geração de Alertas para Secretaria Acadêmica

3.1 Tarefa do Agente

Transformar achados analíticos em alertas estruturados e acionáveis para a secretaria.

3.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com a análise detalhada de frequência por aluno. Este arquivo foi gerado pelo agente anterior e contém insights sobre padrões de absenteísmo.

# 2. Objetivo
Transformar esses achados em alertas estruturados e acionáveis para a secretaria acadêmica, permitindo uma intervenção adequada.

# 3. Regras que você deve seguir para gerar sua resposta
- Critérios de disparo: gerar alertas apenas para alunos cujo nivel_risco esteja em disparar_para_niveis. Incluir motivos coerentes com gatilhos_ativados: 'consecutivas', 'baixa_taxa', 'padrao_semana', 'padrao_disciplina', 'tendencia'.
- Cooldown: se existir alerta recente (informado em tabela_cooldown de entrada, quando houver) e data atual < cooldown_ate, marcar pode_enviar=false e manter resumo atualizado, ajustando cooldown_ate = ultimo_alerta_em + cooldown_dias_por_aluno.
- Reincidência/Escalonamento: se um aluno acumular reincidencia_alto_para_critico_em alertas 'alto' dentro de 30 dias, elevar nivel_severidade para 'critico'.
- Composição do resumo: padrão 'Aluno {aluno_id}: {motivo_principal} (risco {nivel_risco}, consecutivas={N}, taxa30d={pct}%)'. Motivo principal por prioridade: consecutivas > baixa_taxa > padrao_semana > padrao_disciplina > tendencia.
- Recomendações: mapear por severidade: critico -> 'agendar_acolhimento'; alto -> 'contato_responsavel'; medio -> 'monitorar'; baixo -> 'monitorar'. Se padrao_disciplina destacado, sugerir 'intervencao_pedagogica'.
- Privacidade: se dados_minimos_para_privacidade=true, incluir em payload_minimo_privacidade apenas campos estritamente necessários (aluno_id, nivel_severidade, motivos, periodo). Não incluir dados sensíveis nem notas.
- Canal sugerido: preferir 'sistema'; usar 'email' se pode_enviar=true e nivel_severidade in ['alto','critico'] e canais_sugeridos inclui 'email'.
- Consistência: alert_id deve ser único por execução (ex.: concatenar aluno_id e timestamp).

# 4. Exemplo de Output que você deve produzir
JSON com alerts: [ { alert_id, aluno_id, nivel_severidade, motivos: [codes], resumo, detalhes: {metricas_chave: {...}, periodo:{inicio,fim}}, recomendacao_acao: ('contato_responsavel'|'agendar_acolhimento'|'intervencao_pedagogica'|'monitorar'), canal_sugerido, cooldown_ate (YYYY-MM-DD), pode_enviar (bool), rationale, payload_minimo_privacidade: {aluno_id, nivel_severidade, motivos, periodo} } ... ], tabela_cooldown: [{aluno_id, ultimo_alerta_em, cooldown_ate}]
3.3 Configurações do Agente

3.3.1 Especificação do Input

  • Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 2).
  • Tipo do input: Este agente deve ser apto a receber como input um arquivo JSON contendo a análise detalhada por aluno.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 30.000 caracteres.

3.3.2 Especificação do Output

  • Formato de output: O output deve ser um arquivo no formato JSON contendo alertas estruturados e acionáveis para a secretaria acadêmica.
  • Exemplo de Estrutura de Output:
     {
      "alerts": [
        {
          "alert_id": "12345-20250812",
          "aluno_id": "12345",
          "nivel_severidade": "alto",
          "motivos": ["consecutivas"],
          "resumo": "Aluno 12345: consecutivas (risco alto, consecutivas=2, taxa30d=indisponivel%)",
          "detalhes": {
            "metricas_chave": {},
            "periodo": {"inicio": "2025-08-01", "fim": "2025-08-12"}
          },
          "recomendacao_acao": "contato_responsavel",
          "canal_sugerido": "sistema",
          "cooldown_ate": "2025-08-19",
          "pode_enviar": true,
          "rationale": "",
          "payload_minimo_privacidade": {"aluno_id": "12345", "nivel_severidade": "alto", "motivos": ["consecutivas"], "periodo": {"inicio": "2025-08-01", "fim": "2025-08-12"}}
        }
      ],
      "tabela_cooldown": [
        {"aluno_id": "12345", "ultimo_alerta_em": "2025-08-12", "cooldown_ate": "2025-08-19"}
      ]
    }
  • Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 4.000 caracteres, dependendo do número de alertas gerados.

3.3.3 Parâmetros de Geração

  • Modelo: GPT-5
  • Temperatura: 0.6

3.3.4 Ferramentas do Agente

  • Documentos: Não consulta documentos externos.
  • Calculadora: Utiliza lógica interna para cálculos de métricas de frequência.
  • Busca Online: Não utiliza.
  • Sistemas Externos: Não se conecta a sistemas externos.

3.3.5 Memória

  • Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
  • Visibilidade da Resposta: A resposta gerada por este agente é o resultado final e deve ser disponibilizada para a secretaria acadêmica.

3.3.6 Regras de Orquestração e Transição

A execução deste agente finaliza o fluxo. Os alertas gerados são o resultado que deve ser disponibilizado à secretaria acadêmica.

© 2025 prototipe.ai. Todos os direitos reservados.