O Integrador AVA é um middleware que conecta Sistemas de Gestão Acadêmica (SGA) ao Moodle. Suporta o SUAP como padrão principal — pronto de fábrica para o IFRN — e o padrão SGA genérico para instituições que usam SIGAA, qAcadêmico ou outro sistema acadêmico.
O Integrador recebe dados de um SGA e os sincroniza com o Moodle. Ele suporta atualmente duas convenções de payload e três estratégias de integração, cada uma viabilizada por um broker próprio.
Suap — padrão específico do IFRN, com estrutura de campos bem definida e políticas institucionais pré-configuradas. Funciona “pronto de fábrica” para quem usa o SUAP.
SGA — padrão genérico para qualquer Sistema de Gestão Acadêmica. Mais flexível, porém requer personalização do middleware por parte da instituição.
| Broker | Payload recebido | Plugin Moodle | Payload retornado | Customização necessária | Status |
|---|---|---|---|---|---|
suap2local_suap |
Suap | local_suap |
Suap | Nenhuma | Implementado |
suap2tool_sga |
Suap | tool_sga |
Suap | Mínima (config.) | Em elaboração |
sga2tool_sga |
SGA (genérico) | tool_sga |
Suap | Requer personalização | Em elaboração |
suap2local_suap — Suap → plugin local_suapRecebe payload no padrão Suap, integra com o plugin Moodle local_suap e retorna no
padrão Suap. Estratégia mais direta, sem necessidade de customização de payload.
| Operação | Método | URL | Descrição |
|---|---|---|---|
| Enviar diário | POST | /api/enviar_diarios/ |
Sincroniza matrículas, papéis e coortes |
| Baixar notas | GET | /api/baixar_notas/ |
Retorna notas dos alunos do Moodle |
local_suapsuap2tool_sga — Suap → plugin tool_sgaRecebe payload no padrão Suap, traduz para o padrão SGA e integra com o plugin
Moodle tool_sga. Em elaboração.
tool_sgasga2tool_sga — SGA → plugin tool_sgaRecebe payload no padrão SGA genérico e integra com o plugin Moodle tool_sga.
Estratégia mais flexível: qualquer SGA pode ser integrado com a personalização adequada.
Em elaboração.
tool_sga| Plugin Moodle | Brokers que o usam |
|---|---|
local_suap |
suap2local_suap |
tool_sga |
suap2tool_sga, sga2tool_sga |
Após instalar o plugin no Moodle, configure:
token do Ambiente no Integrador (Passo 3).| Variável | Obrigatória | Descrição | Padrão |
|---|---|---|---|
SUAP_INTEGRADOR_KEY |
Sim | Token que o SGA deve enviar no header Authentication |
changeme |
DJANGO_SECRET_KEY |
Sim | Chave secreta Django (use valor aleatório em produção) | changeme |
SUAP_BASE_URL |
Não | URL base do SUAP (usada para redirect de logout) | https://suap.ifrn.edu.br |
DJANGO_LANGUAGE_CODE |
Não | Código do idioma padrão do sistema | pt-br |
Atenção: troque
changemepor valores secretos reais antes de ir para produção.
O Integrador AVA possui suporte nativo a múltiplos idiomas com catálogos gettext completos para:
A seleção do idioma ocorre automaticamente via cabeçalho HTTP Accept-Language ou sessão/cookie de usuário.
Acesse /admin/integrador/ambiente/add/ e cadastre:
| Campo | Descrição | Exemplo |
|---|---|---|
nome |
Nome descritivo | Moodle Produção ZL |
url |
URL base do Moodle (sem barra final) | https://ava.zl.ifrn.edu.br |
token |
Token configurado no plugin (idêntico ao definido lá) | token_secreto_do_plugin |
expressao_seletora |
Expressão rule_engine para seleção automática do ambiente |
campus.sigla == "ZL" |
ordem |
Prioridade (menor = maior prioridade) | 1 |
active |
Se o ambiente está ativo | true |
A seleção acontece avaliando
expressao_seletorade cada ambiente ativo em ordem crescente deordem. O primeiro que corresponder ao payload é usado.
Guia completo do admin: docs/admin/
O SGA deve chamar os endpoints com:
Authentication: Token <SUAP_INTEGRADOR_KEY>application/jsonExemplo completo para suap2local_suap:
POST https://<integrador>/api/enviar_diarios/
Authentication: Token <SUAP_INTEGRADOR_KEY>
Content-Type: application/json
{
"campus": {"id": 1, "sigla": "ZL", "descricao": "Campus Zona Leste"},
"curso": {"id": 1, "codigo": "15806", "nome": "Sistemas Operacionais Abertos"},
"turma": {"id": 2, "codigo": "20261.6.15806.1E"},
"componente": {"id": 1, "sigla": "TEC.1023","descricao": "Bancos de Dados"},
"diario": {"id": 2, "sigla": "TEC.1023","situacao": "Aberto"}
}
GET https://<integrador>/api/baixar_notas/?campus_sigla=ZL&diario_id=2
Authentication: Token <SUAP_INTEGRADOR_KEY>
Para exemplos completos de payload, consulte requests.http na raiz do projeto.
| Seção | Conteúdo |
|---|---|
| Modelos de dados | Ambiente, Solicitacao — campos, comportamentos, manager |
| Guia do administrador | Django admin: Ambientes, Solicitações, Cohorts |
| Broker suap2local_suap | API completa: endpoints, payload, stack de decorators |
| Broker suap2tool_sga | Em elaboração |
| Broker sga2tool_sga | Em elaboração |
| Guia de testes | TestCases, receitas QA, cobertura, mock HTTP |
| Mock HTTP de Moodle | LocalSuapHTTPMock, ToolSgaHTTPMock por broker |