Cadence/Be180 OOH
Visão geral

Be180 OOH · Relatório operacional

Promoção de inventários ao Banco de Ativos

A Colmeia passou a integrar de fato os inventários aprovados pelos exibidores no banco operacional de ativos. Nesta entrega: fluxo Promover ao banco, 19 lotes promovidos, 4.881 pontos novos e 0 divergências. Data: 11/08/2026.

Colmeia | Be Mediatech OOHfeat/incluir-inventariosInventários aprovados de exibidores → bancoAtivosJoin_ft

Resumo executivo

Até então, aprovar um lote só mudava o status na análise — os pontos não entravam no banco usado por roteiros, mapas e relatórios. Nesta entrega o fluxo Promover ao banco passou a gravar inventários aprovados em bancoAtivosJoin_ft, com preview, confirmação e substituição total por exibidor.

  • Fluxo Promover ao banco (preview + confirmação + substituição total)
  • 19 inventários de exibidores já aprovados promovidos
  • 4.881 pontos novos e 17.689 pontos legado invalidados (soft-delete)
  • 0 divergências entre o lote e o que está válido no banco

Números consolidados

19

Lotes promovidos

1 por exibidor

4.881

Pontos inseridos

valid_bl = 1

17.689

Legado invalidado

soft-delete

0

Divergências

lote × banco

0

Erros no batch

execução completa

95.437

Pontos válidos

todos os exibidores

Registros totais em bancoAtivosJoin_ft

131.516

Exibidores com inventário no banco

19

Integridade de PK (colisões)

Nenhuma

O que mudou no produto

Antes

Upload Excel
Análise BE
Aprovar / Corrigir / Rejeitar
Status APROVADO
Não gravava no banco de ativos

Agora

Upload Excel
Análise BE → Aprovar
Preview “Promover ao banco”
Substituição total do legado
bancoAtivosJoin_ft
Banco de Ativos / Roteiros / Relatórios

Substituição total por exibidor

Todos os pontos válidos daquele exibidor_fk passam a valid_bl = 0; em seguida entram os itens aprovados do lote.

Não é automático no Aprovar

O admin confirma em um passo separado, com preview de inserção × invalidação.

Bloqueadores

Lote sem exibidor; status ≠ APROVADO; zero itens elegíveis; itens sem lat/long; itens sem de-para; código vazio.

Transação + auditoria

Transação única (tudo ou nada), soft-invalidação (nunca DELETE físico) e comentário de auditoria no chat do lote.

Idempotência

Lote já promovido retorna 409. Re-promoção só com force explícito.

Detalhamento por exibidor

Maior inserção

JCDECAUX — 1.672 pontos (substituiu 14.034 do legado).

Maior ganho líquido

JOTA COMUNICAÇÃO — 706 pontos sem legado prévio.

Piloto

MULTICOLOR — 6/6, validado antes do batch completo.

Primeira promoção pela UI

GRUPO SOOH / WAY MIDIA — 31 inseridos, 10 invalidados.

#ExibidorLoteInseridosLegado invalidadoPromovido em (UTC)Por
1A LINHARES1325325311/08 17:08script batch
2CRIATIVA873710211/08 17:08script batch
3Diario Paineis10618011/08 17:08script batch
4FUTURA MIDIA75126011/08 17:08script batch
5GRUPO SOOH (WAY MIDIA)149311011/08 16:14Jose Roberto Baptista Junior
6IMAGEM OOH10023111/08 17:08script batch
7INFRONTMIDIA71210211/08 17:08script batch
8JCDECAUX1361.67214.03411/08 17:08script batch
9JOTA COMUNICAÇÃO70706011/08 17:09script batch
10KADOOR9842411/08 17:09script batch
11MOVIE MIDIA288836511/08 17:09script batch
12MULTICOLOR1086611/08 14:53script (piloto)
13PONTO OUTDOOR5710117911/08 17:09script batch
14PRISMA OOH4342011/08 17:09script batch
15PROVIS1058902.02211/08 17:09script batch
16SETDOOR372528611/08 17:09script batch
17VISUAL PAINEIS9248011/08 17:09script batch
18WEOOH833331211/08 17:09script batch
19ZAAVCHAI852428311/08 17:09script batch
TOTAL4.88117.689

Mapeamento de campos

Origem · exibidor_inventario_item_dmDestino · bancoAtivosJoin_ft
codigo_ativo_stcode
praca_stcidade_st
uf_stestado_st
ISNULL(mapped_tipo_st, tipo_midia_st)tipoMidia_st
ISNULL(mapped_ambiente_st, ambiente_st)environment_st
ISNULL(mapped_formato_st, formato_midia_st)media_format_st
latitude_vl / longitude_vllatitude / longitude
nome do exibidor_dmexibidor_st
exibidor_fk do loteexibidor_fk
valid_bl = 1
match legado por codedistrict, grupo_st, pedestrian_flow, total_ipv_impact, social_class_geo (preservados)

