diff --git a/DESIGN.md b/DESIGN.md index 63ad590d..e78c5d61 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -292,6 +292,8 @@ This file is the living owner of Teqo's visual decisions — a working document, **Public campaign archive actions (C233, 2026-09-26).** On campaign-branded public archive/read surfaces, the primary action is campaign red with white text. Kit yellow is an orientation and keyboard-focus signal — hero edge, restrained eyebrow, current-location underline, and high-contrast focus outline — never the competing CTA fill. This keeps one action dominant, separates public campaign expression from Petition Gold, and makes keyboard location unmistakable over both light and dark media surfaces. +**Multi-media content gallery (C240, 2026-10-01).** A public piece with multiple media uses one stable stage plus position (“N de M”), previous/next controls, and a horizontally scrollable thumbnail strip; never shrink every thumbnail to force the whole set on screen. Download belongs to the selected media, while the single primary action shares the official source post — do not offer an ambiguous “download all” or make media-sharing compete with the source link. Partial arrival is an internal neutral processing state; the public gallery appears only when the complete set is ready. This keeps the action model honest across image-only, mixed video, and large carousels without inventing a second album product. + How rules change: - **Decide, then update the owner.** When a better pattern wins — anti-slop review (`design-taste-frontend` / `gpt-taste`), a reference study (`awesome-design-md`), a redesign pass (`redesign-existing-projects`), or implementation judgment — update this file in the **same change** and say why. A pattern that only lives in code or in an agent's head is drift, not design. diff --git a/docs/plans/central-conteudos-carrossel-ui-design.html b/docs/plans/central-conteudos-carrossel-ui-design.html new file mode 100644 index 00000000..cd57e22f --- /dev/null +++ b/docs/plans/central-conteudos-carrossel-ui-design.html @@ -0,0 +1,1585 @@ + + + + + + + + Design — C240 · Carrossel como conteúdo de primeira classe + + + + + +
+
+ C240 · design hi-fi certificado +

+ O carrossel é uma peça completa — não uma limitação. +

+

+ Ficha interna e superfície pública do carrossel como conteúdo de primeira classe: a + plataforma baixa automaticamente todas as mídias dos filhos pela API oficial, a ficha lê + Carrossel com a sua galeria (sem caixa âmbar de falha), e o eleitor vê a galeria + com Baixar (cada mídia) e Compartilhar (post oficial). Visitante: ler, + baixar e repassar. Assessoria: importar completo, revisar e publicar. +

+ +
+ Literais travados no gate (não reabrir no design): + tipo visível “Carrossel” (sem “álbum”); baixa automática de todas as mídias + (imagens e vídeos) pela API oficial, sem anexo manual e sem scraping; vídeos-filhos entram + na transcrição/catálogo; público com galeria + Baixar (cada mídia) + + Compartilhar (post oficial) + Copiar link; recibo conta carrossel como + conteúdo criado (sem bloco de ressalva de peça-link); ficha interna sem caixa âmbar “por + que o arquivo não foi baixado”; as 52 peças existentes (40 publicadas, 12 rascunhos) + ganham o mesmo tratamento. +
+ +

+ Observação: os selos Rascunho, Publicado, Processando e + Pronto abaixo são estados do produto (vocabulário já existente da Central), + não uma certificação deste artefato. Os textos em caixa alta nesta página são anotação do + board de design, não chrome do app. As mídias reais aparecem marcadas como + NEEDS ASSET. +

+
+ +
+
+ CENA 01 +

Ficha interna · desktop 1280 · Carrossel pronto com galeria (imagens + vídeo)

+
+

+ A coluna de mídia deixa de ser um único preview de 300 px e passa a ser a galeria do + carrossel: palco + trilha de miniaturas + “N de M”. O cabeçalho ganha a identidade + Carrossel. Nenhuma caixa âmbar: a peça lê como conteúdo completo. +

+
+
+ + +
+ ← Conteúdos +
+
+

Fim da escala 6×1 é saúde

+
+ + + Carrossel + + Pronto + Rascunho +
+
+
+ + +
+
+ +
+ + +
+
+

Mídias e transcrição prontas

+

+ As 8 mídias do carrossel foram baixadas pela API oficial e a ficha foi + catalogada — inclusive a transcrição do vídeo-filho. Revise os campos antes de + publicar. +

+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+
+ +
+ AÇÕES DO CABEÇALHO + + Rascunho + + + → depois de publicado a ação vira o kill switch: + + Publicado + + +
+
+ +
+
+ CENA 02 +

