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 "Geração de Relatórios de Frequência", uma solução de automação projetada para gerar relatórios de frequência escolar de alunos de forma precisa e acessível para consulta por pais e responsáveis. 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 é automatizar a geração de relatórios de frequência escolar, facilitando o acesso dos pais a essas informações através de uma plataforma segura e acessível.
2. Contexto e Problema
Cenário Atual
Atualmente, as escolas enfrentam desafios na geração de relatórios de frequência escolar que sejam precisos e atualizados. Os pais muitas vezes têm dificuldade em acessar informações sobre a frequência escolar de seus filhos de maneira conveniente e segura.
Problemas Identificados
- Necessidade de relatórios precisos: As escolas precisam garantir que os relatórios de frequência sejam gerados de forma precisa e atualizada.
- Dificuldade de acesso: Os pais enfrentam dificuldades para acessar informações sobre a frequência escolar de seus filhos de forma conveniente e segura.
3. Impactos Esperados
A implementação deste fluxo de automação visa alcançar os seguintes resultados:
- Automatizar a geração de relatórios de frequência de forma precisa e atualizada.
- Facilitar o acesso dos pais às informações de frequência escolar de seus filhos.
- Garantir a segurança e acessibilidade dos dados de frequência escolar.
4. Visão Geral da Solução
O agente de IA para geração de relatórios de frequência escolar processa dados de frequência, aplica regras de validação e normalização, e gera relatórios acessíveis para os pais. 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 na geração de relatórios de frequência escolar.
A solução consiste em um fluxo de automação composto por 4 agentes de IA. O processo inicia com a ingestão e normalização dos dados de frequência e termina com o envio dos relatórios finais para a plataforma dos responsáveis.
A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.
| Agentes | Função Principal |
|---|---|
Agente de Ingestão, Validação e Normalização de Dados de Frequência (RF 1)
| Receber, validar e normalizar dados de frequência escolar. |
Agente de Consolidação e Cálculo de Indicadores de Frequência (RF 2)
| Consolidar dados normalizados e calcular indicadores de frequência. |
Agente de Geração de Relatórios de Frequência para Pais e Responsáveis (RF 3)
| Gerar relatórios detalhados de frequência para cada aluno. |
Agente de Execução de Chamada à API (RF 4)
| Enviar os relatórios finais para a plataforma dos responsáveis. |
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 os pais receberão. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente de Ingestão, Validação e Normalização de Dados de Frequência
1.1 Tarefa do Agente
Receber arquivos de frequência, validar a estrutura e conteúdo, normalizar formatos e produzir um dataset padronizado e confiável para cálculo de indicadores.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo arquivos de frequência escolar em formatos CSV/JSON/Planilha. Esses arquivos contêm registros de presença dos alunos por turma e período.
# 2. Objetivo
Validar a estrutura e conteúdo dos arquivos de frequência, normalizar os formatos e produzir um dataset padronizado e confiável para cálculo de indicadores.
# 3. Regras que você deve seguir para gerar sua resposta
- Validação de esquema: rejeitar como bloqueante se faltar qualquer um dos campos mínimos (aluno_id, nome_aluno, turma_id, data, status_presenca).
- Datas: converter para ISO-8601 (AAAA-MM-DD); considerar inválido qualquer registro fora do período [data_inicio, data_fim] (marcar como erro_bloqueante).
- Calendário: ignorar (não contar) dias não letivos (finais de semana e feriados oficiais recebidos no calendário); se calendário não for fornecido, assumir sábados e domingos como não letivos.
- Status: normalizar códigos aceitos: {P|Presente}, {F|Falta}, {J|Falta Justificada}, {A|Atraso}; qualquer outro valor deve ser mapeado para 'desconhecido' e listado em avisos_nao_bloqueantes com contagem por turma.
- Duplicidade: para a mesma combinação (aluno_id, data), manter 1 registro; se houver múltiplos, priorizar o mais recente pelo campo de atualização se existir; caso contrário, aplicar prioridade por status na ordem P > J > F > A e registrar ocorrência em avisos_nao_bloqueantes.
- Horas parciais: se hora_entrada e hora_saida existirem, marcar campo presenca_parcial=true quando a permanência for menor que 50% da carga diária informada (se informada via parâmetro); caso carga não exista, não calcular parcial.
- Consistência de aluno: se nome_aluno divergente para o mesmo aluno_id, padronizar pelo nome mais frequente no período e listar a divergência em avisos_nao_bloqueantes.
- Sanitização: remover espaços excedentes, normalizar acentuação em nomes e aceitar somente UTF-8.
- Saída determinística: ordenar dataset_normalizado por turma_id, nome_aluno, data. 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 arquivos de frequência escolar 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 na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: O input inicial para o fluxo é um arquivo de frequência escolar, que é processado para gerar um dataset padronizado.
-
Formatos Suportados: Esse agente deve ser capaz de receber arquivos nos formatos:
.csv,.json,.xlsx. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 100.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um objeto JSON contendo o dataset normalizado, erros e avisos de validação.
-
Exemplo de Estrutura de Output:
{ "dataset_normalizado": [ {"aluno_id": "001", "nome_aluno": "João Silva", "turma_id": "3A", "data": "2025-11-01", "status_presenca": "P"} ], "schema_valid": true, "erros_bloqueantes": [], "avisos_nao_bloqueantes": [ {"tipo": "status_desconhecido", "detalhe": "3 ocorrências", "turma_id": "3A"} ], "totais_processados": {"turma_3A": 30} } - Número de caracteres esperado: O JSON de output terá um tamanho aproximado de 5.000 caracteres.
1.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.5
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
- 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 deve ser visível para o Agente de Consolidação e Cálculo de Indicadores de Frequência (RF 2).
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Consolidação e Cálculo de Indicadores de Frequência (RF 2).
RF 2. Agente de Consolidação e Cálculo de Indicadores de Frequência
2.1 Tarefa do Agente
Consolidar o dataset normalizado por aluno/turma/período e calcular indicadores-chave de presença, ausência e alertas.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo um JSON contendo o dataset normalizado de frequência escolar. # 2. Objetivo Consolidar o dataset por aluno/turma/período e calcular indicadores-chave de presença, ausência e alertas. # 3. Regras que você deve seguir para gerar sua resposta - Dias letivos: total_dias_letivos é o número de dias no período que não são fins de semana nem feriados. - Cômputo: presencas = contagem de status P; faltas = contagem de status F; faltas_justificadas = contagem de status J; atrasos = contagem de status A. - Parcial: se consideração_de_parcial=true e presenca_parcial=true, contar como 0,5 presença (arredondamento no fim: duas parciais = 1 presença). Se parâmetro ausente, ignorar parciais no cômputo. - Frequência: frequencia_percentual = presencas_ponderadas / total_dias_letivos * 100, com 2 casas decimais; se total_dias_letivos=0, definir frequencia_percentual=null e motivo em motivos_alerta. - Justificativas: faltas justificadas não viram presença; manter métrica separada e incluí-las em motivos_alerta apenas informativamente. - Alertas: alerta_baixa_frequencia=true quando frequencia_percentual < limiar_alerta_frequencia (padrão 75% se não informado); motivos_alerta deve listar: 'frequencia_abaixo_do_limiar', 'dias_sem_dado', 'total_dias_letivos_zero' quando aplicável. - Datas sem dado: identificar dias letivos no período sem registro para o aluno e listar em datas_sem_dado; não contam como presença nem ausência se não houver política explícita. - Determinismo: ordenar indicadores_por_aluno por turma_id e nome_aluno; incluir timestamp_processamento no output.
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 JSON contendo o dataset normalizado de frequência escolar.
-
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 texto com até 50.000 caracteres.
2.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON com indicadores de frequência por aluno e turma.
-
Exemplo de Estrutura de Output:
{ "indicadores_por_aluno": [ {"aluno_id": "001", "nome_aluno": "João Silva", "turma_id": "3A", "frequencia_percentual": 92.5, "alerta_baixa_frequencia": false} ], "indicadores_por_turma": [ {"turma_id": "3A", "media_frequencia": 90.0} ], "datas_sem_dado": ["2025-11-01"], "parametros_utilizados": {"limiar_alerta_frequencia": 75} } - Número de caracteres esperado: O JSON de output terá um tamanho aproximado de 3.000 caracteres.
2.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.5
2.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Utiliza lógica interna para cálculo de indicadores.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
2.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 deve ser visível para o Agente de Geração de Relatórios de Frequência para Pais e Responsáveis (RF 3).
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Geração de Relatórios de Frequência para Pais e Responsáveis (RF 3).
RF 3. Agente de Geração de Relatórios de Frequência para Pais e Responsáveis
3.1 Tarefa do Agente
Produzir relatórios claros e acessíveis para cada aluno, com linguagem simples, resumos, detalhes por dia e orientações quando há alertas.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON com indicadores de frequência por aluno e turma.
# 2. Objetivo
Produzir relatórios claros e acessíveis para cada aluno, com linguagem simples e orientações quando há alertas.
# 3. Regras que você deve seguir para gerar sua resposta
- Foco individual: cada relatório deve conter apenas dados do aluno correspondente; nunca incluir dados de outros alunos da turma.
- Linguagem: títulos e textos em pt-BR, diretos e sem jargões; quando frequencia_percentual for null, explicar o motivo de forma clara.
- Ícones/cores (quando HTML/Markdown): P=verde, F=vermelho, J=amarelo, A=azul; manter legenda.
- Privacidade: omitir justificativas médicas detalhadas; quando mostrar_justificativas=true, exibir apenas rótulos genéricos ('atestado entregue', 'compromisso familiar'), sem dados sensíveis.
- Datas: exibir no formato DD/MM/AAAA; período no cabeçalho como 'DD/MM/AAAA a DD/MM/AAAA'.
- Determinismo: ordenar dias crescentemente; limitar resumo a métricas principais; incluir nota metodológica explicando como a frequência é calculada.
- Acessibilidade: garantir que o relatório possa ser lido em dispositivos móveis (linhas curtas, seções curtas) e incluir alternativa em texto puro no json_compacto. 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 JSON com indicadores de frequência por aluno e turma.
-
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 texto com até 20.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: O output deve ser um relatório formatado em Markdown/HTML para cada aluno.
-
Exemplo de Estrutura de Output:
{ "cabecalho": {"nome_aluno": "João Silva", "turma": "3A", "periodo": "01/11/2025 a 30/11/2025", "frequencia_percentual": 92.5}, "resumo": {"presencas": 18, "faltas": 2, "faltas_justificadas": 1, "atrasos": 1}, "calendario_resumido": [ {"data": "01/11/2025", "status": "P"} ], "alertas": ["Frequência abaixo do limiar"], "orientacoes": "Recomenda-se reforçar o acompanhamento da frequência escolar.", "formato_renderizado": "html", "json_compacto": {"aluno_id": "001", "frequencia_percentual": 92.5} } - Número de caracteres esperado: O relatório terá um tamanho aproximado de 2.000 caracteres.
3.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.5
3.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.
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 deve ser visível para o Agente de Execução de Chamada à API (RF 4).
3.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Execução de Chamada à API (RF 4).
RF 4. Agente de Execução de Chamada à API
4.1 Tarefa do Agente
Enviar o relatório final de cada aluno para a plataforma dos responsáveis por meio de endpoint previamente configurado.
4.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo o relatório final de frequência escolar de cada aluno.
# 2. Objetivo
Enviar o relatório para a plataforma dos responsáveis por meio de endpoint previamente configurado.
# 3. Regras que você deve seguir para gerar sua resposta
- Enviar o payload para o endpoint configurado, incluindo aluno_id, período, e conteúdo_serializado.
- Aguardar a resposta do endpoint e registrar o status_code e id_externo/URL de consulta do relatório no portal.
- Em caso de falha na chamada da API, o processo deve ser interrompido e o erro registrado para análise manual.
# 4. Exemplo de Output que você deve produzir
{
"status_code": 200,
"id_externo": "https://escola.edu.br/relatorios/001",
"body_resposta": "Relatório enviado com sucesso."
} 4.3 Configurações do Agente
4.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 3).
- Tipo do input: Este agente deve ser apto a receber como input o relatório final de frequência escolar de cada 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 texto com até 10.000 caracteres.
4.3.2 Especificação do Output
- Formato de output: O output deve ser um objeto JSON contendo o resultado da chamada à API.
-
Exemplo de Estrutura de Output:
{ "status_code": 200, "id_externo": "https://escola.edu.br/relatorios/001", "body_resposta": "Relatório enviado com sucesso." } - Número de caracteres esperado: O JSON de output terá um tamanho aproximado de 500 caracteres.
4.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: Não se aplica (uso de ferramenta)
4.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: O agente deverá enviar o relatório para a API externa configurada e retornar o status recebido como resposta.
4.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções não são visíveis para agentes subsequentes.
- Visibilidade da Resposta: A resposta (resultado da chamada à API) é o entregável final e não é passada para outros agentes internos.
4.3.6 Regras de Orquestração e Transição
A execução deste agente finaliza o fluxo. O status da chamada à API é o resultado que deve ser disponibilizado ao usuário.