Полнота базы и здоровье конвейера

данные на 29.09.2026 13:04 МСК база 116,6 ГБ · контроль 744 262 док. · закупочные процедуры 37 770 204 док.

Тревоги — что накричали обёртки и сторожа, и что из этого не разобрано

неразобранных бед: 55 строк в очереди 396 — повторы свёрнуты самая старая 38,6 сут назад разобрать: scripts/alerts.sh, затем scripts/alerts.sh --ack

началосьподтвержденараз источникчто случилось
2026-09-29 08:31:11 2026-09-29 08:31:11 1 hot-edge proc/77: край стоит на 2026-09-22 — 4 рабочих дней без новых документов (порог 2)
2026-09-29 08:31:09 2026-09-29 12:53:52 10 hot-edge control/47: край стоит на 2026-07-27 — 45 рабочих дней без новых документов (порог 2); и региона НЕТ в перечне сбора контура (10987 док. в базе) — вопрос «собираем ли дальше» решают owner/lead, датчик его задаёт
2026-09-29 08:31:10 2026-09-29 12:53:52 10 hot-edge control/50: край стоит на 2026-09-22 — 4 рабочих дней без новых документов (порог 2)
2026-09-29 08:31:10 2026-09-29 12:53:52 10 hot-edge control/77: край стоит на 2026-09-22 — 4 рабочих дней без новых документов (порог 2)
2026-09-29 08:31:11 2026-09-29 12:53:52 10 hot-edge control/78: край стоит на 2026-09-22 — 4 рабочих дней без новых документов (порог 2)
2026-09-29 08:31:11 2026-09-29 12:53:52 10 hot-edge proc/50: край стоит на 2026-09-03 — 17 рабочих дней без новых документов (порог 2)
2026-09-29 08:31:12 2026-09-29 12:53:52 10 hot-edge proc/78: край стоит на 2025-11-19 — 210 рабочих дней без новых документов (порог 2); и региона НЕТ в перечне сбора контура (2101678 док. в базе) — вопрос «собираем ли дальше» решают owner/lead, датчик его задаёт
2026-09-29 12:57:05 2026-09-29 12:57:05 1 reconcile сверка заполненности: notice_requirement.content/epNotificationEZK2020 сырьё 23.31 % против витрины 0.0 %; notice_requirement.content/epNotificationEOK2020 сырьё 19.77 % против витрины 0.0 %; notice_requirement.content/epNotificationEF2020 сырьё 14.33 % против витрины 0.0 %
2026-09-29 12:57:38 2026-09-29 12:57:38 1 reconcile сверка заполненности: notice_requirement.content/epNotificationEZK2020 сырьё 24.73 % против витрины 0.0 %; notice_requirement.content/epNotificationEOK2020 сырьё 18.99 % против витрины 0.23 %; notice_requirement.content/epNotificationEF2020 сырьё 15.79 % против витрины 0.0 %
2026-09-29 12:58:50 2026-09-29 12:58:50 1 reconcile сверка заполненности: notice_requirement.content/epNotificationEZK2020 сырьё 20.64 % против витрины 0.0 %; notice_requirement.content/epNotificationEOK2020 сырьё 17.96 % против витрины 0.06 %; notice_requirement.content/epNotificationEF2020 сырьё 15.44 % против витрины 0.0 %
2026-09-29 12:59:03 2026-09-29 12:59:03 1 reconcile сверка заполненности: notice_requirement.content/epNotificationEZK2020 сырьё 19.05 % против витрины 0.0 %; notice_requirement.content/epNotificationEF2020 сырьё 15.12 % против витрины 0.0 %; notice_requirement.content/epNotificationEOK2020 сырьё 13.35 % против витрины 0.0 %
2026-08-22 08:13:34 2026-09-29 13:02:29 126 steps.sh прогон закрылся кодом 75 — работа не доделана

Показано бед: 12 из 55; строк в очереди 396. Повторы одной беды свёрнуты в строку со счётчиком: сторож ходит трижды в сутки и переписывает живую беду заново, и девять копий старой прятали свежую — так утонул обрыв 15.08, о котором датчики кричали двое суток. Обе метки времени обязательны: «началось» показывает, сколько беда живёт, «подтверждена» — что она ещё жива. Очередь — файл logs/alerts.log: она переживает ночь и закрытый экран, в отличие от нотификации, которая живёт секунды и требует человека у монитора (05.08 и 06.08 бэкап отменялся, узнали 11-го).

коммитов мимо гейта за 7 сут: 4 обход не бесплатен: гейт уже был мёртв днями, пока его обходили молча

когдакоммиттема
2026-09-22 19:17:52928d02a [dev1] [T-231] в журнал: пять подстановок в worktree, все тр
2026-09-22 21:13:23f091fc3 [dev2] [T-237] сбор метаданных не требует архивный том: он п
2026-09-22 21:14:15b5ad5a2 [dev2] [T-237] сбор метаданных не требует архивный том: он п
2026-09-29 11:55:235d762f7 [qa] [T-242] ВОЗВРАТ: новый файл-зависимость роняет 20 чужих