Ficha interna · mobile 390 · “baixando mídias” sem linguagem de falha

+
+
+
+
+ Carrossel + +
+
+ ← Conteúdos +

Fim da escala 6×1 é saúde

+
+ + + Carrossel + + Processando + Rascunho +
+ +
+
NEEDS ASSET · MÍDIA 1
+ + 1 de 8 · Foto + +
+
+ 1 + 2 + 3 ▶ + + +
+
+
+
+
+

+ Baixando mídias… 3 de 8. O que já chegou pode ser + revisado. As demais mídias seguem em segundo plano. +

+
+ + + + +

+ Disponível quando todas as mídias estiverem prontas. +

+
+
+
+
+ +
+
+ CENA 03 +

Ficha interna · desktop 1280 · galeria parcial (“baixando mídias”)

+
+
+
+
+
+
+
+ ← Conteúdos +

Fim da escala 6×1 é saúde

+
+ + + Carrossel + + Processando + Rascunho +
+
+ +
+ +
+
+
+
NEEDS ASSET · MÍDIA 1
+ + 1 de 8 · Foto + +
+
+ 1 + 2 + 3 + + + +
+ +
+
+
+
+

+ Baixando mídias… 3 de 8. + As demais chegam em segundo plano; a ficha já pode ser revisada. A peça + publica quando as mídias estiverem prontas. +

+
+
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+
+
+ +
+
+ CONTRATO DA FICHA +

Identidade Carrossel + galeria das mídias

+

+ O estado parcial usa o painel neutro “Baixando mídias… N de M”. Não há caixa âmbar, + motivo de limitação nem pedido de anexo manual: baixar os filhos é o fluxo normal. +

+

+ Peças de carrossel já criadas (importações anteriores/backfill) passam a ler assim: + a mesma galeria e a mesma identidade, sem box de ressalva. +

+
+
+
+
+ +
+
+ CENA 04 +

Recibo da importação · carrossel conta como conteúdo criado

+
+
+
+
+
+ +
+

Importação concluída

+

+ As novidades já estão na Central como rascunho. Nada foi publicado. +

+ +
+
+ N + novas criadas +
+
+ N + já estavam +
+
+ — + falharam +
+
+ +
+ Criadas por tipo + Vídeo · N + + + Carrossel · N + + Foto · N +
+ +

+ Carrosséis entram como conteúdo criado, com as mídias dos filhos baixadas + automaticamente pela API oficial. O bloco de ressalva de peça-link só aparece para + link não encontrado ou Instagram indisponível. +

+ +
+ + +
+
+
+
+ +
+
+ CENA 05 +

Catálogo público /conteudos · desktop 1280 · card do Carrossel e filtro Tipo

+
+

+ Capa = primeiro filho (recomendação A do plano). A indicação de múltiplas mídias fica + sobre a capa (8 mídias, ícone de imagens) e o tipo aparece na tag Carrossel. + O filtro Tipo ganha Carrossel. +

+
+
+ Jorge Solla + Central de Conteúdos +
+ +
+
+ + +
+ +
+
+ + Tipo + + + +
+ Cidade + Região + Tema + Instituição + +
+ +
+
+

Escolha, compartilhe e peça voto

+

O play só carrega a mídia quando você pedir.

+
+ Abra o título para ver detalhes +
+ +
+
+
+ NEEDS ASSET · MÍDIA 1 DO CARROSSEL + + + 8 mídias + +
+
+ + + Carrossel + +

Fim da escala 6×1 é saúde

+

Trabalho · Salvador

+
+ + +
+
+
+ +
+
+ NEEDS ASSET · POSTER REAL + + 02:14 +
+
+ Vídeo +

Visita ao posto de saúde

+

Saúde · Feira de Santana

+
+ + +
+
+
+ +
+
+ “Saúde é direito.” +
+
+ Texto +

Por que defender o SUS

+

Saúde · Bahia

+
+ + +
+
+
+
+ +

+ O card abre a galeria; nela, Baixar pertence sempre à mídia selecionada. Não há + ação ambígua de “baixar mídias” nem pacote único (zip). +

+
+ +
+ Jorge José Santos Pereira Solla · Candidato a Deputado Federal · Nº 1313 · Federação + Brasil da Esperança (PT/PCdoB/PV) · CNPJ: 68.430.467/0001-05 · Propaganda eleitoral + gratuita · Eleições 2026 · 1º turno: 04/10/2026. +
+
+
+ +
+
+ CENA 06 +

