Estamos buscando um desenvolvedor Full Stack experiente em
Node.js e JavaScript Vanilla para refatorar e aprimorar um sistema de monitoramento de padrões em tempo real. O projeto atual já está funcional, mas necessita de uma atualização crucial para suportar um modelo multi-contexto e implementar um robusto sistema de histórico de notificações com ciclo de vida.
O objetivo principal é adaptar o sistema para gerenciar até 6 campeonatos simultâneos (identificados por IDs de 0 a 5), garantindo que cada um opere de forma isolada. Além disso, é fundamental desenvolver um mecanismo para registrar e manter um histórico persistente do ciclo de vida de cada alerta detectado, desde sua criação até a resolução.
Objetivo: Evoluir o sistema de monitoramento de jogos para suportar múltiplos contextos (IDs de campeonatos) e implementar um ciclo de vida de notificações com persistência histórica.
1. Arquitetura de Dados (Backend -
server.js)
O que o programador deve fazer:
Implementar rotas parametrizadas utilizando o padrão /:id/:recurso.
Garantir que os arquivos json sejam lidos e salvos com o sufixo do id (ex:
watchlist_0.json,
watchlist_1.json).
Criar um mecanismo de "Auto-inicialização": se o arquivo para um determinado ID não existir, o servidor deve criar um arquivo vazio ([] ou {}) para evitar erros de leitura.
2. Interface e UX (
index.html e
style.css)
O que o programador deve fazer:
Seletor de Contexto: Inserir um <select id="seletor-campeonato"> no header. A troca de opção deve resetar o estado do frontend e carregar os dados do novo ID.
Aba Histórico: Criar uma nova seção (escondida por padrão) com uma tabela de auditoria.
Filtros de Busca: Implementar campos de busca reativa (input de texto, data e status) sobre a tabela de histórico.
Semântica de Cores: Implementar classes CSS para o Ciclo de Vida:
status-notificacao (Amarelo)
status-monitoramento (Azul)
status-visualizado (Cinza)
status-ignorado (Vermelho)
3. Lógica do Scanner e Regras de Negócio (
app.js)
O que o programador deve fazer:
A. Scanner Inteligente (Regra do EY):
Ao processar a string para conferência de padrões, o sistema deve olhar para o campo ey do json de resultados.
Regra Binária: Apenas 0 e 1 compõem a string de busca.
Regra de Pulo: Valores 2 (adiado), 3 (pendente) e X (cancelado) devem ser ignorados na contagem da sequência, mas mantidos na visualização para o usuário.
B. Gestão de Ciclo de Vida:
Implementar a função registrarNoHistorico(jogo, padrao, status) com a seguinte lógica:
Scanner detecta padrão: Cria registro com status "Notificação".
Clique em 'Acompanhar': Atualiza registro para status "Monitoramento".
Clique em 'Ignorar': Atualiza registro para status "Ignorado" e remove o card da tela.
Finalização: Ao sair da watchlist ou concluir o jogo, status muda para "Visualizado".
4. Segurança e Integridade
Isolamento total: Ao trocar o ID no seletor, o statusCache, a watchlist e o cache de histórico do ID anterior devem ser obrigatoriamente limpos para evitar que dados de um campeonato apareçam no outro.
Plazo de Entrega: No definido