feat: modal pro Checar Metadados e botão de sincronizar Update.latest - #1066
Merged
Conversation
Compara o schema real da tabela no BigQuery (nome, tipo, descrição das colunas) com o que está cadastrado na API, no mesmo padrão do botão "Importar Colunas" já existente. Reaproveita a checagem já feita pelo script check_metadata.py (repo pipelines), agora acionável direto do admin sem precisar rodar a action manualmente.
Checar Metadados agora usa is_prd() para escolher o projeto do BigQuery: basedosdados-dev quando chamado de staging/dev, basedosdados quando chamado de prod. Antes comparava sempre contra basedosdados (via Table.gbq_slug, hardcoded), então staging comparava contra dados que ainda nem tinham sido promovidos pra prod.
3 tasks
field.field_type do client do BigQuery retorna o nome legacy do tipo (INTEGER, FLOAT, RECORD), enquanto bigquery_type na API usa o nome standard SQL (INT64, FLOAT64, STRUCT) — mesma coluna dava falso positivo de "tipo diferente". Mesmos aliases do check_metadata.py (repo pipelines), que já lida com essa mesma divergência.
A tradução (INTEGER->INT64, FLOAT->FLOAT64, RECORD->STRUCT) só faz sentido no lado do BigQuery — a API já usa o nome padrão. Normalizar os dois lados pela mesma tabela de alias escondia um bug: o alias "boolean"->"bool" (copiado do check_metadata.py) não vale pra essa API, que usa BOOLEAN — teria dado falso positivo numa coluna booleana real.
Checar Metadados agora devolve discrepâncias estruturadas e mostra o resultado num modal (uma linha por discrepância, com badge por tipo), em vez de um alert() com texto solto. Novo botão "Sincronizar com o BigQuery" ao lado do "Update and Poll Info" na página de admin da Table: grava o last_modified real do BigQuery em Update.latest sem precisar esperar o próximo flow rodar. Só aparece quando há exatamente 1 Update vinculado à tabela, e usa o mesmo helper de projeto/ambiente (basedosdados-dev fora de prod) do Checar Metadados. Os dois mostram progresso num modal com spinner e bloqueiam o botão enquanto a requisição está em andamento, evitando cliques repetidos.
This was referenced Aug 22, 2026
Closed
Winzen
added a commit
that referenced
this pull request
Aug 22, 2026
… - staging - #1068 O botão "Checar Metadados" (introduzido nos PRs #1066/#1067) comparava o schema da Table no BigQuery com as Columns cadastradas na API, mas mostrava o resultado num alert() de texto solto — difícil de ler quando há várias discrepâncias. Esse PR também adiciona um botão pra sincronizar Update.latest com o BigQuery direto da UI, sem precisar de acesso ao banco — contexto completo em #1069.
5 tasks
github-actions Bot
added a commit
that referenced
this pull request
Aug 22, 2026
chore: sync staging and main - (PRs: #1066)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Nova funcionalidade: modal no Checar Metadados + botão Sincronizar Update.latest
Contexto
O botão "Checar Metadados" (introduzido nos PRs #1066/#1067) comparava o schema da
Tableno BigQuery com asColumns cadastradas na API, mas mostrava o resultado numalert()de texto solto — difícil de ler quando há várias discrepâncias.Esse PR também adiciona um botão pra sincronizar
Update.latestcom o BigQuery direto da UI, sem precisar de acesso ao banco — contexto completo em #1069.O que tem nesse PR
1. Checar Metadados — resultado num modal estruturado
A view agora devolve uma lista de discrepâncias estruturadas em vez de uma string já formatada, e o front renderiza cada uma como uma linha com um badge por tipo.
Diagrama de fluxo
Tipos de discrepância
tiposomente_bigquerysomente_apitipo_diferentebigquery_typeda API não bate com o schema do BQbigquery,apidescricao_diferentebigquery,apiTradução de tipo legacy → standard SQL
field.field_typedo client do BigQuery sempre reporta o nome legacy (INTEGER,FLOAT,RECORD), enquantobigquery_typena API usa o nome standard SQL (INT64,FLOAT64,STRUCT). Sem tradução, toda coluna numérica dava falso positivo:A tradução só se aplica ao lado do BigQuery — a API já usa o nome padrão (inclusive
BOOLEAN, nãoBOOL, então esse alias foi deliberadamente deixado de fora).2. Botão "Sincronizar com o BigQuery"
Aparece ao lado do link do Update, no campo "Update and Poll Info" da página de admin de uma
Table— só quando há exatamente 1Updatevinculado (evita gravar no lugar errado se a tabela estiver com Updates duplicados/ambíguos).Diagrama de fluxo
_gbq_slug_for_table()foi extraído como helper compartilhado entre as duas views, pra manter a mesma lógica de projeto por ambiente (is_prd()):Proteção contra clique duplicado
Os dois fluxos abrem um modal com spinner assim que a requisição começa — o
.modalcobre a tela inteira (position: fixed,z-index: 1000), então não dá pra clicar no botão de novo por baixo dele enquanto a chamada está em andamento. O botão do Sync também é desabilitado como reforço.Benefícios
\npsqlviakubectl exec) documentado emAcesso direto ao banco de prod.mdis_prd()— em staging/dev comparam/sincronizam contrabasedosdados-dev, em prod contrabasedosdadosAcompanhamento
Registro do que foi feito e test plan em #1069. Fecha os dois itens pendentes de #1050.