10 KiB
S40 — Time do estadual: a arte de modelo genérica entregue pelo humano (sem estadual específico)
Status: rascunho Atualizado em: 2026-09-24 Issue: #1316 Priority: P2 Impeccable: C — troca da arte de modelo e remoção de um desenho num funil público existente (sem superfície nova) Design UI: docs/plans/cards-estadual-modelo-generico-ui-design.html Appetite: ~0,5 dia eng; a arte aprovada vira tile/placeholder, a silhueta desenhada sai e os pins acompanham Responsável: —
Intenção
O tile e o placeholder de pré-escolha do modelo Time do estadual mostram hoje a arte de exemplo do S30: o JULIO PINHEIRO 13999 específico como ilustração. Quem chega na galeria pelo celular pode ler aquilo como "o card do Julio" em vez de "o modelo com o seu estadual" — a arte ilustra um estadual real no lugar onde deveria ilustrar o conceito. A campanha entregou (2026-09-24) uma arte genérica: SEU ESTADUAL no lugar do lockup e duas silhuetas — o lugar da foto do visitante e o lugar do estadual ainda vazio. Essa arte passa a ser o tile e o placeholder de pré-escolha.
No gate (2026-09-24), o humano decidiu também que a pós-escolha sem foto não desenha mais a silhueta do visitante: «Acho melhor sem silhueta. Essa silhueta desenhada nao ficou bom. Deixa vazio ate adicionar a foto do usuario.» A janela fica vazia (a arte do estadual escolhido aparece como é) até a foto entrar — como o Time de você já faz. A pré-escolha segue com a arte entregue, que já traz as duas silhuetas.
O que NÃO muda: fluxo, copy, seletor, catálogo das 53, artes das 53 e o analytics S32. É troca de um arquivo público no mesmo caminho e na mesma dimensão 1080×1440, mais a remoção de um desenho; nenhuma superfície, controle ou estado novo nasce.
Persona e fluxo
- Persona / contexto: apoiador/militante no celular, navegando o estúdio de cards antes de decidir a dobradinha; não conhece a arte interna da campanha e lê o tile pelo que ele mostra.
- Job principal: reconhecer o modelo antes de escolher o estadual — "é o card com o meu estadual" — sem achar que o card é do Julio; depois de escolher, ver o card limpo até colocar a própria foto.
- Fluxo desejado: home (
#cards) ou/cards→ vê o tileTime do estadualcom a arte genérica → abre o composer → antes de escolher, o placeholder é a mesma arte genérica comA silhueta marca o lugar da sua foto.e o CTA desabilitado → escolhe o estadual na lista dos 53 → sem foto, vê a arte do escolhido com a janela vazia (sem silhueta desenhada) → nome + foto → prévia e download, como sempre. - Anti-goals de produto: renomear/redesenhar o modelo; segunda arte por estadual; editar a arte entregue (recorte, re-encode, apagar as silhuetas dela); tocar nas 106 artes; mexer em copy/estados/analytics.
Esboço de fluxo (C)
[home #cards / /cards] → tile `Time do estadual` (arte genérica "SEU ESTADUAL" + 2 silhuetas; badge NOVO da colinha ao lado)
→ composer: pré-escolha = a mesma arte + "A silhueta marca o lugar da sua foto." / "Escolha um estadual para continuar." (CTA desabilitado)
→ escolhe o estadual (53) → sem foto: arte do escolhido com a janela vazia (sem silhueta desenhada)
→ nome + foto → prévia final → baixa o PNG
Design UI (C)
- Design UI (gate):
docs/plans/cards-estadual-modelo-generico-ui-design.html(+ assets emcards-estadual-modelo-generico-ui-design-assets/) - Cenas: (1) galeria com o tile
Time do estadualno desktop 1280 e no mobile 390, o badgeNOVOda colinha ao lado; (2) placeholder de pré-escolha no composer, antes de escolher, em 390/1280, com o notice e o CTA desabilitado; (3) continuidade pós-escolha sem foto — arte do estadual escolhido com a janela vazia (sem o desenho#001a42) até a foto do visitante.
Objetivo e aceite
- O tile e o placeholder de pré-escolha passam a ser a nova arte, byte-a-byte, no MESMO caminho público, 1080×1440 jpeg sRGB — sem re-encode, sem edição, sem recorte.
- Pós-escolha sem foto: nenhuma silhueta desenhada; a janela mostra a arte do estadual escolhido (FOTOS + BASE) até a foto entrar. A pré-escolha segue com a arte entregue (as duas silhuetas dela são parte da arte, não desenho).
- Nenhum outro pixel, fluxo, copy ou estado muda: seletor, catálogo das 53, artes das 53, notice, CTA, download e evento S32 seguem intocados. O notice continua verdadeiro (é da pré-escolha).
- A nova arte lê como modelo genérico:
SEU ESTADUALno lugar do lockup e duas silhuetas, sem nome nem número de nenhum estadual real. - A remoção da silhueta é limpeza do dono: o desenho e seus pins saem em vez de ficarem mortos (sem consumidor).
Dados (intenção)
- Vou apresentar dados? Não — nenhum dado é apresentado; a troca é visual e não há analytics novo.
- Decisões desbloqueadas: N/A — a leitura de uso do modelo, quando houver, continua sendo S32.
- Forma: adiada ao plano de implementação — N/A.
Dados da decisão (literais)
- ID
S40; slugcards-estadual-modelo-generico; tipofeature; PriorityP2; ImpeccableC — troca da arte de modelo e remoção de um desenho num funil público existente (sem superfície nova); Design UIdocs/plans/cards-estadual-modelo-generico-ui-design.html. - Modelo
time-do-estadual; caminho público inalterado/cards/modelo-time-de-voce-com-estadual.jpeg. - Decisão do gate (2026-09-24) — fonte canônica: sobrescrever in-place o asset do S30
docs/plans/cards-estadual-dobradinha-ui-design-assets/modelo-time-de-voce-com-estadual.jpegcom a nova arte (1080×1440 jpeg sRGB, sha2561f5dc8212662697149f0acac5701e8de58c53a86f5af316535736dccb7a53c7b; a arte antiga de sha7fc8a50a…fica no histórico do git). Sem pasta de assets nova;scripts/build-state-deputy-card-assets.mjs(APPROVED_EXAMPLE_SRC, linhas 38–41) etests/unit/stateDeputyCatalog.unit.spec.ts(APPROVED_EXAMPLE_SRC, linhas 34–39 e 75–82) mantêm os mesmos paths — só os bytes mudam; recomenda-se pinar o sha literal novo no teste. - Decisão do gate (2026-09-24) — sem silhueta desenhada: pós-escolha sem foto mostra a arte do estadual escolhido sem o desenho
#001a42; a janela fica vazia até a foto do visitante. RemoverdrawCardVisitorSilhouette+CARD_VISITOR_SILHOUETTE_FILL+ o subject{kind:'silhouette'}(src/lib/cardRender.ts:236-278,334-336); o ramoCardComposer.tsx:408-423passa a desenhar só a arte + nome; os pins acompanham — unittests/unit/cardRender.unit.spec.ts:22,320-327,342-348(remover) e e2etests/e2e/frontend.e2e.spec.ts:2243-2268(o pixel probe[0,26,66,255]vira a cor da arte na janela; com JULIO, sem silhueta, o ponto (582,540) do compositor dá[239,223,196,255]— confirmar na implementação). - Copy intocada: o notice
A silhueta marca o lugar da sua foto. O card final usa a arte do estadual escolhido.é da pré-escolha (arte com silhuetas) e segue verdadeiro (CardComposer.tsx:877-883). - Arquivo entregue no MacBook:
/Users/fsolla/Downloads/WhatsApp Image 2026-09-24 at 12.57.00.jpeg(os bytes já estão no repo, no asset do S30 acima).
Direção no codebase (hipótese)
- Áreas prováveis:
src/lib/cardModels.ts(previewSrcdo modelo, linhas 110–126 — só leitura; o path não muda),src/components/cards/CardModelTile.tsx(tile,previewSrc ?? assetSrc, linha 58) esrc/components/cards/CardComposer.tsx(placeholderdrawImage(previewImage, …), linhas 277–287 e 364–377; ramo da silhueta, linhas 408–423),src/lib/cardRender.ts(dono do desenho),docs/plans/cards-estadual-dobradinha-ui-design-assets/(asset sobrescrito),scripts/build-state-deputy-card-assets.mjs,tests/unit/stateDeputyCatalog.unit.spec.ts,tests/unit/cardRender.unit.spec.ts,tests/e2e/frontend.e2e.spec.ts. - Precedente a olhar: S34 (
docs/plans/cards-colinha-arte-exata.md) — arte exata entregue pelo humano, byte-a-byte; S30 (docs/plans/cards-estadual-dobradinha.md) — decisão original da arte de modelo e da silhueta. - Risco de acoplamento: não tocar catálogo/artes dos 53; a fonte em
docs/não vai para a imagem Docker (.dockerignore:25), só opublic/serve em produção; o e2e do ramo pina o pixel da silhueta (tests/e2e/frontend.e2e.spec.ts:2266-2268) e precisa acompanhar a remoção, mas copy/CTA/download/evento seguem verdes.
Dependências
- Nenhuma.
Fora de escopo
- As 106 artes das dobradinhas (53× FOTOS/BASE); as silhuetas da arte entregue usada na pré-escolha; renomear/mover o caminho público; copy/estados do composer; analytics S32; os demais modelos do estúdio; arte de exemplo por estadual.
Rabbit holes de produto
- "Já que a janela fica vazia, apaga as silhuetas da arte entregue também." Se alguém "só completar": editaria o arquivo aprovado e a pré-escolha mudaria junto. Corte neste item: a pré-escolha usa a arte entregue como está; a decisão vale só para o desenho do canvas pós-escolha.
- "Gera arte de exemplo por estadual." Se alguém "só completar": 53 artes novas, um estúdio de ilustração e pin por estadual — o oposto do pedido. Corte neste item: uma arte genérica só, a mesma para todos.
Questões em aberto (produto)
- Nenhuma — as decisões do gate (2026-09-24) estão registradas nos literais: sobrepor o asset do S30 in-place, manter o caminho público, remover a silhueta desenhada e manter o render de pré-escolha.
Referências
- GitHub Issue #1316
- Design UI (gate):
docs/plans/cards-estadual-modelo-generico-ui-design.html docs/plans/cards-estadual-dobradinha.mdedocs/plans/cards-estadual-dobradinha-impl.md— S30 (arte de modelo original, catálogo, placeholder, silhueta)docs/plans/cards-colinha-arte-exata.md— S34 (precedente: arte exata entregue pelo humano, byte-a-byte)src/lib/cardModels.ts,src/components/cards/CardModelTile.tsx,src/components/cards/CardComposer.tsx,src/lib/cardRender.ts,scripts/build-state-deputy-card-assets.mjs,tests/unit/stateDeputyCatalog.unit.spec.ts,tests/unit/cardRender.unit.spec.ts,tests/e2e/frontend.e2e.spec.tsAGENTS.md— convenção de assets byte-for-byte e de migrations/estrutura do repo