Começo
Visão geral do sistema
Como o NoteBugs está montado, e onde cada regra é aplicada.
Stack
Não há serviço externo obrigatório, fila, cache nem worker. O agendamento do backup é um timer do próprio processo, e não um serviço à parte.
O que acontece antes de qualquer rota
Toda requisição passa pelas mesmas três conferências antes de chegar ao código de negócio, nesta ordem:
- 1Limite de requisições, antes de qualquer consulta ao banco.
- 2Identidade: quem está chamando, resolvido uma vez só por requisição.
- 3Papel: o que essa identidade alcança, conferido contra a matriz de permissões.
Uma rota nova nasce fechada
A regra padrão da matriz é: leitura pede VIEWER, escrita pede MEMBER. Uma rota que não esteja cadastrada continua exigindo identidade: nenhuma nasce aberta.
As regras de negócio são conferidas num lugar só
Cada regra é conferida de dentro da transação, e nunca reescrita rota a rota. É por isso que a API se comporta igual vindo da interface ou de um curl.
A interface aplica essas mesmas regras para avisar antes de a requisição sair, mas quem recusa é sempre o servidor: um cliente desatualizado não contorna nenhuma delas.
Data, hora e fuso
O container roda em UTC. Prazo de card e de epic carrega o fuso em que foi declarado (dueAtZone), e é isso que faz o mesmo dia valer para todo leitor, esteja ele onde estiver.
Mensagem de erro nunca traz data formatada
Formatar no servidor erraria o dia, porque o container está em UTC. Quem formata é o cliente, que conhece o fuso de quem está lendo.