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
BK-278 - Shortlinks rastreáveis para campanha WhatsApp
Status: DONE em 2026-04-29.
Contexto
O disparo WhatsApp da campanha As Loucas do Méier precisava usar texto com
acentuação correta e links curtos, sem perder UTMs de rastreamento. O link longo
original deixava a mensagem pesada:
https://rionoteatro.com.br/as-loucas-do-meier?utm_source=whatsapp&utm_medium=crm&utm_campaign=loucas_meier_zona_norte_20260429&utm_content=...
Entrega
config/shortlink_helper.php- cria/garante a tabela
rnt_shortlinks; - gera códigos curtos de 4 caracteres com fallback de colisão;
- aceita código preferido quando disponível;
- restringe destino a
https://rionoteatro.com.br/. short.php- resolve o código curto;
- incrementa
clickselast_click_at; - registra evento
shortlink_redirect_clickemcliente_tracking; - redireciona com HTTP 302 para o destino com UTM completa.
.htaccess- recebeu regra equivalente para ambientes Apache/local.
/www/server/panel/vhost/rewrite/rionoteatro.com.br.conf- recebeu a regra efetiva de Nginx antes do fallback para
peca.php?slug=...; - regra limitada a códigos de 4 a 8 caracteres iniciados por dígito;
- backup criado em
/www/server/panel/vhost/rewrite/rionoteatro.com.br.conf.bkp_original_20260429-110743_BK-278; nginx -tvalidado e reload aplicado via/etc/init.d/nginx reload.admin/cron/whatsapp_campaign_dry_run_zona_norte.php- passou a criar/reusar shortlink por escopo de campanha;
- CSV passou a usar link curto na coluna
linke dentro demensagem; - resumo JSON passou a registrar
destination_url,short_linkeshortlink_code; - copy revisada com português BR e acentuação.
Links gerados
- Base Miguel Falabella + Imperator:
- curto:
https://rionoteatro.com.br/1a2b; - destino:
https://rionoteatro.com.br/as-loucas-do-meier?utm_source=whatsapp&utm_medium=crm&utm_campaign=loucas_meier_zona_norte_20260429&utm_content=miguel_falabella_imperator; expires_at=NULL, sem expiração automática.- Extra Zona Norte + Baixada:
- curto:
https://rionoteatro.com.br/9t66; - destino:
https://rionoteatro.com.br/as-loucas-do-meier?utm_source=whatsapp&utm_medium=crm&utm_campaign=loucas_meier_zona_norte_20260429&utm_content=zona_norte_baixada_extra; expires_at=NULL, sem expiração automática.
Política definida após revisão operacional: shortlink de campanha deve permanecer
ativo por tempo indeterminado enquanto o destino existir. A coluna expires_at
continua disponível apenas para links realmente temporários ou limpeza futura
baseada em muitos meses sem acesso.
CSVs finais
- Base:
admin/runtime/campaigns/loucas_meier_zona_norte_20260429-dryrun-20260429-110647.csv;1864linhas;1864WhatsApps únicos;0duplicados.- Extra:
admin/runtime/campaigns/loucas_meier_zona_norte_20260429-expanded-zn-baixada-extra-20260429-110656.csv;2503linhas;2503WhatsApps únicos;0duplicados.
Estado da fila WhatsApp
As campanhas importadas antes da copy final foram canceladas, sem disparo:
- campanha
#1, basemiguel_falabella_imperator:cancelled_count=1864,sent_count=0; - campanha
#2, basezona_norte_baixada_extra:cancelled_count=2503,sent_count=0.
A campanha v2 foi importada com shortlinks:
- campanha
#3, basemiguel_falabella_imperator:1864pendentes,sent_count=0; - campanha
#4, basezona_norte_baixada_extra:2503pendentes,sent_count=0.
Guardrails ainda ativos:
global_kill_switch=true;dry_run_default=true;- campanhas
#3e#4comdry_run_only=1; - campanhas sem
approved_at; process --execute --confirm=PROCESS_QUEUEretornouprocessed=0porglobal_kill_switch_on.
Validações
php -l config/shortlink_helper.phpphp -l short.phpphp -l admin/cron/whatsapp_campaign_dry_run_zona_norte.phpnginx -t/etc/init.d/nginx reloadcurl -I https://rionoteatro.com.br/1a2bcurl -I https://rionoteatro.com.br/9t66curl -Ldos dois links curtos retornando HTTP200na página da peça com UTMs completas.php83 admin/cron/whatsapp_campaign_queue.php statusphp83 admin/cron/whatsapp_campaign_queue.php process --limit=5 --campaign=3 --execute --confirm=PROCESS_QUEUEphp83 admin/cron/whatsapp_campaign_queue.php process --limit=5 --campaign=4 --execute --confirm=PROCESS_QUEUE
Próximos passos
Para enviar de verdade, ainda exige ação humana explícita:
- confirmar a copy final recebida em um teste manual;
- escolher se o lote começa pela campanha
#3ou#4; - aprovar campanha com
--allow-real; - desligar kill switch;
- processar em lote pequeno observando falhas, bloqueios e respostas.