Catálogo público · mobile 390 · card do Carrossel e filtro Tipo

+
+
+
+
+ Jorge Solla + +
+
+

PEÇA VOTO PRA SOLLA 1313

+

+ Mande uma peça.
Peça mais um voto. +

+
+
+ +
+ Tipo · Carrossel + Cidade + + Tema +
+ +
+
+ NEEDS ASSET · MÍDIA 1 + + + 8 mídias + +
+
+ + + Carrossel + +

Fim da escala 6×1 é saúde

+

Trabalho · Salvador

+
+ + +
+ Ver a galeria completa → +
+
+
+
+
+
+ +
+
+ CENA 07 +

+ Página pública /conteudos/<slug> · desktop 1280 · galeria, Baixar por mídia, + Compartilhar e nota de origem +

+
+
+
+ Jorge Solla + Voltar à Central +
+ +
+
+
+
NEEDS ASSET · MÍDIA 1 (imagem real)
+ + + Mídia 1 de 8 + + + +
+ +
+ + Mídia 1 de 8 · Foto +
+ +
+ 1 + 2 + + 3 + + + 4 + 5 + 6 + 7 + 8 +
+
+ +
+ + + Carrossel + +

Fim da escala 6×1 é saúde

+

+ Legenda oficial da publicação: Jorge Solla explica por que reduzir a jornada protege + a saúde de quem trabalha. Arraste para ver as 8 mídias e baixe a que quiser. +

+ +
+
+
Tema
+
Trabalho e saúde
+
+
+
Local
+
Salvador
+
+
+
Mídias
+
8 · 7 fotos, 1 vídeo
+
+
+
Origem
+
Instagram
+
+
+ +
+ + +
+

+ O compartilhamento usa o link da publicação no Instagram. As mídias foram baixadas + do perfil oficial; baixe cada uma pela galeria. +

+
+
+
+
+ +
+
+ CENA 08 +

+ Página pública · mobile 390 · galeria com dots + sheet de compartilhamento existente +

+
+
+
+
+ Central de Conteúdos +
+
+
+
NEEDS ASSET · MÍDIA 1
+ 1 de 8 · Foto + + +
+ + + + + + Carrossel + +

+ Fim da escala 6×1 é saúde +

+

+ Arraste para ver as 8 mídias. Baixe a que quiser e repasse a que fizer sentido. +

+
+ + +
+
+ + +
+ +
+
+

Peça esse voto no WhatsApp

+

A mensagem é sua: revise antes de abrir.

+
+ +
+ + + +

+ Sem destinatário e sem envio automático. Compartilhar e copiar usam o link do post + oficial; Baixar esta mídia permanece uma ação separada da galeria. +

+
+
+
+
+ +
+
+ CENA 09 +

Estados críticos da galeria · só imagens · com vídeo · grande · mídias chegando

+
+
+ +
+

SÓ IMAGENS · 5 MÍDIAS

+
+
NEEDS ASSET · MÍDIA 1
+ 1 de 5 · Foto + + +
+
+ + 5 fotos · sem vídeo +
+

+ Nenhum selo de play; o contador e a trilha bastam. A legenda segue pesquisável, sem + transcrição de vídeo. +

+
+ + +
+

COM VÍDEO · POSTER → PLAYER

+
+
NEEDS ASSET · POSTER DO VÍDEO-FILHO
+ 3 de 8 · Vídeo + 00:42 + +
+
+
+ NEEDS ASSET · VÍDEO EM REPRODUÇÃO (controles nativos) +
+
+
+
+
+
+
+

+ O vídeo só monta o player após o gesto; o vídeo-filho entra na transcrição da peça. +

+
+ + +
+

GRANDE · 12 MÍDIAS

+
+
NEEDS ASSET · MÍDIA 1
+ 1 de 12 · Foto + + +
+
+
+ 1 + 2 + 3 + 4 + 5 + 6 +
+ +
+

+ A trilha rola; o contador “N de M” e os botões ‹ › mantêm a navegação sem mapa de + miniaturas pressionado. +

+
+
+ +
+ +
+

+ FICHA INTERNA · MÍDIAS AINDA CHEGANDO +

+
+
NEEDS ASSET · MÍDIA 1
+ 1 de 8 · Foto +
+
+ 1 + 2 + + +
+
+

+ Baixando mídias… 3 de 8. Estados honestos, sem caixa de + falha e sem bloquear o que já chegou. +

+
+

+ Este é um estado da ficha interna. No público, a galeria só aparece depois que + todas as mídias estão prontas; o eleitor nunca recebe um slide incompleto. +

