-
Header
- Taxa de processamento atual
- Pegar todos os eventos do dia
- Dividir pela hora atual do dia? 0.5 eventos / hora?
- Taxa de processamento atual
-
Tabela
- Tipo, Status, Criacao, Processamento, Duracao
- Todos com ordenacao ASC / DESC
-
Filtros
- Tipo (multi-select)
- Criacao (range de data)
- Processamento (range de data)
- Select de Status (exclusivo)
- Duracao -> = X ou > X ou < X
-
Drawer com detalhes:
- Body/data
- Erro completo
- Tasks associadas + status delas
- Reprocessamento?
-
Selecionar todos os filtrados e reprocessa-los?
- Preview com o count ou resumo de tudo que vai ser feito
- Ao confirmar, voltar para a tela com os mesmos filtros aplicados para ir vendo o progresso...
-
Diferentes niveis de prioridade para o processamento dos eventos?
Adicionei Eventos de Domínio no projeto!
Estou desenvolvendo...
Cada evento representa algo que aconteceu no sistema e serve como trigger para realização de outras tarefas.
Exemplos:
1️⃣ Quando o usuário acessa o endpoit de redefinição de senha, o evento ResetPasswordTokenCreatedDomainEvent é emitido. O handler desse evento enfileira enfileira uma tarefa que envia para o email do usuário o link de redefinição de senha.
2️⃣ Quando um professor adiciona a nota de um aluno no sistema, o evento ExamGradeNoteAddedDomainEvent é emitido. O handler desse evento enfileira uma tarefa que cria uma notificação pro aluno, informando que uma nova nota naquela disciplina foi adicionada.
3️⃣ Quando uma instituição é criada, o evento InstitutionCreatedDomainEvent é emitido. O handler desse evento enfileira uma tarefa que realiza o seed de dados para aquela instituição, facilitando a vida de quem está apenas testando o sistema.
Esses eventos podem servir no futuro para o disparo de WebHooks, deixando a integração com outros sistemas mais dinâmica.
-
A API gera os eventos
-
O Daemon os processa e enfileira as tarefas
-
O Daemon também processa as tarefas depois
-
Uso o LISTEN/NOTIFY do PostgreSQL
-
Tenho testes de integração validando emissão e processamento de eventos e tarefas
-
Criei uma tela pro usuário Admin conseguir visualizar tudo isso
-
Filtrar por instituição / por evento / por tarefa / por erros
-
Consigo reprocessar um evento / tarefa
Exemplos de eventos:
-
StudentCreatedDomainEvent
-
TeacherCreatedDomainEvent
-
ExamGradeNoteAddedDomainEvent
-
InstitutionCreatedDomainEvent
-
PendingUserRegisterCreatedDomainEvent
-
ResetPasswordTokenCreatedDomainEvent
-
Elestio Moodle: Free Open-source Learning Management System (LMS)
-
Diferenças entre LMS (Moodle, Classroom e Teams)
-
Classroom, Edmodo, Moodle, Schoology e Teams... Que LMS escolher?
-
Salvar os eventos de dominio na mesma transacao com o banco
-
Algo vai processar os eventos depois
- Mostrar no front tudo que ta sendo processado
- Mostrar coisas com erro tbm
-
Implementar retentativas automaticas e manuais
-
Rotinas para limpar essas tabelas todo dia meia noite?
- Jogar para tabelas __processed
- OpenTelemetry + Jaeger
- Contar quantos requests foram feitos durante a execucao dos testes de integracao
- Endpoints + quantas chamadas tiveram + qual o retorno (sucesso vs erro)
- Token de reset de senha expirado (setar pro teste)
- Locked out
- Code, not tutorial hell