Cerebro Studio · Backlog · Changelog
RioNoTeatro • /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md
Abrir Studio Projeto externo em modo read-only; encaminhamento permitido, escrita bloqueada.

Backlog Unificado

Projeto: RioNoTeatro. Fonte principal: /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.

Modo read-only: ações de escrita ficam disponíveis apenas para o Cérebro.

Sem itens pendentes em /www/wwwroot/rionoteatro.com.br/docs/BACKLOG.md.

Especificações Disponíveis (fora da fila pendente)

Detalhe do BK Selecionado

/www/wwwroot/rionoteatro.com.br/docs/backlog/BK-199-heranca-imagem-migracao-admin-bot.md • 2026-04-03T21:37:02.396Z

BK-199 · Heranca de imagem e migracao Admin -> BOT em pecas/eventos

Contexto

  • Em https://rionoteatro.com.br/eventos.php apareceu 404 para:
  • /img/sem-imagem.jpg
  • /arquivos/pecas/1076/large/capavanfurlanettiemrelatosdeviagem.png
  • A peca 1076 (Van Furlanetti em RELATOS DE VIAGEM) veio de sugestao do BOT/Sympla e ficou com tb_fotos apontando para uma capa inexistente em disco.
  • Havia tambem a suspeita de que a migracao admin -> bot antes acessivel ao admin tinha sumido da UI do catalogo.

Sintomas

  • listagem publica quebrava imagem com 404 em eventos.php
  • fallback /img/sem-imagem.jpg nao existia fisicamente no projeto
  • pecas.id=1076 tinha tb_fotos.fot_titulo = capavanfurlanettiemrelatosdeviagem.png, mas sem pasta/arquivo em /arquivos/pecas/1076
  • a listagem atual de admin/modulos/pecas/index.php mostra apenas o badge Admin na coluna Produtor, sem acao de conversao por clique

Evidencias confirmadas

  • pecas.id=1076
  • origem = 'bot'
  • id_produtor = 50929
  • imagem = '' antes da correcao emergencial
  • tb_fotos
  • havia registro capa para 1076, mas sem arquivo correspondente em disco
  • bot_pecas_sugestoes
  • a sugestao vinculada a 1076 ainda preservava dados_json.imagem_url = https://images.sympla.com.br/677f28917106b-xs.jpg
  • o helper baixarFotoExternaEvento() ja existia em admin/modulos/eventos/action.php, mas nao era chamado por criarEventoConciliacaoBot()

Leitura tecnica atual

  • A funcionalidade versionada de migrar/reativar para BOT existe hoje no fluxo de conciliacao, nao na listagem de pecas.
  • Fonte atual da migracao versionada:
  • admin/modulos/eventos/conciliacao.php
  • admin/modulos/eventos/action.php
  • Evidencia documental:
  • BK-165 registra que o Sympla voltou a expor a opcao de manter Admin ou migrar para BOT
  • BK-183 registra manter_admin, manter_produtor e converter_bot como implementados
  • A listagem atual admin/modulos/pecas/index.php nao exibe controle equivalente na coluna Produtor
  • A quebra de imagem nao era um unico bug:
  • havia inferencia fragil de pasta (large vs media) na vitrine publica
  • havia fallback morto (/img/sem-imagem.jpg)
  • havia criacao BOT sem publicacao local obrigatoria da imagem externa

Commits e trilha historica

  • 3572cd90a · BK-165: fix feed path and restore sympla reconciliation flow
  • restaurou em admin/modulos/eventos/conciliacao.php a opcao de manter Admin ou migrar para BOT
  • a3e0f2417 · chore(repo): audita branches antigas e resgata pendencias uteis
  • ampliou admin/modulos/eventos/action.php com modo_reativar, converter_bot, bloqueio por temporada e obterIdProdutorBotEventosAction()
  • 481ad13ba · fix(roteamento): somente eventos admin usam layout peca
  • simplificou a exibicao da coluna Produtor em admin/modulos/pecas/index.php
  • na versao atual dessa tela, o badge Admin ficou apenas informativo, sem acao por clique

