diff --git a/docs/changelog/2026-09-13-c154.md b/docs/changelog/2026-09-13-c154.md new file mode 100644 index 00000000..1503ae33 --- /dev/null +++ b/docs/changelog/2026-09-13-c154.md @@ -0,0 +1 @@ +**C154 — Vertical Comunicação: papel communicator + Acervo pesquisável (2026-09-13):** o assessor de comunicação ganhou a vertical própria. `communicator` vê e navega só `/campanha/comunicacao` (nav própria; sem áreas de staff, sem Sollinha — o débito do C153 dos chips de líder foi resolvido escondendo as superfícies do assistente para esse papel via `canUseCampaignAssistant`); `coordinator`/`candidate` também veem; `advisor`/`leader` são redirecionados pelo gate novo `speechCatalog` do `requireCampaignPageActor`. O Acervo (`/campanha/comunicacao/acervo`) busca por termo com e sem acento sobre os segmentos ASR (destaque `` no trecho) e keywords oficiais como termo exato, com filtros de ano, tema, alcance, fase, município citado e duração em URL canônica (`resolveListUrl`/`CampaignListOmnibox`/`CampaignHeaderFilterPopover` com trigger em chip opt-in) e paginação **por discurso**: `speech.searchText` (concatenação normalizada dos segmentos, mantida pelo `upsertSpeechBundle`, coluna opcional + índice GIN `pg_trgm` hand-written com backfill em `20260913_150000_backfill_speech_search_text_trgm_index`) resolve o "N falas encontradas" sem dedupe entre páginas. O detalhe (`/campanha/comunicacao/acervo/[id]`) tem player `