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)
- BK-136
- BK-137
- BK-138
- BK-147
- BK-148
- BK-149
- BK-150
- BK-151
- BK-156
- BK-158
- BK-159
- BK-160
- BK-161
- BK-162
- BK-163
- BK-164
- BK-165
- BK-166
- BK-170
- BK-171
- BK-172
- BK-177
- BK-183
- BK-186
- BK-187
- BK-189
- BK-190
- BK-191
- BK-192
- BK-193
- BK-195
- BK-196
- BK-197
- BK-198
- BK-199
- BK-201
- BK-205
- BK-207
- BK-208
- BK-209
- BK-210
- BK-211
- BK-212
- BK-213
- BK-214
- BK-215
- BK-216
- BK-217
- BK-218
- BK-219
- BK-220
- BK-221
- BK-229
- BK-230
- BK-231
- BK-232
- BK-233
- BK-234
- BK-235
- BK-236
- BK-239
- BK-240
- BK-241
- BK-242
- BK-243
- BK-244
- BK-245
- BK-246
- BK-248
- BK-249
- BK-250
- BK-251
- BK-252
- BK-253
- BK-254
- BK-255
- BK-256
- BK-257
- BK-258
- BK-259
- BK-260
- BK-261
- BK-262
- BK-263
- BK-264
- BK-265
- BK-266
- BK-267
- BK-268
- BK-269
- BK-270
- BK-271
- BK-272
- BK-275
- BK-276
- BK-277
- BK-278
- BK-279
- BK-280
- BK-295
- BK-313
Detalhe do BK Selecionado
/www/wwwroot/rionoteatro.com.br/docs/backlog/BK-275-hotfix-audio-copy-timeout-502.md • 2026-04-29T03:54:33.085Z
BK-275 - Hotfix 502 no Gerar com IA do Texto para Audio
Status
DONE em 28/04/2026.
Contexto
O admin reportou 502 Gateway Timeout ao clicar em Gerar com IA em:
admin/modulos/campanhas/redes_sociais/texto_for_audio.php
O botao afetado submetia action=audio_generate_with_ai, que chamava provedores de IA dentro da propria requisicao web.
Diagnostico
- A pagina publica sem sessao retorna redirect para login, entao o 502 era do POST autenticado.
- O fluxo sincrono chamava
rnt_social_audio_generate_versions_with_ai()antes de responder ao navegador. - Os provedores podem esperar 75-120s por resposta (
Gemini,Kimiou bridge), acima do limite tipico do gateway. - Ja existia uma trilha segura para lote em
audio_generate_all_background, que enfileira emsocial_audio_jobse processa aposfastcgi_finish_request().
Entrega
- Criado executor reutilizavel
rnt_audio_process_pending_copy_job()para processar um job pendente. - Criado helper
rnt_audio_redirect_and_process_pending_jobs()para responder por redirect e processar a fila depois. - Adicionada action
audio_generate_one_backgroundpara o botao principal. - Alterados os formularios visiveis:
Gerar com IARefazer com sugestao- O fluxo
Gerar TUDO (background)foi reduzido para reaproveitar o mesmo executor, evitando duplicacao da logica de IA/fallback/validacao. - Pos-teste admin do job
#13: o job saiu do timeout web, mas ficou sem retorno visual enquanto o bridge Gemini aguardava; o executor agora marcaprocessandoantes da chamada de IA. - Reduzida a janela do bridge Gemini/Kimi para cair em fallback mais rapido quando o provedor nao responder.
- A tela do job ativo passou a exibir alerta para
pendente,processando,fallback,suspeitoeerro. - Enquanto o job ativo estiver
pendenteouprocessando, a pagina faz auto-refresh controlado a cada 12s. - Pos-teste admin do job
#14: Gemini voltou a cair em fallback; teste isolado mostrou quota/billing/rate-limit. O fluxo agora pula o bridge quando o erro direto ja e terminal. - Decisao operacional posterior: esquecer API para Gemini neste modulo. O provider
geminido Texto para Audio agora chama sempre o Gemini CLI logado na VPS, via binario local, e ignora chaves Google/Gemini.
Validacoes
php -l admin/modulos/campanhas/redes_sociais/texto_for_audio.phpphp -l admin/modulos/campanhas/redes_sociais/audio_common.php- Conferencia estatica das actions no HTML renderizado pelo PHP.
- Teste real do admin com job
#13: redirect rapido confirmado; geracao finalizou comofallbackapos timeout do bridge Gemini, com texto salvo. - Teste real do admin com job
#14: fallback confirmado; diagnostico local mostrou Gemini com quota excedida, OpenAI com chave invalida e Kimi sem JSON/timeout. - Teste PHP isolado apos migracao Gemini CLI:
rnt_social_audio_generate_versions_with_ai("gemini", ...)retornouok=1,provider=gemini,model=gemini_cli_defaulte 3 versoes em cerca de 15s.
O que falta
- Validar novo clique autenticado em producao com uma peca real para confirmar que o navegador recebe redirect imediato e o job usa Gemini CLI ate
gerado,fallbackoususpeito. - Avaliar, em rodada posterior, trocar o auto-refresh simples por polling AJAX se a tela de jobs ganhar mais operacao simultanea.
- Revisar, em uma rodada separada, se os timeouts dos provedores devem ser reduzidos mesmo no background para proteger workers PHP.
- OpenAI segue fora do caminho principal deste fluxo; se voltar a ser exibido no seletor, a chave precisa ser trocada/removida.
- Discord fica por ultimo na fila operacional, conforme orientacao humana da rodada.
Arquivos alterados
admin/modulos/campanhas/redes_sociais/texto_for_audio.phpadmin/modulos/campanhas/redes_sociais/audio_common.phpdocs/BACKLOG.mddocs/CHANGELOG.mddocs/changelog/2026/CL-2026-04-28-BK-275-hotfix-audio-copy-timeout-502.md