Skip to content

Latest commit

 

History

336 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏛️ Страж Демократії

Моніторинг законів Верховної Ради України IX скликання · ІЕД депутатів · рівень євроінтеграції · детектор синхронних інфоатак

🌐 Дашборд🤖 Telegram-ботGitHub


Що це робить

Страж Демократії автоматично збирає всі законопроєкти ВРУ (15,000+), аналізує їх на ризики за допомогою ШІ, рахує Індекс ефективної діяльності (ІЕД) депутатів, відстежує рівень євроінтеграції України та виявляє скоординовані інформаційні атаки в telegram-каналах — і одразу повідомляє про них у Telegram.

Можливості

Компонент Опис
🔄 Синхронізація 15,000+ законопроєктів з RADA API: статуси, хронологія, документи, автори, голосування (19,600+)
🧠 LLM-аналіз Двоетапний Chain-of-Thought аналіз ризиків (процедурний/непроцедурний → ризики), українською, з пост-перевірками
📊 ІЕД депутатів 6 рівних категорій (C1–C6) з опублікованою методологією v2.1 — жодних прихованих ваг
🇪🇺 Євроінтеграція Гіпотетичний індекс 0–100: переговорний трек (статуси кластерів, авто-детекція відкриттів з RSS ЄК) + гармонізація законодавства
🛡 Детектор інфоатак Кластеризація постів ~20 деструктивних каналів (список СБУ) + фактчекерів; бьорст-детекція синхронних хвиль → пуш з посиланням на спростування
📱 Telegram Бот з командами (/bill, /dep, /top, /eu, /attacks, /fakes), персональні підписки на атаки та дайджести, щоденні зведення
📅 Графік Календар усіх активностей ВРУ: пленарні, комітети, голосування, свята, події ЄС

Архітектура

┌────────────────────── VPS (Python + Node) ──────────────────────┐
│                                                                 │
│  СИНХРОНІЗАЦІЯ (17 systemd timers)                              │
│    sync_bills / sync_bill_passings_html → bills, passings       │
│    sync_votes_bulk → votes, mp_votes (7.5M)                     │
│    sync_mp_factions/stats → mps (460 депутатів)                 │
│    sync_schedule_legacy / sync_committee_schedule → графік      │
│    sync_eu_tracker → статуси кластерів ЄС (авто з RSS ЄК)       │
│    sync_info_monitor → інфопотік (RSS фактчекерів + t.me/s)     │
│    sync_disinfo_channels → щоденне оновлення списку каналів     │
│                                                                 │
│  АНАЛІЗ                                                         │
│    night_batch (21:00–08:00, 3 воркери) → LLM ризики            │
│    calc_kpi_v12 → ІЕД · calc_harmonization → EU index           │
│    detect_attacks (кожні 30 хв) → бьорст-детектор + TG-пуш      │
│    label_narratives (07:15) → LLM-розмітка нарративів дня       │
│                                                                 │
│  API: Express (порт 8788) ── Cloudflare Tunnel ──► api.dino.pp.ua│
└──────────────────────────────┬──────────────────────────────────┘
                               ▼
┌─────────────────────────────────────────────────────────────────┐
│  PostgreSQL 18.4 (192.168.1.244/radacleaner)                    │
│    bills · risk_assessments · mps · mp_votes · eu_cluster_status│
│    info_items · attack_alerts · bot_subscribers · rada_schedule │
└──────────────────────────────┬──────────────────────────────────┘
                               ▼
┌─────────────────────────────────────────────────────────────────┐
│  CLOUDFLARE PAGES — дашборд (Vanilla JS SPA)                    │
│    Дашборд · Закони · Депутати · Графік · EU Alignment ·        │
│    🛡 Інфоатаки · 🤖 Бот                                        │
└─────────────────────────────────────────────────────────────────┘

Стек технологій

Шар Технологія
Бекенд Python 3 (syncs/аналіз) + Express/Node.js (API)
База PostgreSQL 18.4
Фронтенд Vanilla HTML/CSS/JS (Cloudflare Pages)
LLM nvidia/nemotron-3-super-120b-a12b:free через OpenRouter (+ NVIDIA, Gemini fallback)
Сповіщення Telegram Bot API
Тести pytest, 80 тестів (venv/bin/python -m pytest tests/ -q)

ІЕД — Індекс ефективної діяльності (v12)

6 рівних категорій, без ваг: ІЕД = (C1+C2+C3+C4+C5+C6) / 6 × 100

