feat: LinkedIn editorial, accesos agencia estables y deshacer en historial

Integra estrategias LinkedIn en calendarios (backlog publicado vs pendiente), unifica roles/cookies de vista agencia y permite deshacer cambios de brandbook dejando constancia en el historial.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
4Ventures
2026-10-16 04:15:51 +02:00
parent 3b57cdce53
commit 4a1abd3318
54 changed files with 6400 additions and 527 deletions

View File

@@ -215,6 +215,28 @@ export async function processDuePipelinePublishes(opts?: {
let igPermalink: string | null = null;
let fbPermalink: string | null = null;
// LinkedIn-only: stub hasta API key (no pasa por Meta)
if (
channels.includes('linkedin') &&
!channels.includes('instagram') &&
!channels.includes('facebook')
) {
const li = await publishPipelineItem(item);
await patchItem(base, headers, item.id, {
publish_status: li.ok ? 'published' : 'failed',
publish_error: li.error || null,
published_at: li.ok ? new Date().toISOString() : null,
publish_attempts: (item.publish_attempts || 0) + 1,
});
results.push({
id: item.id,
title: item.title,
ok: Boolean(li.ok),
detail: li.ok ? 'linkedin' : li.error || 'linkedin_failed',
});
continue;
}
if (channels.includes('instagram') && !igMediaId && channelDue('instagram')) {
const ig = await publishPipelineItem(item, { skipFb: true });
if (ig.sanitizedCaption && ig.sanitizedCaption !== (item.caption || '')) {