Refatorar busca de municípios (IBGE): definir estratégia de dados #572
Description
Activity
- addedrelease blockerEssa issue precisa ser resolvida antes do próximo release, pois é essencial p/ garantir a qualidadeEssa issue precisa ser resolvida antes do próximo release, pois é essencial p/ garantir a qualidadeand removed
on Sep 9, 2025 Olá! Posso pegar essa?
Tenho uma dúvida acerca da atualização do arquivo local: um
GETna API do IBGE retorna todas as cidades.Dito isto, atualizar o arquivo de cidades de tempos em tempos utilizando este endpoint é uma opção? Se sim, o versionamento deste arquivo se daria como?
Ignorar este versionamento e, ao fazer um primeiro
GETcomcode, poderíamos realizar um segundoGETna API do IBGE e criar um arquivo local a partir deste seria uma opção?Só falto este detalhe para finalizar este refactor e, caso sigamos pela opção de criar um arquivo com base na consulta da API sem passar o code muda toda a estrutura do
data/cities_code.json. A vantagem é que "espelharíamos" a API localmente e, para atualizar, de mês em mês poderíamos refazer esta consulta na base da API.Podemos validar esse período pela última data de atualização.
Ex:last_modified = datetime.fromtimestamp(file_path.stat().st_mtime)Reacted by Camila Maia- added a parent issue
on Sep 19, 2025 Oii @GomesMarcos ! Claro, vou te dar o assign da issue!
Conversando com o @niltonpimentel02, achamos que pode ser mais interessante seguir pelo caminho simples e trabalhar direto com a API do IBGE, sem versionar o arquivo local, sem nenhum fallback. Dessa forma, reduzimos a complexidade de mantermos um dataset “espelhado” e evitamos o risco de desatualização ou divergências entre a API e o arquivo.
Se para o cliente for importante ter esse dataset versionado, nada impede que ele próprio mantenha um arquivo a partir da API — mas não precisamos assumir isso como responsabilidade do projeto neste momento.
A ideia é validar primeiro a estratégia mais enxuta (API como fonte única). Se em algum momento isso se mostrar um problema (ex.: requisitos de disponibilidade offline, performance, auditoria ou compliance), podemos revisar a abordagem e introduzir o versionamento local no futuro.
Vai ficar mais simples e mais fácil de manter por agora!
Reacted by Marcos gomeS@GomesMarcos já atualizei a descrição da issue também! Valeu demais!
Reacted by Marcos gomeSValeeeu! Vou ajustar e em breve mando o PR!
Vamo que Vamo! 🚀Reacted by Camila Maia
Descrição
Hoje temos duas funções que consultam fontes distintas para o mesmo domínio (códigos/nomes de municípios IBGE):
get_municipality_by_code(code)→ API do IBGE (on-line)get_code_by_municipality_name(name, uf)→ arquivo localdata/cities_code.json(off-line)Isso abre margem para divergências e comportamentos inconsistentes.
Objetivo
Refatorar para adotar uma estratégia única de acesso a dados, utilizando apenas a API oficial do IBGE