From 66c071d5bdf78caa64f12b711829556429b883be Mon Sep 17 00:00:00 2001 From: Alexey Pavlov Date: Sat, 19 Sep 2026 18:56:35 +0300 Subject: [PATCH] =?UTF-8?q?fix(scheduled-runner):=20picked.exists=20?= =?UTF-8?q?=E2=86=92=20picked.pose=20=E2=80=94=20pickPose()=20=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA=D0=BE=D0=B3=D0=B4=D0=B0=20=D0=BD=D0=B5=20=D0=B2=D0=BE?= =?UTF-8?q?=D0=B7=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D0=BB=20exists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Zero-фолбэк на картинку (когда обложка статьи ещё не готова или SVG-заглушка исчерпала ретраи) был мёртвым кодом: pickPose() возвращает {pose, source}, поля exists там никогда не было. В итоге пост уходил в TG вообще без фото вместо запасной картинки Зеро. Обнаружено на новостном посте #416. --- src/services/scheduledPostsRunner.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/scheduledPostsRunner.js b/src/services/scheduledPostsRunner.js index 4bd173c..f769eb3 100644 --- a/src/services/scheduledPostsRunner.js +++ b/src/services/scheduledPostsRunner.js @@ -280,7 +280,7 @@ async function publishOne(scheduledPost) { excerpt: article.excerpt, category: article.category, }); - if (picked.exists) { + if (picked.pose) { photoUrl = `/uploads/zero-${picked.pose}.webp`; console.log(`[scheduled-runner] Zero pose=${picked.pose} (${picked.source}) article=${article.id}`); } else if (article.cover_url) { @@ -336,7 +336,7 @@ async function publishOne(scheduledPost) { // Исчерпали попытки — публикуем с Зеро чтобы пост не завис навсегда console.log(`[scheduled-runner] SVG stub max attempts reached, using Zero article=${article.id}`); const picked = zeroChar.pickPose({ title: article.title, excerpt: article.excerpt, category: article.category }); - if (picked.exists) { + if (picked.pose) { photoUrl = `/uploads/zero-${picked.pose}.webp`; console.log(`[scheduled-runner] Zero fallback pose=${picked.pose} article=${article.id}`); } @@ -348,7 +348,7 @@ async function publishOne(scheduledPost) { excerpt: article.excerpt, category: article.category, }); - if (picked.exists) { + if (picked.pose) { photoUrl = `/uploads/zero-${picked.pose}.webp`; console.log(`[scheduled-runner] cover fallback → Zero pose=${picked.pose} article=${article.id}`); }