teqo-backup/src/lib/schemas
Francisco Solla 10327a7451 feat(C236): publicar, despublicar e apagar em lote na Central de Conteúdos
A lista /campanha/comunicacao/conteudos ganha um modo de seleção opt-in
que envolve os dois corpos (tabela e card list) com um estado client
compartilhado, chaveado pela URL canônica (a seleção morre em
página/filtro e nunca cresce para além da página visível). Com seleção
ativa, a barra flutuante aplica o mesmo veredito unitário à seleção:
Publicar/Despublicar agem direto com recibo honesto; Apagar sempre
confirma no CampaignDeleteDialog reusado (novo caminho onConfirm
aditivo), avisando os links públicos só quando a seleção carrega
publicadas.

O transporte é uma rota única (POST .../conteudos/lote,
campaignJsonMutationRoute, teto de 50 ids) que itera server-side as ações
donas: cada peça mantém a própria transação, o gate fresco e a limpeza
best-effort de mídia; a falha de uma nunca reverte as demais e o recibo
separa afetadas x falhas (2 de 3 peças apagadas. 1 falhou.).

Sem migration, sem Consent novo, sem rota pública (S27) e sem mudar a
semântica do C222. Cobertura: int do lote (papéis, dedupe, mídia, evento,
tag, falha parcial, schema), unit do builder/barra/seleção e e2e HTTP.

Design tier: DEGRADED (artefato de origem sem certificação frontier) —
crítica do designer aplicada no escopo do item; entrega bloqueada para
sign-off humano antes do PR. Related #1388
2026-09-29 22:26:26 -03:00
..
activity.ts feat(campaign): C165 — importa eventos do Google como atividades sem município (Closes #1010) 2026-09-15 11:54:21 -03:00
advisor.ts feat(C141): perfis de permissão por assessor — Visão × Edição configuráveis, enforcement fail-closed (Closes #105) 2026-08-20 14:25:01 -03:00
calendarFeed.ts feat(C16): add calendar feed sync by filter with Google Calendar import link (#419) 2026-08-08 14:47:17 +00:00
campaign-login.ts Add remembered campaign sessions 2026-07-27 08:57:26 -03:00
campaignDemand.ts feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
campaignDemandInput.ts feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
campaignNewsletter.ts feat(S9): captura de novidades da campanha na home pública (form + CTA do hero) 2026-08-20 02:19:58 +00:00
campaignPassword.ts RS+ Fase 1+3: auth read leve, password fields e login state 2026-08-01 06:07:28 +00:00
campaignWebAuthn.ts Adopt B32+'s JSON route shell and fetch helper in the WebAuthn paths. 2026-07-28 11:33:22 -03:00
comment.ts Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
contact.ts feat: S9+ (#771) — integridade de consentimento e alinhamento das ações públicas 2026-08-25 00:13:47 -03:00
contentEvent.ts feat(S38): cards personalizáveis como itens do catálogo (Closes #1304) 2026-09-24 16:57:03 -03:00
contentPiece.ts feat(C236): publicar, despublicar e apagar em lote na Central de Conteúdos 2026-09-29 22:26:26 -03:00
faceSearch.ts feat(C234): busca por selfie no álbum público — índice A/C consentido, selfie on-device 2026-09-27 20:04:41 -03:00
homeSearch.ts B92 — wizard idle suggest: rank + loader + UI 2026-08-01 07:01:19 +00:00
invite.ts style: prettier 2026-08-01 06:09:33 +00:00
leadership.ts feat(C139): schemas e actions de contato — criação staff e edição por célula 2026-08-13 14:12:53 -03:00
municipality.ts B154 — criar assessor inline no popover da lista de municípios 2026-08-03 22:46:06 -03:00
municipalityUpdate.ts feat(campaign): C88 deliberação na atualização — responsável, fio e resolvido (Closes #397) 2026-08-23 18:58:26 -03:00
organization.ts Engineering Pass 3: consolidate patterns and lock them with guards. 2026-07-29 06:11:29 -03:00
personCell.ts feat(C128): ciclo de vida das capacidades pelas células de /campanha/pessoas (Closes #695) 2026-08-12 15:29:56 -03:00
personDelete.ts feat(C100): lista unificada de pessoas em /campanha/pessoas 2026-08-10 13:45:46 -03:00
personGenders.ts feat(C139): página /campanha/contatos — lista desktop com células editáveis, criação e filtros 2026-08-13 14:29:11 -03:00
petition-form.ts Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
primitives.ts B154 — criar assessor inline no popover da lista de municípios 2026-08-03 22:46:06 -03:00
recording.ts fix(C199): upload de gravações fatiado em 16 MiB — escapa do 413 do edge 2026-09-28 19:36:12 -03:00
reel.ts feat(C194): biblioteca de reels na vertical Comunicação (#1153) 2026-09-18 21:54:37 -03:00
speechCut.ts feat(C217): cortes e links compartilhaveis na fonte "Falas na internet" (Closes #1293) 2026-09-24 20:17:54 -03:00
speechVod.ts feat(C193): reel privado no CMS — modelo, upload privado e kill switch (Closes #1152) 2026-09-18 17:48:34 -03:00
stateDeputy.ts feat(C129): nome de legenda da dobradinha — campo ballotName + display discreto sob o nome (Closes #696) 2026-08-12 12:52:35 -03:00
suggestion.ts E11 post-rebase simplify: clamp the composed rationale, extract firstFormActionMessage at its 3rd call site, keep metrics server-side. 2026-07-28 14:03:29 -03:00
supporter.ts feat(C112): múltiplos telefones por pessoa — Contact.phones array (ordem = prioridade) 2026-08-11 10:47:02 -03:00
votePledge.ts Engineering Pass 3: consolidate patterns and lock them with guards. 2026-07-29 06:11:29 -03:00
whatsapp-form.ts Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00