Correções técnicas neste ciclo

1

De-para (tradução de tipo de mídia)

Problema

Rótulos do Excel com quebra de linha (ex.: CIRCUITO DE \r\nBIG MUB…) nunca casavam com a regra cadastrada. A tela “salvava” e nada mudava.

Correção

Normalização que colapsa espaços/quebras no match (JS e SQL) + script reaplicar-depara.js.

Resultado

389 itens remapeados com regras que a BE já havia cadastrado — incluindo SETDOOR e WEOOH.

2

Remetente do upload

Problema

uploadedBy_st estava nulo em 169/169 lotes — a tela de importação não enviava o e-mail.

Correção

ExibidorImportar passa a enviar uploadedBy com o e-mail do usuário logado.

Resultado

Uploads novos ficam rastreáveis.

3

Veredito “ATENÇÃO” na análise

Problema

Os “2 pontos a tratar” em lotes já aprovados/promovidos eram avisos reais, mas a UI só mostrava o número — a seção de detalhe havia sido removida.

Correção

O número passou a ser expansível, com causa, ação e se bloqueia ou não.

Resultado

Avisos de atenção não impedem aprovar nem promover.

O que ainda não entra no banco

Não há lote APROVADO pendente de promoção. O que resta parado é dado incompleto na origem, não falha do fluxo.

  • Grande volume com ambiente/formato/tipo em branco na planilha (destaque: JCDECAUX e vários lotes com os três campos vazios).
  • Casos de preenchimento incorreto do template (ex.: endereço na coluna de ambiente — Mira Outdoor).
  • Códigos auto-gerados LINHA_* em massa (~17 mil itens): não bloqueiam promoção, mas impedem casar enriquecimento (passantes/IPV) com o legado.

Como operar daqui pra frente

UI admin · Inventários de exibidores

  1. 1Analisar e Aprovar o lote.
  2. 2Clicar Promover ao banco.
  3. 3Revisar o preview (a inserir × legado a invalidar + avisos).
  4. 4Marcar “Confirmo a substituição total…” e confirmar.

Scripts operacionais

Simulação

node scripts/promover-inventarios-aprovados.js

Executar todos os APROVADO ainda não promovidos

node scripts/promover-inventarios-aprovados.js --executar

Um lote específico

node scripts/promover-inventarios-aprovados.js --lote=108 --executar

Reaplicar de-para (dry-run)

node scripts/reaplicar-depara.js

Reaplicar de-para (executar)

node scripts/reaplicar-depara.js --executar

Entregáveis de código

ArquivoPapel
handlers/inventario-promocao.jsMotor compartilhado: preview + promoção em transação
handlers/admin-inventario-analise.jsEndpoints preview-promocao / promover-lote + normalização SQL do de-para
handlers/exibidor-inventario.jsNormalização de texto do de-para no upload
scripts/promover-inventarios-aprovados.jsBatch dry-run / --executar
scripts/reaplicar-depara.jsRevalida itens já enviados após correção de match
PainelAnalise.tsx / AdminInventarios.tsxBotão, modal, timeline etapa 5, diagnósticos detalhados
ExibidorImportar.tsxGrava remetente no upload

Validação realizada

  • 1Piloto MULTICOLOR (lote 108): dry-run → execução → 6 inseridos / 6 invalidados / 6 válidos no banco.
  • 2Promoção pela UI (GRUPO SOOH / lote 149): 31 / 10, auditada no chat.
  • 3Dry-run completo dos 17 restantes: 17 OK, 0 pulados, 0 erros.
  • 4Execução em lote dos 17: 17 sucesso.
  • 5Checagem pós-fato: para cada um dos 19 exibidores, inseridos_vl do lote = contagem de valid_bl = 1 no banco.
  • 6Integridade de PK: 131.516 registros, 131.516 pks distintos.

Conclusão

O inventário aprovado pelo fluxo de exibidores já alimenta o banco de ativos da Colmeia. A operação desta data integrou 19 exibidores e 4.881 pontos sob o modelo de substituição total, com auditoria, preview na UI e scripts para o que já estava aprovado.

Próximos passos (fora deste escopo)

  • Completar de-para / dados faltantes nos lotes ainda incompletos.
  • Incentivar códigos de ativo reais (reduzir LINHA_*) para preservar enriquecimento do legado.
  • Worker Google Places e demais épicos de qualidade, sem misturar com a promoção.