SwipeAD — relatório final validado

Atualizado em 02/09/2026 · commit local 018b9a7 · Worker 008d8aa0-d85c-4559-8346-397913e36fbc · extensão 0.9.17

Auditoria consolidada das demandas do WhatsApp, correções desta rodada, banco da VPS, testes automatizados, navegador real, bundles e deploy Cloudflare.

Backend21/21testes aprovados
Extensão112/112testes aprovados
Build / tiposPASSVite + TypeScript
JS em produção70/70idênticos ao build
Banco VPSOKintegridade + upsert
DeployATIVOWorker e assets

1. Resposta objetiva às novas perguntas

2. Falha Lastlink / banco da VPS

Corrigida. A causa de upsertUserPlan failed: VPS DB error 500: Query failed era o schema atrasado no SQLite da VPS. O Worker já enviava os campos Lastlink, mas as colunas ainda não existiam.

ProteçãoBackup completo em /opt/swipead-vps-api/swipead.db.before-lastlink-20260902-0610.
MigraçõesAplicadas 0012 a 0019: identidade pública, bibliotecas privadas e campos/configuração Lastlink.
IntegridadePRAGMA integrity_check = ok.
PlanoExatamente um plano público pago ligado ao produto Lastlink informado.
Teste equivalenteUpsert com lastlink_subscription_id retornou upsert_changes=1 dentro de transação revertida, sem alterar cliente real.
Confirmação funcionalO endpoint de salvar biblioteca, que também falhava por schema atrasado, passou no navegador real após a migração.
Compra afetadaAtivada com sucesso às 10:18 UTC: plano ativo, vencimento em 02/10/2026 e assinatura Lastlink vinculada.
Fila administrativaOs dois eventos antigos que já tinham auditoria de processamento bem-sucedido foram reconciliados como processados; nenhum evento Lastlink aprovado permanece falsamente pendente.

3. Regressão da extensão e WhatsApp

A regressão principal surgiu quando dois módulos dinâmicos passaram a ser carregados sem constarem em web_accessible_resources. O Chromium bloqueava download-names.js e facebook-permalink.js, abortando a inicialização. Isso foi corrigido na versão 0.9.17.

Também foi restaurado o contrato comprovado no histórico: pesquisar no Google o identificador público de page_profile_uri e montar o permalink com o page_id interno da Ads Library. A corrida de carregamento das abas ocultas foi corrigida.

Teste realResultado
CarregamentoService worker 0.9.17 carregado; 23 cards reconhecidos, 23 botões; zero erro de console.
3 anúncios de Renato CarianiFluxo executado três vezes: not_found nos três, sem travamento e sem falso positivo.
2 anúncios do caso histórico Recheio FácilA busca pública encontrou candidatos e montou permalinks com o ID interno correto. O perfil de QA não está autenticado no Facebook e foi redirecionado ao login.

Estado honesto: o defeito de inicialização e o algoritmo de IDs foram corrigidos e validados. A revelação final depende de sessão Facebook autenticada; essa sessão não existe no perfil de teste da VPS.

4. Demandas anteriores da conversa

DemandaStatusEvidência
Pagamento apenas Lastlink e um plano pagoPASSUm plano público pago; webhook e checkout Lastlink; valores antigos limpos.
Favorito individual separado de bibliotecas “Salvas”PASSTabelas e fluxos separados; modelo de 10 bibliotecas, sem pastas.
Remover pastasPASSUI/API removidas e associações antigas zeradas sem apagar favoritos.
Limite de 10 bibliotecasPASSBloqueio compartilhado no backend e contador na extensão.
Múltiplos banners administráveisPASSAdmin adiciona/remove/ativa; dashboard mostra ativos.
Macro-nichos, idiomas e bandeirasPASSNormalização e agrupamento presentes no dashboard.
Contagem de anúncios mais visívelPASSPílulas visuais injetadas sem duplicação após scroll.
Relatório diário WhatsApp (item 13)PASS GUI + backendLogin admin real, botão “Gerar relatório” clicado em produção, textarea e botão “Copiar” exibidos, texto final válido e zero erro de console.
Transcrição gratuita dos áudiosPASSWhisper local/quantizado, sem API paga, cruzado com texto e imagens do ZIP.

5. Evidências visuais

Capturas reais. As primeiras isolam a regressão e a correção; as demais confirmam a produção atual e o destino de planos.

Extensão quebrada
Antes — regressãoAds Library carregada, sem controles SwipeAD.
Extensão corrigida
Depois — versão 0.9.17Pílulas, WhatsApp/download e barra restaurados.
Extensão após scroll
Depois — scroll profundoControles em vários cards sem duplicação visual.
Home em produção
Produção atualLanding pública após o deploy.
Página antiga
Antes — /planos internoA rota interna existia como página própria.
Planos na landing
Depois — landingURL final https://swipead.pro/#planos.
Relatório antes de gerar
Item 13 — antesSessão admin real e formulário do relatório diário em produção.
Relatório gerado
Item 13 — depoisRelatório gerado, botão “Copiar” e texto para WhatsApp exibidos sem erro.

6. Produção e artefatos

Worker008d8aa0-d85c-4559-8346-397913e36fbc, rotas, cron e fila ativos.
Bundles JavaScript70/70 arquivos retornaram e foram idênticos byte a byte ao build.
ZIPSHA-256 local/produção: aa70c405a08d23b4b9c8184ba138b09ee793bbb53e927cb473a370504fccd5ea.
Versão pública/api/extension/version retorna 0.9.17.
/planosHTTP 308 para https://swipead.pro/#planos; Playwright encontrou a seção.

7. Projetos Wrangler encontrados

ProjetoDomínioAção
swipead Workerswipead.proAtualizado.
swipead Pagesswipead.pages.devIdentificado; produto servido pelo Worker.
swipead-test-reportsswipead-test-reports.pages.devEste relatório.
swipead-evidenciasswipead-evidencias.pages.devEspelho deste relatório.

Os demais projetos da conta não pertencem a esta demanda e não foram alterados.

8. Git

Commit criado localmente: 018b9a7. O push não foi aceito porque o token HTTPS fornecido está inválido e a chave SSH instalada é somente leitura. O deploy Cloudflare foi concluído diretamente a partir desse commit; falta uma credencial GitHub com escrita para sincronizar origin/main.