feat(S2): seção de conteúdos da home de campanha inclui os vídeos do YouTube #57
Loading…
Reference in a new issue
No description provided.
Delete branch "S2-secao-de-conteudos-na-home-de-campanha-youtube"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fechamento da Issue #18 (S2) — a home de campanha ganha os vídeos do canal do YouTube como conteúdo nativo, ao lado dos artigos.
O que muda
social-feed-settings(grupo Configurações, admin-only):enabled(kill switch "Feed ativo"),youtubeEnabled,youtubeApiKey,youtubeChannelId,youtubeMaxItems,excludedItems(exclusão por item com motivo) e snapshot oculto do último feed.src/utilities/youtubeFeed.ts(server-only): busca da Data API v3 (search → statistics), parse/formatação pt-BR (views "12,4 mil"/"1,2 mi"), cache ISRrevalidate: 300sob a tagsocial-feed(allowlist do/api/revalidateatualizada) e fail-closed: recurso desligado →null(seção vira S1); API fora com snapshot → cards do snapshot; sem snapshot → sem cards YouTube, artigos intactos; kill switch → só artigos.revalidateTagdentro deunstable_cachelança no Next 15.4 (verificado no source).CampaignContentCardgeneralizado (artigos + vídeos; externos abrem no YouTube em nova aba), seção "Acompanhe de perto" merge por recência (grande = mais recente), link "YouTube →" quando o feed está configurado, carrossel com ariaLabel "Conteúdos recentes".20260818_111748_add_social_feed_settings(aplicada em dev + test; prod aplica no build).Testes
youtubeFeed.unit.spec.ts(15) — parsers, formatadores, eligibility, dedupe, fallback.frontend.e2e.spec.ts): feed renderizado com exclusões + abertura no YouTube; falha de API sem snapshot; snapshot servido durante outage; kill switch.pnpm push): lint/format/tsc/knip/cycles/unit (2306)/int (791)/build/e2e (172 passed; 3 flaky ambientais)./privacidade(cache local do Next sanitizado — ver nota no changelog).Artefatos
docs/plans/secao-conteudos-home-youtube-impl.mddocs/changelog/2026-08-18-s2.mditemIdna global é código morto; e2e depende do comportamento atual).Closes #18
30c26aed1btofe5b11cf24