Ночные контуры — жив ли конвейер без человека в петле

Бэкап базы идёт по расписанию

ежедневный дамп БД · ежедневно 05:00 · gz.backup
последний успех: 29.09 06:36 (6 ч назад)
последняя РАБОТА: 29.09 06:36 (6 ч назад)
последний дамп: 29.09 06:35
дамп fas_20260929_050002.dump — 14,2 ГБ против базы 116,6 ГБ, хранится копий: 7
последняя запись в логе: конец код 0 · 2026-09-29 06:36:00 · gz.backup-20260929.log

Транш DaData идёт по расписанию

ночной транш обогащения org по стоячему ОК owner · ежедневно 00:10 · gz.dadata-tranche
последний успех: 29.09 00:18 (13 ч назад)
последняя РАБОТА: 29.09 00:18 (13 ч назад)
последний ответ DaData: 23.09 00:17
последняя запись в логе: конец код 0 · 2026-09-29 00:18:27 · gz.dadata-tranche-20260929.log

Ночная сюита стоит

ночной прогон того, чего не гоняет НИКТО · ежедневно 04:00 · gz.nightly-suite
последний успех: 22.09 17:43 (6,8 сут назад)
последняя РАБОТА: 22.09 17:43 (6,8 сут назад)
последняя запись в логе: конец код 0 · 2026-09-22 17:43:35 · gz.nightly-suite-20260922.log

Сторож конвейера идёт по расписанию

единственный, кто по расписанию смотрит НА САМ КОНВЕЙЕР · ежедневно 08:30, 14:00, 20:00 · gz.watchdog
последний успех: 29.09 08:31 (5 ч назад)
последняя РАБОТА: 29.09 08:31 (5 ч назад)
последняя запись в логе: конец код 0 · 2026-09-29 08:31:12 · gz.watchdog-20260929.log

Период расписания читается из самого .plist (у агента с несколькими запусками в сутки — по самому длинному промежутку между ними). Красное — не мнение, а факт: агент выключен, либо последний успешный прогон старше трёх периодов расписания. Для бэкапа возрастом считается сам файл дампа, а не код выхода агента (код 0 без дампа мы уже видели 07.08). Прогон, закрывшийся нулём на законном пропуске («канал занят», «остаток квоты ниже порога»), успехом СЧИТАЕТСЯ, а работой — нет: 12–14.08 главный агент три ночи подряд выходил кодом 0, не подвинув горячий край.

Закупочные процедуры (proc) — полнота по журналу сканирования

регион 20162017201820192020202120222023202420252026 последний деньлаг
50 · Московская обл. ≥ 10 122 / 15 372 яч. типов 42/53 ≥ 16 365 / 15 330 яч. типов 42/53 ≥ 10 365 / 15 330 яч. типов 42/53 ≥ 19 828 7 665 / 18 250 яч. типов 50/53 ≥ 22 298 7 686 / 18 300 яч. типов 50/53 ≥ 1 386 090 18 250 / 18 250 яч. типов 50/53 ≥ 1 738 398 17 254 / 17 254 яч. ≥ 2 217 311 16 425 / 16 425 яч. типов 45/53 ≥ 2 610 953 16 470 / 16 470 яч. типов 45/53 ≥ 2 189 655 16 425 / 16 425 яч. типов 45/53 ≥ 1 339 164 10 976 / 12 240 яч. типов 45/53 01.09.2026 28 дн.
77 · Москва ≥ 7 122 / 15 372 яч. типов 42/53 ≥ 47 365 / 15 330 яч. типов 42/53 ≥ 57 365 / 15 330 яч. типов 42/53 ≥ 35 977 7 665 / 18 250 яч. типов 50/53 ≥ 34 459 7 686 / 18 300 яч. типов 50/53 ≥ 2 375 619 18 250 / 18 250 яч. типов 50/53 ≥ 3 350 196 17 254 / 17 254 яч. ≥ 4 316 810 16 425 / 16 425 яч. типов 45/53 ≥ 5 504 634 16 470 / 16 470 яч. типов 45/53 ≥ 4 756 797 16 425 / 16 425 яч. типов 45/53 ≥ 3 375 303 12 105 / 12 240 яч. типов 45/53 27.09.2026 2 дн.
78 · Санкт-Петербург — — — — — ≥ 2 082 328 14 965 / 18 250 яч. типов 50/53 0 0 / 17 254 яч. 0 0 / 16 425 яч. типов 45/53 0 0 / 16 470 яч. типов 45/53 ≥ 19 350 44 / 16 425 яч. типов 45/53 0 0 / 12 240 яч. типов 45/53 19.11.2025 314 дн. разовый сбор
100 % собрано целиком 95–99 % добор на один прогон 50–95 % собрано частично < 50 % сбора почти не было пусто год в скоупе, но не собран вне скоупа до 2022 года (решение 30.07) «типов N/M» — сколько типов источник публиковал В ЭТОМ году из известных сборщику сегодня «≥» — счёт документов занижен: точная величина есть только с 23.08.2026

