diff --git a/sql/social_integrations.sql b/sql/social_integrations.sql new file mode 100644 index 0000000..8d2f740 --- /dev/null +++ b/sql/social_integrations.sql @@ -0,0 +1,36 @@ +-- Organic social connection slots per tenant +-- Idempotent. (Distinct from meta_ads / paid.) + +alter table public.integrations drop constraint if exists integrations_provider_check; +alter table public.integrations + add constraint integrations_provider_check + check (provider in ( + 'meta_ads', + 'google_ads', + 'ga4', + 'search_console', + 'tag_manager', + 'clientify', + 'klaviyo', + 'mailchimp', + 'google_drive', + 'wordpress', + 'prestashop', + 'shopify', + 'instagram', + 'facebook', + 'tiktok', + 'linkedin' + )); + +insert into public.integrations (tenant_id, provider, status, label) +select t.id, p.provider, 'disconnected', p.label +from public.tenants t +cross join ( + values + ('instagram', 'Instagram'), + ('facebook', 'Facebook Page'), + ('tiktok', 'TikTok'), + ('linkedin', 'LinkedIn') +) as p(provider, label) +on conflict (tenant_id, provider) do nothing; diff --git a/src/app/api/admin/create-client/route.ts b/src/app/api/admin/create-client/route.ts index 5338681..110e5ff 100644 --- a/src/app/api/admin/create-client/route.ts +++ b/src/app/api/admin/create-client/route.ts @@ -58,6 +58,10 @@ export async function POST(req: NextRequest) { ['wordpress', 'WordPress'], ['prestashop', 'PrestaShop'], ['shopify', 'Shopify'], + ['instagram', 'Instagram'], + ['facebook', 'Facebook Page'], + ['tiktok', 'TikTok'], + ['linkedin', 'LinkedIn'], ]; await fetch(`${url}/rest/v1/integrations`, { method: 'POST', diff --git a/src/components/AgencyPortfolioBoard.tsx b/src/components/AgencyPortfolioBoard.tsx index 17850a9..20baeb3 100644 --- a/src/components/AgencyPortfolioBoard.tsx +++ b/src/components/AgencyPortfolioBoard.tsx @@ -54,18 +54,18 @@ type AlertRow = { const MATRIX_PROVIDERS = [ 'meta_ads', - 'google_ads', - 'clientify', + 'instagram', + 'tiktok', + 'linkedin', 'google_drive', - 'wordpress', ] as const; const SHORT: Record = { meta_ads: 'Meta', - google_ads: 'GAds', - clientify: 'CRM', + instagram: 'IG', + tiktok: 'TT', + linkedin: 'LI', google_drive: 'Drive', - wordpress: 'WP', }; function healthBadge(h: string) { @@ -241,8 +241,8 @@ export default function AgencyPortfolioBoard() { Panel de control · clientes y conexiones

- Cada cliente con su Meta, Google Ads, Clientify, Drive y web - (WordPress…). Activa/apaga canales en Conexiones. + Cada cliente con ads, redes (IG/TikTok/LinkedIn), Drive y web. + Activa/apaga canales en Conexiones.