# Категорія Джерело
C1 Дисципліна (явка, голосування, дисципліна фракції) mp_votes
C2 Законотворчість (якість, ризик, документи, авторство) risk_assessments
C3 Результативність (прийняття своїх законів) bill_sponsors
C4 Комітет (публічна монотонна шкала ролей 40–100) committee_members
C5 Звернення (депутатські запити + відповіді) itd.rada.gov.ua
C6 Вплив (низький ризик + євроінтеграційний слід) risk_assessments + EU

Методологія v2.1 повністю опублікована на дашборді (футер кожної сторінки) — разом із дослівним промптом ШІ-аналізу. При зміні формул — bump версії.

🇪🇺 EU Integration Index v1 (гіпотетичний)

INDEX = 0.5 × Перемовини + 0.5 × Гармонізація
Перемовини  = статуси 6 кластерів (не відкритий=0, відкритий=50, закритий=100)
              — авто-детекція відкриттів з RSS Єврокомісії
Гармонізація = частка прийнятих законів серед EU-релевантних

Станом на серпень 2026: 23.9% (відкриті кластери 1 «Основи» 15.06.2026 та 6 «Зовнішні відносини» 14.07.2026). Методологія опублікована на дашборді.

🛡 Детектор синхронних інфоатак

Ключова фішка проєкту: швидкість — хвилини замість денного циклу фактчекерів.

  1. Збір (кожні 30 хв): 5 RSS фактчекерів (ЦПД, VoxCheck, StopFake, Детектор медіа, SPRAVDI) + ~20 каналів зі списку СБУ через публічний t.me/s (MTProto не використовуємо — ToS Telegram)
  2. Кластеризація: simhash + token-Jaccard (union-find, чистий Python)
  3. Бьорст-правило: ≥4 різних TG-каналів, ≥8 постів, вікно ≤24 год → алерт
  4. Пуш: наратив + масштаб + приклад + посилання на спростування фактчекерів + номер закону з нашої БД. Дисклеймер: вердикт — за фактчекерами
  5. Щодня 07:15: LLM-розмітка нарративів дня + ТОП перевірок → вкладка «🛡 Інфоатаки»

Список каналів оновлюється щодня автоматично (джерело СБУ через 5.ua, резолвинг нових каналів через власний SearXNG, prune мертвих).


Структура проєкту (ключове)

radacleaner/
├── src/                        # llm_client, d1_client, prompts, telegram_notifier
├── worker/api-server.js        # Express API (порт 8788, PostgreSQL)
├── dashboard/index.html        # Дашборд (SPA, 7 вкладок)
├── systemd/                    # усі unit-файли (17 таймерів + 4 демони)
├── migrations/                 # PostgreSQL міграції (025)
├── tests/                      # pytest (80 тестів)
├── data/disinfo_channels.json  # канали моніторингу детектора
├── sync_*.py                   # синхронізації (bills, votes, mps, schedule, EU, info)
├── calc_kpi_v12.py             # ІЕД
├── calc_harmonization.py       # гармонізація + EU Integration Index
├── detect_attacks.py           # бьорст-детектор інфоатак
├── label_narratives.py         # нічна LLM-розмітка нарративів
├── night_batch.py              # нічний LLM-аналіз (3 воркери)
├── daily_digest_llm.py         # щоденний дайджест (детермінований, без LLM)
├── weekly_digest.py            # щотижневий дайджест (пн 08:00)
├── monitor.py                  # Telegram-сповіщення з change_log
└── telegram_bot.py             # інтерактивний бот + персональні підписки

API (ключові ендпоінти)

Ендпоінт Опис
GET /api/bills, /api/bills/:id Закони: пошук, деталі, ризики, хронологія
GET /api/deputies, /api/deputies/:name Депутати + ІЕД v12
GET /api/eu-alignment EU Integration Index + кластери + таймлайн + новини
GET /api/schedule, /api/activity-calendar Графік ВРУ + активності
GET /api/info-digest Нарративи дня, атаки, ТОП фактчеків
GET /api/dashboard Уніфікований блок головної

Встановлення

git clone https://github.com/Dinollee/radacleaner.git
cd radacleaner
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env   # DB_HOST, TG_BOT_TOKEN, OPENROUTER_API_KEY...
venv/bin/python -m pytest tests/ -q

Деплой дашборда: npx wrangler pages deploy dashboard --project-name radacleaner-dashboard


Ліцензія

MIT

About

🏛️ Моніторинг законів ВРУ України: LLM-аналіз ризиків, ІЕД депутатів, індекс євроінтеграції, детектор синхронних інфоатак. PostgreSQL + Express + Cloudflare Pages + Telegram бот

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages