ESPECIFICAÇÃO do projeto
linguagem: python (django)
banco de dados: postgrensql
bootstrap: a definir (Responsivo)
especificação das páginas
(público) index/principal
duas sessões divididas em duas colunas:
apresentação ocupando 70% da página: texto e imagens estáticas sobre o institucional da empresa; e
notícias ocupando 30% da página: conteúdo dinâmico apresentado em cards sobre notícias cadastradas na base de dados noticias:titulo e noticias:conteudo. O filtro noticias:conteudo == null.
O crud será realizado com django admin.
Vide anexo
(público) área logada
página com formulário para usuário e senha, para acessar conteúdo da área logada da plataforma e/ou botão de acesso para cadastro do usuário (primeiro acesso). A base dos usuários devem ser utilizados as tabelas padrão de usuário do DJANGO (auth_user).
Função de "esqueci senha", enviar senha para o email cadastrado.
Vide anexo
(público) cadastrar usuário
página com formulário para cadastrar um novo usuário, com três campos adicionais:
whatsapp: numero do whatsapp;
telegram: número do telegram;
notificação: campo binário;
a base dos usuários devem ser utilizados as tabelas padrão de usuário do django (auth_user).
(Interno) grupo
cada usuário deve conter grupos de permissões que autoriza a visualização do dispositivo e acesso aos menu: dados gerais, gráficos e localização.
Vide anexo
(área logada) meus devices > dados gerais (aba)
(_partials) filtros usuários: nome, ordem e device.
(_partials) Notificacoes: Icon mensagens.
Ao clicar na linha do dispositivo, abrir os dados detalhados estilo spam contendo todos os campos da tabela dispositivo.
Página somente de visualização! A plataforma deve respeitar 2 grupos de filtros:
Filtro da Plataforma: Dispositivos autorizados no grupo de autorização, vinculado ao usuário logado.
Filtro do Usuário: Filtros selecionados na tela (_partials).
As inclusões, alterações e exclusões não deverão ser implementadas na plataforma.
Especificações dos campos:
dispositivo (table dispositivo): nome do dispositivo;
valor (table coleta): último valor registrado do dispositivo;
alarme (table coleta): true = icon vermelho | false = icon verde;
tamanho (table dispositivo): três valores. High = icon cheio | half = icon metade | low = icon vazio
gráfico: link on-click navega para aba "gráfico" filtrando o dispositivo;
localização: link on-click navega para aba "localização" filtrando o dispositivo;
cor da linha: coleta:violacao = true, destacar cor da linha.
IMPORTANTE! Os dados dos campos da tabela devem ser atualizados sem necessidade de recarregar a página completa “F5”.
Vide anexo
(área logada) meus devices > gráficos (aba)
(_partials) filtros: nome, ordem e device.
(_partials) Notificacoes: Icon mensagens.
Página somente de visualização! A plataforma deve respeitar 2 grupos de filtros:
Filtro da Plataforma: Dispositivos autorizados no grupo de autorização, vinculado ao usuário logado.
Filtro do Usuário: Filtros selecionados na tela (_partials).
As inclusões, alterações e exclusões não deverão ser implementadas na plataforma.
Gráfico 2d com os dados exemplo <tabela>:<campo>:
eixo x = coleta:data e
eixo y = coleta:valor, dispositivo:alarme_alta, dispositivo:alarme_baixa.
Recomendação utilizar o “
chart.js”.
IMPORTANTE! Os dados dos campos da tabela devem ser atualizados sem necessidade de recarregar a página completa “F5”.
Vide anexo
(área logada) meus devices > localização (aba)
(_partials) filtros: nome, ordem e device.
(_partials) Notificacoes: Icon mensagens.
Página somente de visualização! A plataforma deve respeitar 2 grupos de filtros:
Filtro da Plataforma: Dispositivos autorizados no grupo de autorização, vinculado ao usuário logado.
Filtro do Usuário: Filtros selecionados na tela (_partials).
As inclusões, alterações e exclusões não deverão ser implementadas na plataforma.
Mapa com pin contendo os dispositivos listados com o último dados da localização contida coleta:latidude e coleta:longitude.
Em cada pin do dispositivo listado, conter um card contendo as informações :
dispositivo = dispositivo:nome
valor = coleta:valor
data = coleta:data
cor do card = coleta:alarme true=vermelho | true=cinza ou neutro
importante! os dados dos campos da tabela devem ser atualizados sem necessidade de recarregar a página completa “f5”.
Vide anexo
api
rota para consulta da coleta mais recente do dispositivo. A requisição só pode ocorrer a cada X minutos, caso ocorra mais de uma chamada na API antes de X minutos, retorna erro 429. O tempo X minutos deve ser parametrizado no campo DISPOSITIVO:API_TEMPO.
O acesso a api deve ser autorizado com token armazenado no dispositivo:api_token.
Retorno formato json com todos os campos da tabela coleta.
banco de dados
VIDE ANEXO
refatoração
VIDE ANEXO
CRONOGRAMA
Fase 1: INDEX e USUÁRIOS
Fase 2: MEUS DEVICES > DADOS GERAIS
Fase 3: MEUS DEVICES > GRÁFICOS
Fase 4: MEUS DEVICES > LOCALIZAÇÃO
Fase 5: API
Prazo de Entrega: Não estabelecido