Паутина Мориарти — KZ HSE Monitor [🗄️ ARCHIVED]
Выключен 27 апреля 2026. Контейнер + image + volume + файлы удалены. Причина: за 7 дней работы выдал 0 HIGH/MEDIUM алертов в канал @LyumiHSEDigest. Ручное обновление НПА раз в 2 недели покрывает ту же потребность. Страница сохранена как история + deploy-инструкции на случай возрождения.
Почему выключили
23 апреля Kamal зафиксировал: «Паутина какая-то дурацкая, не пойму надо или нет». 27 апреля решили выключить по цифрам:
Реальные метрики на момент выключения: - CPU: 0.00% (демон спит между запусками) - RAM: 60MB / 30GB сервера (0.19%) - Disk: 220KB SQLite - Image: 174MB - Алертов HIGH за 7 дней: 0 - Алертов MEDIUM за 7 дней: 0 - Постов в канал через паучка за неделю: 0 - Стоимость: ~$2/мес (Haiku-классификация)
Технически работает корректно — просто ничего важного не приносит. Ручное обновление НПА раз в 2 недели (ритуал) покрывает то же самое без инфраструктурфы.
Что было удалено (27 апреля)
docker stop lyumi-monitor && docker rm lyumi-monitor
docker rmi lyumi-monitor # 174MB image
docker volume rm lyumi-monitor-data # 220KB SQLite
rm -rf /opt/lyumi/kz_monitor # папка с fetcher'ами
rm /opt/lyumi/adalat_monitor.py # древний предшественник (был ранее)
Освобождено: 174MB диска, 60MB RAM, ~$2/мес.
Если потребуется воскресить
Код в git сохранён. Поднять обратно:
# Раскатать из git
cd /opt/lyumi && git clone <repo> kz_monitor
cd kz_monitor
# Пересобрать image
docker build -t lyumi-monitor .
# Создать volume
docker volume create lyumi-monitor-data
# Запустить
docker run -d \
--name lyumi-monitor \
--restart unless-stopped \
--env-file /opt/lyumi/.env \
-v lyumi-monitor-data:/app/data \
lyumi-monitor
Когда имеет смысл воскрешать
- Если ручной ритуал НПА (субботы каждые 2 недели) сломается / станет тяжелым
- При реализации Grounding v2 в Q3 — паучок может стать auto-ingest layer (вариант A из оригинального обсуждения 23 апреля)
- Если появятся «жирные» НПА-изменения которые Lyumi пропустит из-за отсутствия мониторинга — вернуть
[История] Что делала Паутина
Автоматический мониторинг казахстанских госсайтов на новые НПА, экослушания и HSE-новости. Часть экосистемы Lyumi: паутина → алерт Kamal'у → Opus пишет пост → публикация в @LyumiHSEDigest.
Сервер
Hetzner CPX52 (46.62.238.135). Docker контейнер lyumi-monitor.
Volume: lyumi-monitor-data:/app/data (SQLite).
Env: использовал .env от дайджест-бота.
Расписание
Понедельник и четверг, 09:00 по Алматы. APScheduler daemon.
Архитектура
Fetchers (httpx + BS4)
→ legalacts.egov.kz (проекты НПА, фильтр 90 дней)
→ adilet.zan.kz (RSS, принятые НПА, verify=False)
→ zakon.kz (медиасигнал)
→ SQLite дедупликация (SHA-256 content_hash)
→ Haiku классификатор (35+ тем)
→ Алерты: HIGH/MEDIUM/LOW
→ Кнопка "Подготовить пост" → Opus → канал
Источники v2.0
| Источник | Что ловил | Фильтрация |
|---|---|---|
| legalacts.egov.kz | Проекты НПА на обсуждении | dateFrom/dateTo + пост-фильтр 90 дней + NPA ID >= 14.5M |
| adilet.zan.kz/rus/docs/rss | Принятые НПА (RSS) | HSE_KEYWORDS, verify=False |
| zakon.kz | Медиа-новости HSE | HSE_KEYWORDS |
Классификатор
35+ тем, привязаны к 11 элементам HSE Copilot Cards. ~110 ключевых слов.
Файлы (внутри контейнера /app/)
- main.py — CLI: --run-once, --seed, --stats, --source, daemon
- fetchers/base.py — BaseFetcher + HSE_KEYWORDS
- fetchers/legalacts.py — парсер legalacts.egov.kz
- fetchers/adilet.py — парсер RSS Әділет
- fetchers/zakon.py — парсер zakon.kz
- classifier/importance.py — HSEClassifier (Haiku)
- alerts/telegram.py — алерты + батч-сводка
- storage/models.py — Pydantic + SQLite
- config/sources.yaml — реестр источников
Связанные
- [[lyumi/bot_v3]] — основной бот
- [[lyumi/digest_bot]] — дайджест
- [[lyumi/strategy_2026]] — Industry Knowledge Network (ставка №2), Grounding v2 в Q3