Guia Operacional: Gerar Signal™
Propósito: Gerar e publicar uma nova edição do Signal™, o resumo semanal de inteligência estratégica do Grupo CSV.
Regras Invioláveis
O PDF do Signal™ deve ter exatamente 1 (uma) página. Essa restrição é absoluta. Ajustar diagramação, tamanho de fonte e comprimento dos resumos para garantir que todo o conteúdo caiba em uma única página A4.
Português brasileiro com acentuação e cedilha em TODOS os artefatos. Isso inclui: PDF (títulos, resumos, observações), signal.md, metadata.yml, corpo do e-mail (text e html), assunto do e-mail, from_name, e qualquer outro texto gerado. Nunca omitir diacríticos por receio de encoding. A API csv-mail e a biblioteca fpdf2 aceitam UTF-8 nativamente. Violação desta regra invalida a edição.
Consultar o Dicionário Oficial antes de gerar qualquer texto para garantir grafias corretas de nomes, instituições, projetos e siglas.
Nunca usar
replace_contentpara edições pontuais no Notion. Para correções de grafia ou atualizações parciais, usar exclusivamente o comandoupdate_contentcomcontent_updates. O comandoreplace_contentsubstitui TODO o conteúdo da página e só deve ser usado para reescrita total intencional. Violação desta regra causa perda de dados (incidente S11/2026).A numeração da edição é sempre a última edição publicada + 1. Consultar o sidebar (
docs/.vitepress/config.mts) ou odocs/signal/index.mdpara confirmar o número correto antes de criar a pasta. NÃO usar a semana ISO do calendário. Exemplo: se a última edição publicada é S18, a próxima é S19, independentemente da semana do ano em que estamos.Logo no PDF: usar SEMPRE a versão negativa (branca) sobre o header azul. O arquivo correto é
grupo_csv_logo_negative.png(logo horizontal full-color negative com fundo transparente). Nunca usar a logo azul padrão (grupo_csv_logo.png) sobre fundo azul — resulta em logo ilegível. Caminho do asset de referência:assets/visual-identity/grupo-csv/logo/png/grupo-csv_logo_horizontal_full-color_negative_transparent.png.Sidebar do VitePress é obrigatório. Toda nova edição DEVE ser adicionada ao arquivo
docs/.vitepress/config.mtsna seção/signal/. Sem essa entrada, a edição não aparece na navegação lateral do Hub.
Workflow de Geração
Este processo é executado semanalmente, tipicamente às segundas-feiras, para cobrir a semana anterior (D-7 a D-1).
Fase 1: Coleta de Sinais
- Varredura Notion: Buscar por todas as páginas criadas ou editadas na última semana que contenham palavras-chave relevantes (
RADAR,EVS,Axys,decisão,estratégia,projeto, etc.). - Varredura Gmail: Buscar por todas as threads de e-mail no mesmo período com os mesmos critérios de palavra-chave.
- Consolidação Bruta: Agregar todo o conteúdo textual (páginas do Notion e corpos de e-mail) em um único arquivo de trabalho (e.g.,
varredura_sNN.md).
Fase 2: Análise e Síntese
- Identificação de Fatos: Ler o conteúdo consolidado e identificar os 5 a 7 acontecimentos mais relevantes da semana. Um "fato" pode ser uma reunião importante, uma decisão tomada, o avanço de um projeto, uma nova parceria, ou uma movimentação de mercado.
- Categorização: Atribuir a cada fato uma tag de categoria, conforme o
padrão-editorial.md. - Síntese: Para cada fato, escrever um título claro e um resumo de 2 a 4 frases que capture o essencial do acontecimento.
- Outras Movimentações: Listar outros pontos relevantes, mas de menor impacto estratégico, em formato de bullet points.
Fase 3: Criação da Edição
- Determinar Número da Edição: Consultar
docs/signal/index.mdoudocs/.vitepress/config.mts. O número é a última edição publicada + 1. NÃO calcular pela semana ISO. - Criar Estrutura de Pastas: No diretório
signal/edicoes/AAAA/, criar uma nova pastaSNN(e.g.,S19). Dentro dela, criar a subpastaassets. - Criar
signal.md: Usar otemplates/signal_template.mdpara criar o arquivosignal/edicoes/AAAA/SNN/signal.md. Preencher com os fatos e movimentações sintetizados na Fase 2. - Criar
metadata.yml: Usar otemplates/metadata_template.ymlpara criar o arquivosignal/edicoes/AAAA/SNN/metadata.yml. Preencher todos os campos.
Fase 4: Geração do PDF
- Atualizar Script: Atualizar o script
tools/signal-pdf/signal-pdf-gen.pycom o conteúdo da nova edição. - Verificar Logo: Confirmar que
LOGO_PATHaponta paragrupo_csv_logo_negative.png(logo branca para header azul). - Verificar Acentuação: Confirmar que TODOS os textos no script (PERIODO, EXECUTIVO, FATOS, OBSERVACOES) contêm acentuação e cedilha corretas em PT-BR.
- Executar Script: Rodar o script para gerar o PDF.bash
python3 tools/signal-pdf/signal-pdf-gen-sNN.py - Validar 1 Página: Confirmar que o PDF gerado tem exatamente 1 página. Se ultrapassar, reduzir resumos e reexecutar.
- Mover PDF: Copiar o arquivo PDF gerado (e.g.,
Signal_S19_2026.pdf) para a pastasignal/edicoes/AAAA/SNN/assets/.
Fase 5: Publicação no Repositório
- Espelhar Arquivos: Copiar a pasta da nova edição (
signal/edicoes/AAAA/SNN/) para o diretóriodocs/signal/edicoes/AAAA/SNN/. - Atualizar Índice: Editar o arquivo
docs/signal/index.md, adicionando a nova edição à tabela de "Edições publicadas". - Atualizar Sidebar: Editar o arquivo
docs/.vitepress/config.mtspara adicionar a nova edição na barra lateral do Signal™. Formato:{ text: 'SNN — DD-DD Mês', link: '/signal/edicoes/AAAA/SNN/signal' }. - Commit e Push:bash
git add . git commit -m "signal: publica Signal SNN/AAAA (DD-DD/MMM)" git push
Fase 6: Envio por E-mail e Entrega
Obrigatório: O envio do Signal™ deve ser realizado exclusivamente pela skill
/csv-mail(/home/ubuntu/skills/csv-mail/SKILL.md). Ler a skill antes de executar o envio.
- Enviar E-mail via csv-mail: Usar a API
POST /send-template(template institucional) com o PDF anexo em base64. O headerUser-Agent: csv-mail-client/1.0é obrigatório para evitar bloqueio Cloudflare 1010.- Endpoint:
https://mail-api.grupocsv.com/send-template - Lista de distribuição:
guilherme@grupocsv.comguilherme.thome@unimedgv.com.brnaline@grupocsv.comnaline.rocha@unimedgv.com.br
- Tags obrigatórias:
source:manus,project:signal - from_name:
Guilherme Thomé(com acento obrigatório) - from_email:
guilherme@mail.grupocsv.com - reply_to:
guilherme@grupocsv.com
- Endpoint:
- Assunto do E-mail:
Signal™ SNN/AAAA — Resumo Semanal Estratégico (DD a DD de mês)— com acentos e ™. - Corpo do E-mail (text): Parágrafo breve indicando a edição, o período, o número de fatos estratégicos e os destaques principais. OBRIGATORIAMENTE em português brasileiro com acentuação e cedilha completas.
- Confirmar e Entregar: Após a confirmação do envio (verificar
success: trueeidretornado), o PDF é disponibilizado ao usuário para download.
Fluxo de Correção
Quando uma edição publicada contiver erro (formato, conteúdo, grafia), seguir este fluxo:
- Corrigir o PDF e o
signal.mdno repositório, substituindo a versão anterior. Não versionar a versão incorreta. - Commit com mensagem:
fix(signal): corrige edição SNN/AAAA — [descrição breve] - Reenviar e-mail com assunto:
Signal™ SNN/AAAA — Versão pós-correção - O corpo do e-mail segue o padrão normal, sem menção explícita ao erro corrigido.
- Entregar o PDF corrigido ao usuário para download.
Salvaguardas para Edição no Notion (MCP)
Esta seção documenta o uso correto dos comandos de edição de conteúdo do MCP Notion, após incidente de perda de dados em S11/2026.
Comandos de Edição de Conteúdo
| Comando | Uso correto | Parâmetros | Risco |
|---|---|---|---|
update_content | Edições pontuais (search-and-replace) | content_updates: array de {old_str, new_str, replace_all_matches} | Baixo — altera apenas o trecho encontrado |
replace_content | Reescrita total da página | new_str: conteúdo completo novo | ALTO — apaga todo o conteúdo existente |
Exemplo Correto — Correção de Grafia
{
"page_id": "2fcdc8a9-...",
"command": "update_content",
"content_updates": [
{
"old_str": "Relay",
"new_str": "Relay™",
"replace_all_matches": true
}
]
}Exemplo ERRADO — Nunca Fazer
{
"page_id": "2fcdc8a9-...",
"command": "replace_content",
"old_str": "Relay",
"new_str": "Relay™"
}Este comando apaga todo o conteúdo da página e substitui por "Relay™". O parâmetro old_str não pertence ao comando replace_content.
Regra Geral
- Para correções de grafia, adição de termos ou atualizações parciais: sempre
update_content. - Para reescrita total intencional (raro):
replace_contentcomnew_strcontendo o conteúdo completo. - Antes de qualquer edição no Dicionário, fazer
fetchda página para confirmar o conteúdo atual.
Checklist de Qualidade
- [ ] O PDF tem exatamente 1 (uma) página? (REGRA INVIOLÁVEL)
- [ ] A logo no PDF é a versão negativa (branca) sobre o header azul?
- [ ] Acentuação e cedilha estão corretas em TODO o conteúdo (PDF, Markdown, e-mail)?
- [ ] O número da edição foi confirmado via index.md/config.mts (última + 1)?
- [ ] O PDF foi gerado em alta qualidade e revisado visualmente?
- [ ] O nome do arquivo PDF segue o padrão
Signal_SNN_AAAA.pdf? - [ ] O arquivo
signal.mdestá preenchido e formatado corretamente? - [ ] O arquivo
metadata.ymlestá completo e válido? - [ ] A nova edição foi adicionada ao
docs/signal/index.md? - [ ] A sidebar do VitePress (
config.mts) foi atualizada com a nova entrada? - [ ] Todos os links funcionam como esperado?
- [ ] Todos os nomes conferem com o Dicionário Oficial?
- [ ] O e-mail foi enviado para os 4 destinatários da lista de distribuição?
- [ ] O assunto e corpo do e-mail contêm acentuação correta em PT-BR?
