Feature: Gestão de Inscrições
Introdução ao documento
Este documento descreve a funcionalidade de gestão e visualização de inscrições de cursos.
Versionamento
- Versão do documento: 1.0.0
- Última atualização: 2026-03-09
- Responsável: Marivaldo Vinicius
Referencial teórico
Visão geral
A feature de gestão de inscrições permite visualizar e exportar dados de inscrições de cursos. Dados são provenientes do Redshift (data warehouse), processados e cacheados para otimizar performance. Sistema suporta visualização no dashboard administrativo e exportação de dados.
Atores envolvidos
- Administrador: Visualiza e exporta dados de inscrições
- Facilitador Limitado: Visualiza inscrições com colunas restritas (conforme configuração)
- Sistema: Processa dados do Redshift e mantém cache atualizado
Pré-condições
- Conexão com Redshift configurada e operacional
- Cache Laravel configurado
- Jobs de atualização de cache executados periodicamente
- Permissões adequadas para visualização (roles Spatie)
Fluxo principal
-
Atualização de cache (background)
- Job
RefreshDataouInscricoesCacheJobé executado - Conecta ao Redshift e busca dados da tabela
inscricoes - Comprime dados com gzip para otimizar armazenamento
- Armazena no cache Laravel com chave
inscricoes55
- Job
-
Visualização no dashboard
- Administrador acessa página de inscrições no admin panel
- Frontend React consome
/api/v1/inscricoes - API retorna dados comprimidos do cache
- Frontend descomprime e exibe dados em tabela
-
Exportação de dados
- Administrador solicita exportação via
ExportFileController - Sistema gera arquivo com dados de inscrições
- Arquivo é disponibilizado para download
- Administrador solicita exportação via
Fluxos alternativos
Cache vazio
- Se cache não existe, API retorna
204 No Content - Frontend exibe mensagem informando ausência de dados
- Administrador pode disparar atualização manual de cache
Dados desatualizados
- Cache pode estar desatualizado se jobs não executaram recentemente
- Administrador pode forçar atualização via endpoint
/api/v1/cache/inscricoes(requer autenticação) - Job é disparado assincronamente para atualizar cache
Permissões limitadas
- Usuário com role
Facilitador_Limitadovê apenas colunas configuradas - Configuração de colunas visíveis em
VisibleColumnsConfig - Por padrão, email é oculto para facilitadores limitados
Regras de negócio
- Dados somente leitura: Inscrições são consultadas do Redshift, não editadas no dashboard
- Cache comprimido: Dados são sempre comprimidos com gzip antes de armazenar
- Atualização assíncrona: Cache é atualizado via jobs, não bloqueia requisições
- Controle de colunas: Facilitadores limitados veem apenas colunas permitidas
- Filtro por ano: Jobs podem processar dados de ano específico via parâmetro
year
Estados possíveis
- Cache atualizado: Dados disponíveis e atualizados
- Cache vazio: Nenhum dado disponível
- Cache desatualizado: Dados existem mas podem estar antigos
- Processando: Job de atualização em andamento
Endpoints envolvidos
-
GET
/api/v1/inscricoes- Retorna dados de inscrições comprimidos- Response: Dados gzip (Content-Encoding: gzip)
- Status: 200 (com dados) ou 204 (cache vazio)
-
GET
/api/v1/cache/inscricoes- Dispara atualização de cache (autenticado)- Query params:
year(opcional) - Response: Confirmação de início do job
- Query params:
-
GET
/admin/exportar/inscritos- Exporta dados de inscrições (admin panel)
Dados afetados
- Cache Laravel: Chave
inscricoes55armazena dados comprimidos - Redshift: Tabela
inscricoes(somente leitura) - Nenhuma tabela MySQL: Dados não são persistidos localmente
Integrações externas
- Redshift (PostgreSQL): Data warehouse para consultas analíticas
- Tabela:
inscricoes - Acesso: Via jobs assíncronos
- Tabela:
Jobs relacionados
- RefreshData::refreshInscricoes(): Atualiza cache de inscrições
- InscricoesCacheJob: Job dedicado para atualização de cache
- Suporta parâmetro
yearpara filtrar por ano
- Suporta parâmetro