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:
@@ -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 || '')) {
|
||||
|
||||
Reference in New Issue
Block a user