You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Segurança
A rota pública de ingestão (POST /api/events/ingest) passou a ter limite
por token: 120 requisições por minuto. Era a única rota de escrita sem
autenticação de sessão, então uma fonte de monitoramento ruidosa — ou um
token vazado — podia encher a base de eventos sem qualquer freio. O limite
é por token, não por IP: várias ferramentas atrás do mesmo IP não se
penalizam entre si (#30).
Fechados 19 pontos em que uma consulta não filtrava por tenant_id
(contador de views, agendamento de revisão, post-mortem, busca inteligente,
estatísticas de webhook, fluxos GPS e as dez consultas de gamificação).
Nenhum vazava leitura entre organizações no fluxo normal, porque o id vinha
de um documento já filtrado — mas não havia defesa em profundidade: um id de
outra organização chegando pela URL seria aceito (#31).
Adicionado
Interface completa em português e inglês. Doze telas passaram a atender os
dois idiomas: KBView, Configurações, Revisões, Favoritos, Notificações,
Busca Avançada, Busca Inteligente, Integrações (entrada e saída),
Relatórios, Atividade dos Usuários e os editores de fluxo GPS e post-mortem
(#32).
Testes de i18n rodando no CI antes do build: paridade de chaves entre os
dois idiomas, existência real de cada chave citada no código, igualdade dos
placeholders de interpolação e uma catraca que impede telas já traduzidas de
voltarem a ter texto fixo (#32).
Corrigido
Datas passaram a seguir o idioma ativo. Antes o locale era pt-BR fixo em
toda a aplicação, inclusive com o idioma em inglês (#32).
Rótulos de prioridade, tipo de etapa, período e dia da semana viviam em
constantes de módulo, avaliadas uma única vez na carga: não mudavam ao
trocar de idioma sem recarregar a página (#32).
Plural de zero em português. A regra CLDR classifica 0 como singular, o que
produzia "0 resultado encontrado" na tela de busca (#32).
sourceTokens.map(t => ...) sombreava a função de tradução em InboundEventSources: a aba Entrada quebraria com t is not a function ao
renderizar, mas só quando já existisse um token cadastrado — o build passava
normalmente (#32).