+
+ + +
+

LEGENDA / TEXTO DA PEÇA

+
+
NEEDS ASSET · MÍDIA 1
+ 1 de 8 · Foto +
+ + + Carrossel + +

Fim da escala 6×1 é saúde

+

+ Legenda oficial da publicação exibida sob a galeria — é ela que dá contexto a cada + mídia e alimenta a busca (junto da transcrição do vídeo-filho). +

+

+ A legenda é a mesma em todas as mídias: não há texto por slide. +

+
+
+
+ +
+
+ CERTIFICAÇÃO VISUAL +

Contrato do port e escolhas que o gate humano confirma

+
+
+

+ Design hi-fi certificado pelo designer de referência. A implementação deve portar estas + cenas com paridade; a aprovação final continua sendo decisão humana no gate. +

+
    +
  1. + Identidade. “Carrossel” aparece como tipo na ficha, no + card, na página e no filtro. O design não usa “álbum” em nenhum ponto. +
  2. +
  3. + Hierarquia pública. No card, Compartilhar é o + único CTA primário e Ver galeria abre a peça. Na página, + Baixar esta mídia + pertence ao slide selecionado; não existe download ambíguo do conjunto. +
  4. +
  5. + Compartilhamento. Compartilhar e Copiar link usam o + post oficial do Instagram. Compartilhar mídia não compete com esse gesto; a mídia é + obtida exclusivamente pelo botão de download do slide. +
  6. +
  7. + Capa e navegação. O primeiro filho é a capa. A galeria + combina palco, contador “N de M”, setas e trilha rolável; carrossel grande não + comprime miniaturas para caber. +
  8. +
  9. + Processamento. “Baixando mídias… N de M” é um estado + neutro da ficha em desktop e mobile. Publicar fica indisponível até todas chegarem; a + superfície pública nunca mostra slide parcial. +
  10. +
  11. + Vídeo-filho. Poster e duração antecedem o play; o + player só carrega após gesto, nunca reproduz automaticamente ao trocar de slide. A + legenda e a transcrição dos vídeos alimentam a leitura e a busca. +
  12. +
  13. + Recibo e legado. Carrossel entra na contagem criada e + no recorte por tipo, sem ressalva de peça-link. As 52 peças existentes recebem a mesma + identidade, galeria e estados das novas. +
  14. +
  15. + Acessibilidade do port. Galeria como região nomeada; + setas com nome acessível; posição anunciada em texto; miniaturas como lista com estado + selecionado; navegação por teclado, foco visível e respeito a movimento reduzido. +
  16. +
  17. + Assets. Nenhum SVG próprio foi necessário (ícones + lucide inline). As mídias reais seguem marcadas como NEEDS ASSET. +
  18. +
+

+ Pendência do gate humano: confirmar a direção visual certificada — capa no primeiro + filho, Compartilhar como CTA primário e publicação pública somente com a galeria + completa. A forma de dados e o mecanismo de processamento permanecem decisões de + engenharia. +