Correcoes aplicadas nesta rodada

  • eventos.php
  • passou a resolver a imagem do card por existencia fisica real em /large e /media, em vez de inferir cegamente pela origem
  • fallback morto trocado por /img/logo_2023.png
  • teatro.php
  • mesma blindagem de resolucao real de imagem para cards
  • evento.php
  • fallback principal trocado de /img/sem-imagem.jpg para /img/logo_2023.png
  • admin/modulos/eventos/action.php
  • criarEventoConciliacaoBot() agora chama baixarFotoExternaEvento() quando houver imagem_url na sugestao
  • reparo emergencial do caso atual 1076
  • imagem Sympla baixada e publicada em:
  • /arquivos/pecas/1076/large/van-furlanetti-em-relatos-de-viagemrionoteatro.jpg
  • /arquivos/pecas/1076/media/van-furlanetti-em-relatos-de-viagemrionoteatro.jpg
  • tb_fotos.fot_titulo atualizado
  • pecas.imagem atualizado para o path local publicado

Como refazer rapido se sobrescreverem

  • Sintoma tipico:
  • tb_fotos aponta uma capa
  • mas /arquivos/pecas/{id}/large|media/ nao tem o arquivo
  • e a sugestao ainda tem dados_json.imagem_url
  • Ponto canonico para nao depender de URL externa dinamica:
  • admin/modulos/eventos/action.php
  • funcao baixarFotoExternaEvento()
  • a criacao via bot precisa chamar essa funcao logo depois de criar a peca

Trecho aplicado em criarEventoConciliacaoBot():

```php

if ($imagem !== '') {

$meta_foto_externa = array();

baixarFotoExternaEvento($obj_sql, $novo_id, $meta_foto_externa, $imagem);

}

```

Trecho de blindagem da vitrine publica:

```php

$pastas = !empty($row['id_produtor']) ? array('large', 'media') : array('media', 'large');

foreach ($pastas as $pasta_foto) {

$src_foto = "/arquivos/pecas/" . $evento_id . "/" . $pasta_foto . "/" . $capa;

if (is_file(__DIR__ . $src_foto)) {

return $src_foto;

}

}

```

Regra pratica:

  • nao inferir pasta de imagem so por origem ou id_produtor
  • verificar existencia fisica real
  • nao usar /img/sem-imagem.jpg, porque esse asset nao existe no projeto atual
  • usar um fallback vivo, hoje /img/logo_2023.png

Validacoes executadas

  • php -l eventos.php
  • php -l teatro.php
  • php -l evento.php
  • php -l admin/modulos/eventos/action.php
  • curl -I https://rionoteatro.com.br/arquivos/pecas/1076/large/van-furlanetti-em-relatos-de-viagemrionoteatro.jpg
  • retorno 200
  • curl https://rionoteatro.com.br/eventos.php
  • a listagem passou a renderizar 1076 com o novo JPG local

Pontos em aberto

  • Confirmar se a UI por clique na coluna Produtor deve ser reexposta especificamente em admin/modulos/pecas/index.php, ou se a decisao canonica passa a ser concentrar essa operacao apenas na conciliacao
  • Se a acao voltar para pecas/index.php, ela deve reutilizar a mesma regra de negocio de converter_bot ja existente em admin/modulos/eventos/action.php, nao criar regra paralela

Proximo passo recomendado

  • Reexpor em admin/modulos/pecas/index.php uma acao explicita e documentada para Admin -> BOT, consumindo a mesma regra de negocio canonica da conciliacao
  • registrar no changelog final qual passa a ser a tela oficial para essa operacao
  • evoluir depois a mesma trilha para permitir transferencia explicita tambem para cliente/produtor cadastrado, sem criar regra paralela ao fluxo atual

Criterio de aceite

  • nenhuma peca/evento BOT deve gerar 404 por capa ausente quando existir imagem_url capturada
  • fallback publico nao deve apontar para asset inexistente
  • a regra canonica de conversao admin -> bot deve ficar visivel e documentada em uma unica trilha operacional