API Reference: Porta-Vozes
O modulo Porta-Vozes permite que o administrador selecione membros cujas postagens em redes sociais (Instagram, YouTube, Twitter/X) aparecem no feed do nucleo como embed nativo (iframe).
Conceito
Porta-vozes sao membros selecionados pelo administrador para representar o nucleo nas redes sociais. Suas postagens sao exibidas diretamente no feed do nucleo, utilizando embeds nativos de cada plataforma (Instagram /embed, YouTube /embed, Twitter embed).
O sistema suporta sincronizacao automatica via RSS (cron a cada 30 minutos usando @nestjs/schedule) e tambem sincronizacao manual pelo admin. Alem disso, o admin pode adicionar postagens manualmente colando a URL do post — o sistema auto-detecta a plataforma e gera a URL de embed.
Cargo PORTA_VOZ
O cargo PORTA_VOZ e atribuido pelo Administrador a membros que representam o nucleo publicamente. Alem de aparecerem na pagina de porta-vozes, membros com esse cargo ganham permissoes extras: criar comunicados, enquetes, enviar emails, criar tarefas e usar o Assistente IA.
Migration
00013: Cria as tabelas porta_vozes, porta_voz_redes e porta_voz_postagens.
Endpoints — Porta-Vozes
Base URL: /api/porta-vozes
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| GET | /api/porta-vozes | Coord/Admin | Listar porta-vozes com suas redes sociais |
| POST | /api/porta-vozes | Admin | Adicionar membro como porta-voz |
| DELETE | /api/porta-vozes/:id | Admin | Remover porta-voz |
POST /api/porta-vozes — Body
{
"usuarioId": "uuid-do-membro"
}Endpoints — Redes Sociais
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| POST | /api/porta-vozes/:id/redes | Admin | Adicionar rede social a um porta-voz |
| DELETE | /api/porta-vozes/redes/:id | Admin | Remover rede social |
POST /api/porta-vozes/:id/redes — Body
{
"plataforma": "INSTAGRAM | YOUTUBE | TWITTER",
"username": "@usuario",
"urlPerfil": "https://instagram.com/usuario", // opcional
"rssUrl": "https://rsshub.app/instagram/user/usuario" // opcional
}Endpoints — Postagens
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| GET | /api/porta-vozes/:id/postagens | Autenticado | Listar postagens embeddadas do porta-voz |
| POST | /api/porta-vozes/:id/postagens | Admin | Adicionar postagem manualmente (cola URL) |
POST /api/porta-vozes/:id/postagens — Body
{
"url": "https://www.instagram.com/p/ABC123/"
}O sistema auto-detecta a plataforma pela URL e gera a URL de embed automaticamente.
Endpoints — Sync
| Metodo | Endpoint | Permissao | Descricao |
|---|---|---|---|
| POST | /api/porta-vozes/sync | Admin | Forca sincronizacao RSS de todas as redes |
Parse de URLs por Plataforma
O sistema identifica a plataforma e extrai o ID da postagem a partir da URL:
| Plataforma | Padrao de URL | Embed gerado |
|---|---|---|
instagram.com/p/{id} | instagram.com/p/{id}/embed | |
| YouTube | youtube.com/watch?v={id} | youtube.com/embed/{id} |
| Twitter/X | twitter.com/.../status/{id} | Embed via Twitter oEmbed / iframe |
Sincronizacao Automatica
- Cron job a cada 30 minutos via
@nestjs/schedule - Busca RSS feeds configurados em cada rede social do porta-voz
- Novas postagens encontradas sao inseridas automaticamente
- Cada nova postagem gera um item no feed do nucleo e uma notificacao para os membros
Sincronizacao Manual
O admin pode forcar a sincronizacao a qualquer momento via POST /api/porta-vozes/syncou pelo botao "Sincronizar Agora" na interface.
RSS Automatico
O sistema busca automaticamente novas postagens via RSS feeds configurados:
- Cron job executado a cada 30 minutos via
@nestjs/schedule - Para cada porta-voz, busca RSS de todas as redes sociais configuradas com
rssUrl - Novas postagens sao inseridas automaticamente, gerando item no feed e notificacao
- Duplicatas sao ignoradas (verificacao por URL da postagem)
- Logs de sincronizacao registrados para debug
Layout Responsivo
A pagina de porta-vozes e responsiva:
- Desktop: Grid de cards com foto do porta-voz, nome, redes sociais e ultimas postagens lado a lado
- Mobile: Cards empilhados em coluna unica. Postagens com embeds responsivos (largura 100%). Redes sociais como icones clicaveis.
- Acoes admin (adicionar/remover porta-voz, adicionar rede/postagem) adaptadas para touch em mobile