O Painel AVA é um middleware integrador entre SUAP e Moodle, além disso, também tem um dashboard com todos os cursos e inscrições que integrou, desta forma cada usuário tem acesso aos cursos/diários em que está inscrito sem precisar procurar em vários Moodles.
Neste projeto, além do Painel AVA, foi colocado um Fake SUAP, para emular o funcionado da integraçãod o SUAP ou outro sistema acadêmico, e um par de Moodles (ZL e Presencial), para emular o cenário de ter mais um Moodle a integrar.
Neste projeto usamos o Docker e o Docker Compose Plugin (não o docker-compose 😎). O setup foi todo testado usando o Linux e Mac OS.
Os containeres terão o prefixo
ism-
, que é um acrônimo para "Integrador Suap Moodle".
Como desenvolvedor - no local_settings.py
do SUAP configure as variáveis (MOODLE_SYNC_URL
e MOODLE_SYNC_TOKEN
), no Painel AVA configure o mesmo token que você configurou no SUAP. Para cada Moodle a ser integrado instale o plugin auth_suap
e cadastre no Painel AVA como um "Ambiente".
Como usuário - no SUAP, o secretário acadêmico autoriza cada diário a ser integrado ao Moodle, na página do diário no SUAP o professor clica em "Sincronizar" e a mágica se faz, ou seja, o SUAP envia para o Painel AVA que, com base na sigla do campus, decide para qual Moodle encaminhar a requisição de integração, o Moodle cadastra/atualiza as categorias (Campus, Diário, Semestre, Turma), o curso, os pólos como grupos do curso e os professores e alunos, então inscreve os professores (Formador e Tutor) e os alunos, por fim, arrola os alunos nos grupos de seus respectivos pólos.
As variáveis de ambiente no SUAP têm as seguintes definições:
MOODLE_SYNC_URL
- URL do Painel AVAMOODLE_SYNC_TOKEN
- o token deve ser o mesmo que você vai configurar ao cadastrar o SUAP no Painel AVA, é usada para autenticação do SUAP, guarde segredo desta chave.
Este docker-compose assume que você não tenha aplicações rodando na porta 80, ou seja, pare o serviço que está na porta 80 ou faça as configurações necessárias vocês mesmo. O script _/deploy
já cria automaticamente uma entrada no /etc/hosts, caso não exista, que aponta para localhost. Isso é necessário para simplificar o cenário de desenvolvimento local.
mkdir ava
cd ava
# Baixe o projeto
git clone git@github.com:cte-zl-ifrn/painel__ava.git painel__ava
cd painel__ava
# Baixa as dependencias, instala o sistema, um suap fake e 1 moodle para teste
_/deploy
# Se você usa o VSCode
code painel__ava.code-workspace
O Painel estará disponível em http://ava/painel, o primeiro usuário a acessar será declarado como superusuário e poderá fazer tudo no sistema.
O Moodle estará disponível em http://ava/, o usuário/senha do administrador serão admin/admin.
Caso você deseje fazer debug do Painel AVA, tente:
_/painel/down
_/painel/debug
- É obrigatório ao menos um dos escopos
identificacao
ouemail
, os quais retornam os atributos:identificacao
- NUMÉRICO - é o IFid do usuário, no caso: matrícula para alunos ou servidores e CPF para demais colaboradoresnome_social
- ALFANUMÉRICO - nome social, este é o informado pelo indivíduo, não se trata de apelido, mas sim de nome social, conforme legislaçãonome_usual
- ALFANUMÉRICO - nome usual, escolhido pelo indivíduo na interface do SUAPnome_registro
- ALFANUMÉRICO - nome civil, este é conforme está no registro civil do indivíduonome
- ALFANUMÉRICO - nome completo, para compatibilidade com APIs que não sabem tratar nome e sobrenome separadosprimeiro_nome
- ALFANUMÉRICO - primeiro nome, para compatibilidade com APIs que não sabem tratar nome e sobrenome juntosultimo_nome
- ALFANUMÉRICO - último nome, para compatibilidade com APIs que não sabem tratar nome e sobrenome juntoscampus
- ALFANUMÉRICO - sigla do campus do aluno ou servidor, caso exista, não se aplica aos demais colaboradoresemail_preferencial
- EMAIL - email preferencial para comunicação, caso exista, para servidores é o mesmo que oemail
, para alunos e demais colaboradoresemail_secundario
, salvo se a instituição tiver criado um mecanismo que permita ao usuário escolher qual é seu email preferencial.email
- EMAIL - email do servidor, caso exista, apenas para servidoresemail_secundario
- EMAIL - email pessoal, caso exista, o mesmo usado para recuperação de senha, para todosemail_google_classroom
- EMAIL - email do Google Suite, caso exista, apenas para alunos e servidoresemail_academico
- EMAIL - email da Microsoft 365, caso exista, apenas para alunos e servidoresfoto
- URL - URL da foto no SUAP, assim poderá ser usada a mesma foto em todos os ambientes
- Já o escopo
documentos_pessoais
retorna os atributos:cpf
- NUMÉRICO - CPF do indivíduo, útil para os casos de integração com gov.br ou para informar que possui outras contas no sistema. Poderá ser necessário novo login para trocar de conta.data_de_nascimento
- DATA - data de nascimento, ajuda a identificar indivíduos menos de idade, entre outrossexo
- ALFANUMÉRICO - sexo- No futuro poderá retornar dados de necessidades especiais, assim os sistemas já adaptarão as interfaces a estas necessidades.
O design ficará como os designs web e mobile.
- suap sync (local)
- importar as inscrições (alunos e professores) dos diários
- exportar as presenças dos alunos
- exportar as notas dos alunos
- suap attendances (block)
- configurar o modelo de cálculo de presenças
- permitir que os professores visualizem as presenças
- permitir que os alunos visualizem as presenças
- suap auth (auth)
- autênticar usando o oauth do SUAP
- auto inscrever os alunos ao fazer login
feat:
novas funcionalidades.fix:
correção de bugs.refactor:
refatoração ou performances (sem impacto em lógica).style:
estilo ou formatação de código (sem impacto em lógica).test:
testes.doc:
documentação no código ou do repositório.env:
CI/CD ou settings.build:
build ou dependências.