+
+
+
+ + diff --git a/docs/plans/central-conteudos-carrossel.md b/docs/plans/central-conteudos-carrossel.md new file mode 100644 index 00000000..c1663a84 --- /dev/null +++ b/docs/plans/central-conteudos-carrossel.md @@ -0,0 +1,99 @@ +# C240 — Central de Conteúdos — carrossel do Instagram como conteúdo de primeira classe + +Status: rascunho +Atualizado em: 2026-10-01 +Issue: #1399 +Priority: P1 +Impeccable: C — encaixe nas telas existentes (ficha interna C211 + catálogo/página pública S27), com um componente novo (galeria multi-mídia) +Design UI: docs/plans/central-conteudos-carrossel-ui-design.html +Appetite: ~3–4 dias eng; um outcome verificável +Responsável: — + +## Intenção + +O carrossel é o formato mais frequente do perfil oficial e hoje entra na Central pela porta dos fundos: vira "peça-link com motivo" e a ficha o apresenta como limitação ("Carrossel: sem arquivo único para baixar"), sem mídia alguma. A decisão original do C220 foi consciente ("carrossel não vira álbum"), mas o dono a reabriu em 2026-09-29 com evidência de produto nova: o carrossel deve ser **conteúdo de primeira classe** — a plataforma baixa automaticamente todas as mídias (imagens e vídeos) dos filhos pela API oficial do próprio perfil, transcreve/cataloga os vídeos como nas demais peças, e o público vê uma **galeria com Baixar (cada mídia) e Compartilhar** (post oficial). Há 50 carrosséis na janela de 60 dias do perfil e a esteira de importação está prestes a trazê-los; sem este item eles nascem incompletos e a assessoria aprende a ler conteúdo legítimo como erro. + +**Decisão de produto registrada (reabre anti-goal do C220):** baixar os filhos do carrossel pela via oficial é permitido e desejado; a mídia da plataforma passa a ter casa na Central como as demais peças. Nada de scraping/terceiro — segue o caminho oficial do C212/C220. + +## Persona e fluxo + +- **Persona / contexto:** assessoria de comunicação (`communicator`; `coordinator`/`candidate` também) importando o perfil e publicando peças; eleitor que consome e repassa o conteúdo na Central pública. +- **Job principal:** importar um carrossel e recebê-lo completo (todas as mídias), catalogado e pronto para publicar; eleitor: ver a galeria, baixar e compartilhar. +- **Fluxo desejado:** importa do perfil / cola o link → as mídias do carrossel são baixadas automaticamente, os vídeos transcritos e a peça catalogada → a ficha interna mostra "Carrossel" com suas mídias (não uma falha) → publica → o eleitor vê a galeria e usa Baixar (cada mídia) e Compartilhar (post oficial). +- **Anti-goals de produto:** não baixar mídia de terceiro (permanente); não exigir anexo manual (a promessa é automático); não publicar automaticamente; não criar segundo modelo de conteúdo/segunda peça; não virar galeria de vaidade com player/slideshow próprio do Instagram. + +### Esboço de fluxo (C) + +```text +[Importar do perfil / Adicionar por link] → carrossel reconhecido como "Carrossel" + → API oficial entrega os filhos (media_type + media_url): imagens e vídeos baixados automaticamente + → vídeos dos filhos entram na transcrição; peça catalogada (título, descrição, temas, cidade) + → ficha interna: identidade Carrossel + galeria das mídias; sem caixa de falha + → publicação → catálogo e página pública: galeria + Baixar (cada mídia) + Compartilhar (post oficial) + → recibo da importação conta carrosséis como conteúdo trazido +[outcome: carrossel deixa de ser peça-link sem mídia e passa a ser conteúdo completo da Central] +``` + +### Design UI (C) + +- Design UI (gate): `docs/plans/central-conteudos-carrossel-ui-design.html` (a produzir) + +## Objetivo e aceite + +- Um carrossel importado do perfil (ou adicionado por link) baixa automaticamente **todas** as mídias dos filhos pela API oficial, sem scraping e sem anexo manual. +- A peça do carrossel tem identidade própria ("Carrossel") na Central e nunca aparece com a linguagem de falha/limitação que existe hoje. +- Vídeos dentro do carrossel entram na transcrição/catálogo (busca por fala/tema consistente com as demais peças). +- Publicado, o carrossel aparece no catálogo e na página pública com galeria das mídias e ações **Baixar** (cada mídia) e **Compartilhar** (post oficial), mantendo o compartilhamento do link do Instagram. +- O recibo da importação conta o carrossel como conteúdo trazido (não como "peça-link com motivo"). +- Peças de carrossel já criadas (importações anteriores / backfill) ganham o mesmo tratamento e mídias — nada fica preso no formato antigo. +- Guardrails: só o perfil próprio via API oficial (C212); mídia de terceiro nunca é baixada; nada é publicado automaticamente; curadoria e kill switch continuam por peça; sem PII nova. + +## Dados (intenção) + +- **Vou apresentar dados?** Não — apresentação de um tipo de conteúdo, não analytics (C213 segue dono da circulação). +- **Decisões desbloqueadas:** N/A — a decisão da assessoria é editorial ("publicar ou não o carrossel"). +- **Forma:** N/A — sem números novos em tela. + +## Dados da decisão (literais) + +- Nome visível do tipo: **"Carrossel"** (sem sinônimo "álbum"). +- Ações públicas do carrossel: **Baixar** (cada mídia da galeria) e **Compartilhar** (WhatsApp/link do post oficial) — além de **Copiar link** como nas demais peças. +- Recibo da importação: carrossel entra na contagem de conteúdo criado com o rótulo do tipo, e não no bloco de ressalvas de peça-link. +- Ficha interna: o motivo `carrossel` deixa de representar limitação; a peça lê como conteúdo completo. +- Transcrição: vídeos-filhos entram no mesmo pipeline de transcrição das demais peças. + +## Direção no codebase (hipótese) + +- **Áreas prováveis:** `src/lib/contentPiece.ts` (tipos/labels/razões), `src/utilities/content/contentPieceLink.ts` (resolução do link e download dos filhos), `src/utilities/content/contentPieceJob.ts` (processar N mídias; transcrever vídeos-filhos), `src/utilities/content/contentPieceCataloging.ts`, ficha interna `src/app/(campaign)/campanha/(app)/comunicacao/conteudos/[id]/page.tsx`, catálogo/página pública `src/components/conteudos/` e `src/lib/contentPieceCatalog.ts`, rotas de mídia `src/app/(frontend)/conteudos/[slug]/`, recibo do importador `src/components/campaign/content/ImportContentPieceProfileDialog.tsx`. +- **Precedente a olhar:** o fluxo single-media do C211/C220/C230 (que este item generaliza), `MEDIA_FIELDS` com `children{media_type,media_url,thumbnail_url}` (já presente), a galeria/carrossel do site público (`src/components/CampaignCarousel.tsx`) como referência de linguagem, e a taxonomia `video|foto|texto|audio|card`. +- **Risco de acoplamento:** o modelo atual é uma mídia por peça (`contentPiece.media`) — a generalização para N mídias precisa preservar as peças existentes e as rotas públicas (`/conteudos//midia`, frame, OG); `linkFailureReason` é lido por ficha, importador e testes (não quebrar `nao-encontrado`/`indisponivel`/`sem-credencial`); o S27 já renderiza peça-link — a entrega encaixa nele, sem segundo modelo. + +## Dependências + +- **Suaves:** C211 (peça/ficha), C220 (link→peça), C230 (importar do perfil), S27 (catálogo/página pública), C226 (frame) — todos entregues. +- **Relação com a operação de importação de 60 dias:** o backfill de 60 dias **já rodou** (2026-09-29) e criou **52 peças de carrossel** — 40 publicadas e 12 rascunhos — todas como peça-link sem arquivo; o aceite cobre o tratamento e as mídias dessas peças existentes. + +## Fora de escopo + +- Stories, destaques e demais formatos sem arquivo. +- Reprocessar carrosséis de terceiros (permanente). +- Player/slideshow próprio com reprodução automática ou embed do Instagram. +- Qualquer mudança no board/feed da home ou na circulação (C213). +- Download em pacote único (zip) — se pedido depois, item novo. + +## Rabbit holes de produto + +- **"Já que baixa os filhos, monta um álbum/zip".** Se alguém "só completar": pacote, álbum paralelo, storage duplicado. **Corte:** galeria com download por mídia; pacote é item futuro. +- **"Então cria um tipo novo para tudo que é link"** (YouTube, rádio). Se alguém "só completar": taxonomia paralela. **Corte:** o item trata o carrossel; os demais seguem como estão. +- **"Publica o carrossel automaticamente".** Se alguém "só completar": auto-publicação. **Corte:** curadoria continua humana. + +## Questões em aberto (produto) + +- **Ordem de execução na Central (galeria antes/depois da transcrição)?** **Opções:** A) peça publica quando as mídias estiverem prontas e o catálogo completa depois (como as demais) | B) segurar até transcrição concluir. **Recomendação:** A — mesmo contrato do C211 (job em background). _(assumido — validar com produto)_ +- **Capa do carrossel no catálogo?** **Opções:** A) primeiro filho (comportamento atual do thumbnail) | B) escolha manual na ficha. **Recomendação:** A, com troca manual opcional se o picker já existir. _(assumido — validar com produto)_ + +## Referências + +- GitHub Issue #— (após registro); design UI (gate): `docs/plans/central-conteudos-carrossel-ui-design.html`. +- Planos irmãos: `central-conteudos-ingestao.md` (C211) · `central-conteudos-link-instagram.md` (C220) · `central-conteudos-importar-perfil.md` (C230) · `central-conteudos-publica.md` (S27) · `central-conteudos-preview-frame-video.md` (C226). +- Arquivos-pista: `src/utilities/socialFeed/instagramFeed.ts:106-115` (MEDIA_FIELDS com children) · `src/utilities/content/contentPieceLink.ts:304-313` (ramo carrossel atual) · `src/lib/contentPiece.ts:355-379` (motivos) · `src/components/conteudos/ContentPieceDetail.tsx` · `src/components/conteudos/ContentPieceCard.tsx` · `src/components/campaign/content/ImportContentPieceProfileDialog.tsx:50-64` (recibo).