SOS-RS / frontend

Auxílio RS: Projetos de Resposta a Emergências por Chuvas e Alagamentos
https://sos-rs.com
MIT License
596 stars 318 forks source link

[Sugestao] Adicionar filtro de cidades #87

Open kpoerista opened 6 months ago

kpoerista commented 6 months ago

Adicionar filtro de cidade para que outras cidades possam utilizar. Moro em Rio Grande e gostaria de Adicionar os abrigos daqui. Obrigado.

antoniolucasnobar commented 6 months ago

@kpoerista tu fala de filtro na tela inicial? Eu notei que a tela inicial já tem uma busca que parece ser global.

Notei ainda que diversos abrigos não têm a cidade definida, o que dificultaria o uso do filtro (preciso olhar os modelos para entender se temos a informação da cidade especificada).

EDIT: pelo que a API retorna, temos a latitude e longitude, logo teria de estudar como descobrir qual a cidade a partir disso para aplicar o filtro.

Explica por favor o que te impede de cadastrar os abrigos de Rio Grande.

kpoerista commented 6 months ago

O site não impede o cadastro, porém dificulta a busca, pois rio grande se confunde com rio grande do Sul. Criando um filtro por cidade facilitaria a busca. Se possível ir além, criando link sos-rs.com/cidade facilitaria mais ainda o compartilhamento

filipepacheco commented 6 months ago

Concordo que essa é uma das demandas mais importantes por agora. Pra isso, precisamos normalizar o banco de dados e inserir as informações de cidade e CEP. Já está no nosso backlog com certa prioridade, inclusive passando pelos voluntários de UX.

henriquecfreitas commented 6 months ago

@filipepacheco estou à disposição para atuar nessa frente no banco de dados / API

henriquecfreitas commented 6 months ago

Encontrei uma API gratuita (1 request/segundo) para o geocode reverso, para obter o nome da cidade e o CEP a partir das coordenadas de latitude e longitude: https://geocode.maps.co

antoniolucasnobar commented 6 months ago

E para o preenchimento das cidades no filtro, qual a ideia? Vamos armazenar no banco? usar alguma API?

Eu encontrei essa API do IBGE: https://servicodados.ibge.gov.br/api/docs/localidades

nela temos apis por municipios

https://servicodados.ibge.gov.br/api/v1/localidades/estados/RS/municipios

e essa outra por distritos:

https://[servicodados.ibge.gov.br/api/v1/localidades/estados/RS/distritos](https://servicodados.ibge.gov.br/api/v1/localidades/estados/RS/distritos)

Pelo que olhei a de distritos parece mais precisa, eu não encontrei cidades como Carazinho na API de municipios.

Preciso saber se usamos a API direto ou se vamos fazer carga no banco da aplicação.

henriquecfreitas commented 6 months ago

@antoniolucasnobar acredito que o backend possa expor um endpoint de cidades, que retorna uma lista com as cidades existentes por abrigos (um simples SELECT DISTINCT city FROM shelter daria conta). Dessa forma a lista de cidades no front não exibiria cidades sem abrigos cadastrados

mvares commented 6 months ago

@henriquecfreitas, da uma olhada nessa PR

antoniolucasnobar commented 6 months ago

eu pensei nisso tambem @henriquecfreitas, embora nao sei se pode ficar uma ux estranha para o usuario procurar sua cidade e nem conseguir completar (ele pode procurar para ver se existe ou entao tentar cadastrar, como foi o caso de @kpoerista que queria cadastrar os de Rio Grande).

@henriquecfreitas vc pretende adicionar esse endpoint no teu PR? pq nao eh possivel fazer isso antes do #57 ser integrado.

Victorcassiano commented 6 months ago

Na verdade, no cadastro de abrigo, daria para receber CEP(que já informa muita coisa de puxar em um API https://viacep.com.br/), Rua e numero da casa

henriquecfreitas commented 6 months ago

@mgrithm | @henriquecfreitas, da uma olhada nessa [PR](https://github.com/SOS-RS/backend/pull/57l

Já dei, esse PR é o que eu subi no backend para encaminhar o primeiro passo para resolver essa issue rs

henriquecfreitas commented 6 months ago

@antoniolucasnobar Acredito que essa questão seja um caso de trade off: para o usuário de menor inserção digital não apresentar a sua cidade vai sim causar uma confusão; para o usuário padrão a mensagem de que não há abrigos na cidade seria recebida mais diretamente.

Uma solução ideal talvez seria fazer uma solução híbrida buscando em duas fontes (no backend e em uma outra API externa), de forma a contemplar todas as cidades do RS, e exibir algum identificador visual tornando indisponíveis as que não tem abrigos cadastros

henriquecfreitas commented 6 months ago

@Victorcassiano

Na verdade, no cadastro de abrigo, daria para receber CEP(que já informa muita coisa de puxar em um API https://viacep.com.br/), Rua e numero da casa

Pelo que eu entendi do backend a fonte de dados atual recebe apenas as coordenadas de latitude e longitude a partir de uma integração externa com os locais salvos no google maps. O CEP não está disponível no backend (até então). Como só tive conhecimento da aplicação ontem a noite (e hoje estava até agora a pouco no jogo treino do Galo, beneficente para as vítimas das enchentes no RS) não consegui identifcar até então nenhuma outra fonte externa para identificar os detalhes da localzação dos abrigos além das próprias coordenadas.

henriquecfreitas commented 6 months ago

@antoniolucasnobar | @henriquecfreitas vc pretende adicionar esse endpoint no teu PR? pq nao eh possivel fazer isso antes do https://github.com/SOS-RS/backend/pull/57 ser integrado.

Não pretendo, não é possível fazer isso antes desse PR ser deployado e nem antes de ele ter processado uma boa parte dos abrigos (rodando a 1 execução por minuto a carga total demoraria quase 10 horas, recomendo que ela seja ajustada para algo em torno de 2 a 5 segundos inicialmente)