Aleksei Pavlov 749d717a94 feat(publish): синхрон сайт/ТГ + защита от залпа + заметки Зеро по механике черновиков
ЭТАП 4 — расписание публикаций (раз и навсегда):

1. Синхронизация сайт ↔ Telegram:
   - articleAutoPublish.pickScheduleTime теперь ставит TG-пост на
     articles.published_at (тот же момент, когда статья появляется на сайте).
     Слоты канала publish_slots больше НЕ выбирают время независимо.
   - Единый источник времени — published_at (drip-слот сайта).
   - Слоты сайта и ТГ синхронизированы в БД: 08:11/12:11/16:11/20:11.

2. Защита от залпа (scheduledPostsRunner):
   - посты просроченные >3ч → status='skipped' (не спамим канал задним числом).
   - публикация по ОДНОМУ за тик (LIMIT 1), не пачкой.

3. Заметки Зеро (zeroNotes) — механика как у черновиков статей:
   - nextPublishSlot всегда = ЗАВТРА publishHour (сегодня сгенерили → завтра
     публикуем). Час настраивается ZERO_NOTES_PUBLISH_HOUR (13:00).
   - autoApproveOldDrafts (09:00 МСК): если не подтверждён к утру дня
     публикации — авто-одобряется и выходит в свой слот.
   - publishReady limit:1 — строго одна заметка за тик.

Настройки в app_settings: SITE_PUBLISH_SLOTS, ZERO_SITE_URL_BASE,
ZERO_NOTES_APPROVE_HOUR=9, GENERATE_HOUR=13, PUBLISH_HOUR=13.
2026-06-20 11:07:10 +03:00
2026-05-30 18:27:07 +00:00

zeropost-engine

ZeroPost - zeropost-engine

S
Description
ZeroPost - zeropost-engine
Readme 953 KiB
Languages
JavaScript 100%