Jobs / Cron
Ця сторінка керує внутрішніми NewsMon job-ами в job_definitions. Системний cron у cPanel/сервері має запускати тільки php /home2/qzusnhmy/newsmon/bin/scheduler.php раз на хвилину; усе інше керується тут. Час запусків показано за Києвом; UTC доступний у підказці при наведенні.
scheduler.php сам не виконує важкі задачі послідовно. Він щохвилини дивиться due jobs і запускає їх у фоні через run-job.php ... &. Якщо процес затягнувся, locks не дають другому такому самому процесу зіпсувати дані: ingest, prepare, cluster_pipeline, dispatch_prepare, dispatch_cluster.Рекомендований dispatcher-профіль
Це повторює твою стару cPanel-схему, але переносить керування всередину NewsMon: RSS кожні 10 хв, Prepare Dispatcher кожні 10 хв зі зміщенням 1 хв, Cluster Dispatcher кожні 5 хв зі зміщенням 3/8/13... Дочірні jobs переводяться в manual/off, щоб вони не бігли паралельно напряму.
Після цього в cPanel має бути один cron: * * * * * /usr/bin/php /home2/qzusnhmy/newsmon/bin/scheduler.php >/dev/null 2>&1
Довідка: що означають основні jobs
Забирає RSS-стрічки у feed_items/source_contents
Рекомендовано slot 0;10;20;30;40;50 — аналог старого */10. Токени не витрачає.
Автоматично завантажує повні HTML-тексти у source_contents тільки для enabled + trusted extraction profiles
Почати з manual/off. Токени не витрачає і не впливає на Prepare/кластеризацію.
Диспетчер AI prepare: сам вирішує, запускати enrich чи heal
Рекомендовано slot 1;11;21;31;41;51 — аналог старого cron.
Telegram-aware AI Prepare: з повного TG-тексту робить title_ua, entities, tags, keys, cluster_ready
Вмикати обережно. Витрачає OpenAI tokens тільки для Telegram-джерел з AI on.
Диспетчер кластерної лінії: primary → summaries → core/lite/deep за станом черги
Рекомендовано slot 3;8;13;18;23;28;33;38;43;48;53;58 — аналог старого cron.
Прибирання завислих locks/job_runs
Можна тримати увімкненим: interval 300 sec. Токени не витрачає.
Старий direct Telegram ingest з Bluehost
Для нової схеми Hetzner gateway має бути off/manual, бо TG тягне VPS.
Дочірній AI enrich для RSS/звичайних заголовків
Не планувати напряму, якщо увімкнений runPrepareDispatcher.
Дочірній AI heal для хвостів/пропусків prepare
Не планувати напряму, якщо увімкнений runPrepareDispatcher.
Primary clustering — розкладає cluster_ready заголовки у сюжети
Краще off/manual, якщо працює runClusterDispatcher.
Оновлює summaries для touched/pending кластерів
Краще off/manual, якщо працює runClusterDispatcher.
Основний revision/split/move для проблемних кластерів
Краще off/manual, якщо працює runClusterDispatcher.
Легкий revision/singleton rescue/mini-cleanup
Краще off/manual, якщо працює runClusterDispatcher.
Глибокий revision великих umbrella-кластерів
Зазвичай manual/off; auto лише після окремого рішення.
AI / Pipeline windows
Явні вікна обробки: наскільки далеко jobs можуть лізти назад по pending-рядках. Наведи курсор на знак ?, щоб побачити пояснення.
Автоматичний TG prepare обробляє тільки активні Telegram-джерела, де в Джерелах увімкнено AI. RSS/enrich/heal і primary тепер мають окремі явні lookback-вікна; revision/deep і далі працюють по поточному day_key.
Source Content Autofetch
Автоматично завантажує повні тексти з сайтів у source_contents тільки для джерел, де є enabled extraction profile і ввімкнено довіряти профілю. Не використовує LLM і не передає ці тексти в Prepare/кластеризацію.
Для тесту запускай вручну: php bin/run-job.php runSourceContentAutofetch --dry-run --limit=10, потім без --dry-run. Патч не вмикає автоматичний запуск самостійно.
| Job | Enabled | Schedule | Group | Priority | Last status | Last run | Metrics | Дії | |
|---|---|---|---|---|---|---|---|---|---|
| runMaintenanceCleanup ID 10 · Прибирання завислих locks/job_runs Рекомендовано: interval 300 sec | on | interval · 300 sec | maintenance | 50 | idle run: success | 2026-07-12 12:27:17 done: 2026-07-12 12:27:17 | rows 0/0 api 0 · tok 0/0 | Редагувати | |
| runRssIngestion ID 1 · Забирає RSS-стрічки у feed_items/source_contents Рекомендовано: slot 0;10;20;30;40;50 | on | slot · 0;5;10;15;20;25;30;35;40;45;50;55 | ingest | 100 | idle run: success | 2026-06-26 19:50:01 done: 2026-06-26 19:50:07 | rows 230/18 api 23 · tok 0/0 | Редагувати | |
| runTelegramIngestion ID 14 · Старий direct Telegram ingest з Bluehost Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | ingest | 120 | partial run: stale_failed | 2026-05-24 08:47:32 done: 2026-06-09 19:20:01 | rows 0/0 api 0 · tok 0/0 | РедагуватиMarked stale by runMaintenanceCleanup after heartbeat timeout | |
| runPrepareDispatcher ID 19 · Диспетчер AI prepare: сам вирішує, запускати enrich чи heal Рекомендовано: slot 1;11;21;31;41;51 | on | slot · 1;4;7;10;13;16;19;22;25;28;31;34;37;40;43;46;49;52;55;58 | prepare_dispatch | 180 | idle run: success | 2026-06-26 19:49:01 done: 2026-06-26 19:49:01 | rows 0/0 api 0 · tok 0/0 | Редагувати | |
| runAiPrepareRecent ID 2 · Старий/legacy prepare job Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | prepare | 200 | idle run: failed | 2026-04-17 15:06:20 done: 2026-04-17 15:08:20 | rows 0/0 api 0 · tok 0/0 | РедагуватиOpenAI empty response. cURL error: Operation timed out after 120001 milliseconds with 0 bytes received | |
| runAiEnrichRecent ID 8 · Дочірній AI enrich для RSS/звичайних заголовків Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | prepare | 200 | idle run: success | 2026-06-26 19:46:01 done: 2026-06-26 19:46:32 | rows 6/6 api 1 · tok 1604/3153 | Редагувати | |
| runTelegramAiPrepareRecent ID 15 · Telegram-aware AI Prepare: з повного TG-тексту робить title_ua, entities, tags, keys, cluster_ready Рекомендовано: manual/off поки тестуємо; потім interval 900 sec | on | interval · 600 sec | telegram_prepare | 204 | idle run: success | 2026-07-12 15:31:10 done: 2026-07-12 15:32:47 | rows 5/5 api 5 · tok 13590/8133 | Редагувати | |
| runAiHealRecent ID 9 · Дочірній AI heal для хвостів/пропусків prepare Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | prepare | 210 | idle run: failed | 2026-04-27 18:31:02 done: 2026-04-27 18:35:06 | rows 0/0 api 0 · tok 0/0 | РедагуватиOpenAI empty response. cURL error: Operation timed out after 64004 milliseconds with 0 bytes received | |
| runClusterDispatcher ID 20 · Диспетчер кластерної лінії: primary → summaries → core/lite/deep за станом черги Рекомендовано: slot 3;8;13;18;23;28;33;38;43;48;53;58 | on | slot · 2;5;8;11;14;17;20;23;26;29;32;35;38;41;44;47;50;53;56;59 | cluster_dispatch | 280 | idle run: success | 2026-06-26 19:50:01 done: 2026-06-26 19:50:19 | rows 0/0 api 0 · tok 0/0 | Редагувати | |
| runStoriesTodayClustering ID 3 · Primary clustering — розкладає cluster_ready заголовки у сюжети Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | cluster_pipeline | 300 | idle run: success | 2026-06-26 19:38:02 done: 2026-06-26 19:39:09 | rows 26/26 api 3 · tok 15962/6934 | Редагувати | |
| runClusterSummariesUpdate ID 47 · Оновлює summaries для touched/pending кластерів Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | cluster_pipeline | 310 | idle run: success | 2026-06-26 19:47:02 done: 2026-06-26 19:47:58 | rows 8/10 api 4 · tok 7661/5459 | Редагувати | |
| runClustersRevisionCore ID 4 · Основний revision/split/move для проблемних кластерів Рекомендовано: manual/off, якщо використовується dispatcher | on | manual | cluster_pipeline | 400 | idle run: success | 2026-06-26 19:44:01 done: 2026-06-26 19:44:20 | rows 2/8 api 2 · tok 6388/1717 | Редагувати | |
| runClustersRevisionLite ID 5 · Легкий revision/singleton rescue/mini-cleanup Рекомендовано: manual/off, якщо використовується dispatcher | on | manual | cluster_pipeline | 500 | idle run: success | 2026-06-26 19:50:01 done: 2026-06-26 19:50:19 | rows 96/0 api 1 · tok 4265/1574 | Редагувати | |
| runDeepClusterRevision ID 6 · Глибокий revision великих umbrella-кластерів Рекомендовано: manual/off, якщо використовується dispatcher | on | manual | cluster_pipeline | 520 | idle run: success | 2026-06-26 19:11:01 done: 2026-06-26 19:11:41 | rows 1/25 api 1 · tok 5240/2941 | Редагувати | |
| runSheetSync ID 7 · Синхронізація/службовий sync, якщо використовується Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | sync | 700 | idle run: — | — done: — | rows 0/0 api 0 · tok 0/0 | Редагувати | |
| runSourceContentAutofetch ID 28 · Автоматично завантажує повні HTML-тексти у source_contents тільки для enabled + trusted extraction profiles Рекомендовано: manual/off для тесту; потім interval 1800–3600 sec лише після перевірки профілів | off | manual | content | 700 | idle run: success | 2026-06-24 21:19:02 done: 2026-06-24 21:19:06 | rows 25/25 api 0 · tok 0/0 | Редагувати | |
| runPublicationLinksExtract ID 29 · Внутрішній NewsMon job Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | publication_links | 710 | idle run: success | 2026-06-24 21:21:01 done: 2026-06-24 21:21:01 | rows 22/22 api 0 · tok 0/0 | Редагувати | |
| runPublicationHtmlLinksBackfill ID 30 · Внутрішній NewsMon job Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | publication_links | 720 | idle run: success | 2026-06-24 21:07:02 done: 2026-06-24 21:07:05 | rows 25/120 api 0 · tok 0/0 | Редагувати | |
| runPublicationLinkMatching ID 31 · Внутрішній NewsMon job Рекомендовано: manual/off, якщо використовується dispatcher | off | manual | publication_links | 730 | idle run: success | 2026-06-24 21:09:01 done: 2026-06-24 21:09:13 | rows 500/1453 api 0 · tok 0/0 | Редагувати |