S1 — Seção de conteúdos na home de campanha — Artigos #29
Loading…
Reference in a new issue
No description provided.
Delete branch "S1-secao-de-conteudos-na-home-de-campanha-artigos"
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?
Closes #17
S1 — Seção de conteúdos na home de campanha (artigos)
Bento 1+4 no desktop e carrossel de 1 conteúdo por tela (dots + contador) no mobile, na 3ª posição da home, lendo o
postcollection comisPostVisiblefail-closed (taghiddeneleitoral nunca vaza; sem posts visíveis a seção some inteira). Zero schema/migration/Consent; home estática revalidada pelo mecanismopostsexistente.Arquitetura
CampaignContentSection(server): header "Acompanhe de perto" + bento desktop + carrossel mobile; oculta no vazio.CampaignArticleCard(presentacional): badge de tipo, capa 16:9, título, meta "há X · categoria" (relativa < 48h, absoluta além — nunca mente congelada na ISR); card inteiro é link canônico.CampaignContentCarousel(client): snap 1/tela, foco + setas no track,inertnos slides inativos,aria-liveno contador, dots ≥3:1.formatRelativePostDate+POST_TYPE_BADGE_LABELSemsrc/utilities/posts.ts(unit-testados).posts;export const revalidatefoi testado e revertido (Next 15.4 prod: trava o bust por tag).Decisões-chave (rejeitadas no impl plan)
CampaignCarousel(pinado a Penpot/e2e; jobs diferentes).formatRelativePostDatenão reusaformatRelativeAge(contratos divergentes — refusal documentada).Verificação
E2E_PROD=1): empty-state, full-state desktop/mobile, fail-closed com tag oculta, click-through, teclado, swipe, dots; criação via REST com hooks reais; polling positivo pós-revalidate (ISR serve stale uma vez sob carga);about:blankantes do cleanup (prefetch de links apagados)./simplify3 reviewers (engenharia/UX/produto): P1 de a11y e o congelamento da label relativa corrigidos; P2 absorvidos; débitos deferidos documentados no impl plan.docs/plans/secao-conteudos-home-artigos-impl.md· changelog:docs/changelog/2026-08-18-s1.mdMedido em probe: com export const revalidate, revalidateTag('posts') para de regenerar a home (a rota /artigos, sem o export, convergia; a home ficava stale para sempre). Remove o export e resolve o congelamento da label relativa por threshold: relativa < 48h, data absoluta além (nunca mente congelada). Spec: polling positivo do HTML da home pós-revalidate (ISR serve stale uma vez sob carga) e about:blank antes do cleanup (prefetch prod de links apagados = 404 no guard).