В клетке — документов найдено и сколько ЯЧЕЕК «день × тип» закрыто сбором (единица журнала: за день сбор тянет каждый из типов отдельно, поэтому «365 из 365 дней» ещё не значит «год собран» — 13.08 при полных днях недоставало 793 584 документа). Ноль документов при просмотренных днях — это честный ноль, а не пробел: журнал fz44_proc.scan_log пишет и пустые дни. Разбор: 35 947 205 разобрано, 1 819 500 ждёт, 3 499 дублей. Счёт документов точен с 23.08.2026: до этого дня журнал писал число НОВЫХ документов последнего захода и обнулял запись при пересканировании горячего края, поэтому на 242 710 ячейках из 245 091 величина занижена и помечена знаком «≥» ([T-201], [T-239]). Два счёта не смешаны в одну цифру намеренно: день, когда они разойдутся, в ней не был бы виден. Пар «регион × день» в журнале — 7 697; знаменатель печатается рядом с долей намеренно, иначе ровный ряд выглядел бы полным и там, где регион перестал собираться. Ночного агента у этого контура нет — сбор идёт руками, поэтому лаг помечен «разовый сбор» и тревогой не считается.

Контроль — полнота по журналу сканирования — окно 01.01…22.09.2026, единица — ячейка «тип × день» (20 типов)

регионячеек собраноохватдокументов потеряноне по типупоследний день
50 · Московская обл. 5 100 из 56 440 9 % 10 219 0 0 22.09.2026
77 · Москва 5 499 из 56 440 10 % 26 795 0 0 22.09.2026
78 · Санкт-Петербург 12 703 из 56 440 23 % 33 646 0 0 22.09.2026

Счёт полученного появился 15.08.2026 (миграция 047), поэтому окно начинается там; всё, что собрано раньше, в этой таблице НЕ учтено и остаётся в таблице ниже как «данные есть». Задним числом журнал не восстанавливается: наличие документов не доказывает, что ячейку смотрели. Числитель и знаменатель берутся из журнала, а не из документов по дате публикации: у жалоб publish_date заполнен у 121 документа из 105 763 (парсер починен 15.08, прежние остались без даты), и на этой оси самый массовый тип дал бы правдоподобную, но смещённую картину. Красное — по колонке «потеряно» (errors), а не по остатку: «не по типу» это документы, которые парсер не признал своими, сигнал другой природы. Свежая недостача сутки не кричит: перескан перезаписывает ячейку целиком, и частично упавший повтор поверх чистого скана дал бы ложную тревогу.

Контроль (жалобы, проверки, РНП) — по факту наличия документов в дне

регион 201820192020202120222023202420252026 последний деньлаг
47 · Ленинградская обл. — — — — 0 0 дн. с публ. 0 0 дн. с публ. 0 0 дн. с публ. 6 638 252 дн. с публ. 2 528 137 дн. с публ. 27.07.2026 64 дн. разовый сбор
50 · Московская обл. — 8 565 152 дн. с публ. 6 291 253 дн. с публ. 12 551 257 дн. с публ. 25 377 295 дн. с публ. 30 770 306 дн. с публ. 15 269 282 дн. с публ. 13 984 281 дн. с публ. 12 290 194 дн. с публ. 22.09.2026 7 дн.
77 · Москва — 17 281 200 дн. с публ. 15 690 338 дн. с публ. 24 377 342 дн. с публ. 47 927 356 дн. с публ. 57 798 355 дн. с публ. 50 262 359 дн. с публ. 48 764 352 дн. с публ. 40 625 253 дн. с публ. 22.09.2026 7 дн.
78 · Санкт-Петербург 12 9 дн. с публ. 10 828 174 дн. с публ. 18 367 303 дн. с публ. 18 259 310 дн. с публ. 30 436 347 дн. с публ. 38 038 347 дн. с публ. 35 442 347 дн. с публ. 30 232 350 дн. с публ. 20 020 244 дн. с публ. 22.09.2026 7 дн.

Клетки контроля намеренно НЕ красятся в шкалу полноты (серое = «данные есть»): журнала сканирования у этого контура нет, а значит нет и знаменателя — сколько ячеек должно было быть. Красить их зелёным значило бы выдать наличие данных за доказанную полноту; ровно эта ошибка 13.08 скрыла 793 584 недостающих документа у proc. Чтобы шкала появилась и здесь, сбору контроля нужен такой же журнал (день × тип), как у proc. Пробелы внутри года ищет python -m gz.fz44.control.collect --gaps по календарю публикаций. Лаг тревожен только у регионов ночного сбора (50, 77, 78); остальные помечены «разовый сбор» — там дата это факт, а не сигнал. Документов без даты публикации: 105 641 — они не попали ни в одну клетку. Организаций в справочнике DaData: 276 162.