Sistema que permite reutilizar conteúdos gerados em múltiplos perfis. Você cria um carrossel para um perfil e pode vinculá-lo a outros perfis sem precisar gerá-lo novamente.
-
Tabela de Relacionamento Many-to-Many
- Um conteúdo pode ser vinculado a múltiplos perfis
- Um perfil pode ter conteúdos próprios + compartilhados
-
API Completa
- POST
/api/content/{id}/link- Vincular conteúdo a perfil - DELETE
/api/content/{id}/link- Desvincular - GET
/api/content/{id}/link- Listar vínculos
- POST
-
Interface Visual
- Modal de vinculação com busca de perfis
- Badges indicando conteúdo "Original" vs "Compartilhado"
- Botão "Vincular" em cada conteúdo
-
Soft Delete
- Vínculos podem ser removidos e restaurados
- Histórico mantido no banco
CREATE TABLE content_profile_links (
id UUID PRIMARY KEY,
content_id UUID REFERENCES content_suggestions(id),
profile_id UUID REFERENCES profiles(id),
link_type VARCHAR(50), -- 'original', 'shared', 'adapted'
linked_at TIMESTAMP,
notes TEXT,
deleted_at TIMESTAMP
);original- Perfil para qual o conteúdo foi criadoshared- Conteúdo compartilhado de outro perfiladapted- Conteúdo adaptado/modificado (futuro)
IMPORTANTE: Aplique as migrations na ordem:
-- 1. Primeiro, aplique soft delete (se ainda não aplicou)
-- database/migrations/006_add_soft_delete_all_tables.sql
-- 2. Depois, aplique vinculação de conteúdos
-- database/migrations/007_content_profile_links.sqlComo aplicar:
- Acesse: https://supabase.com/dashboard
- Vá em SQL Editor
- Cole o conteúdo da migration
- Clique em Run
- Acesse:
/dashboard/profiles/{id}/content - Veja a lista de conteúdos gerados
- Clique no botão "Vincular" no conteúdo desejado
- Modal abre com lista de perfis
- Busque o perfil desejado
- Clique em "Vincular"
- Pronto! Conteúdo agora aparece em ambos os perfis
- Na mesma tela, clique em "Vincular" novamente
- Perfis já vinculados terão badge "Vinculado"
- Clique em "Desvincular" ao lado do perfil
- Confirme a ação
Na página de conteúdos (/dashboard/profiles/{id}/content):
- Badge "Original" = Conteúdo criado para este perfil
- Badge "De @username" = Conteúdo compartilhado de outro perfil
A API retorna breakdown dos conteúdos:
{
"contents": [...],
"total": 15,
"breakdown": {
"original": 10,
"shared": 5
}
}POST /api/content/{content_id}/link
Content-Type: application/json
{
"profile_id": "uuid",
"link_type": "shared",
"notes": "Adaptado para público B2B"
}DELETE /api/content/{content_id}/link?profile_id={profile_id}GET /api/content/{content_id}/link
Response:
{
"content_id": "uuid",
"linked_profiles": [
{
"id": "link-uuid",
"link_type": "shared",
"linked_at": "2026-02-17T...",
"profile": {
"id": "profile-uuid",
"username": "exemplo",
"full_name": "Exemplo da Silva"
}
}
],
"total": 3
}Cenário: Você gerencia 3 marcas diferentes
- Cria carrossel educacional para Marca A
- Vincula o mesmo carrossel para Marcas B e C
- Economiza tempo e mantém consistência
Cenário: Testar performance do mesmo conteúdo em perfis diferentes
- Cria conteúdo otimizado para Perfil A
- Vincula para Perfil B (público similar)
- Compara métricas de engajamento
Cenário: Empresa com múltiplos perfis regionais
- Matriz cria conteúdo padrão
- Vincula para todas as filiais
- Cada filial pode adaptar localmente (futuro)
database/migrations/007_content_profile_links.sql- Migrationapp/api/content/[id]/link/route.ts- API de vinculaçãocomponents/molecules/link-content-modal.tsx- Modal UI
app/api/profiles/[id]/contents/route.ts- Incluir conteúdos vinculadosapp/dashboard/profiles/[id]/content/page.tsx- Interface com badges
- Editar conteúdo vinculado (criar versão adaptada)
- Estatísticas de compartilhamento por conteúdo
- Notificações quando alguém vincula seu conteúdo
- Permissões de compartilhamento (público/privado)
- Histórico de modificações em conteúdos adaptados
- Biblioteca de conteúdos compartilhados (marketplace)
- Tags e categorias para facilitar busca
- Análise de performance cross-perfil
- Templates de conteúdo reutilizáveis
Causa: Tentando vincular novamente um conteúdo já vinculado Solução: Verifique a lista de vínculos antes de tentar vincular
Causa: Profile ID inválido ou perfil foi deletado
Solução: Verifique se o perfil existe na tabela profiles
Causa: Cache do frontend ou erro na migration Solução:
- Recarregue a página (Ctrl+R)
- Verifique se a migration 007 foi aplicada no Supabase
- Confira logs do console do navegador
- Migration 007 criada
- API de vinculação implementada
- Modal de vinculação criado
- Interface atualizada com badges
- Soft delete implementado
- Documentação completa
- APLICAR MIGRATION NO SUPABASE
⚠️ - Testar vinculação entre perfis
- Testar desvinculação
- Verificar badges "Original" e "Compartilhado"
Para dúvidas ou problemas:
- Verifique este documento
- Confira logs do servidor (
npm run dev) - Inspecione console do navegador (F12)
- Verifique se migrations foram aplicadas no Supabase
Implementado por: Dex (Dev Agent) Data: 2026-02-17 Versão: 1.0 Status: Pronto para uso (após aplicar migrations)