Сучасна багатокомпонентна платформа для збору, розпізнавання, ручної верифікації та інтерактивного відображення графіків погодинних відключень електроенергії (ГПВ).
Проект розроблений як прогресивний веб-додаток (PWA) з адаптивною неоновою темою, інтерактивною шкалою часу ("Машина часу") та розумною системою сповіщень.
Система побудована за модульним принципом і складається з чотирьох ключових шарів:
graph TD
Parser[Python Parser & OCR] -->|Зберігає розклад| Supabase[(Supabase Database)]
Parser -->|Генерує JSON| WebStatic[static JSON: today/tomorrow]
Backend[FastAPI Backend] -->|Аналітика та логування| Supabase
WebClient[React + Vite PWA Client] -->|Читає розклад| WebStatic
WebClient -->|Авторизація / Профілі / Пуші| Supabase
AdminPanel[Admin Center inside PWA] -->|Верифікація та редагування| Supabase
AdminPanel -->|Запуск GitHub Actions| GithubAPI[GitHub Actions Workflow]
- PWA Клієнт (React + TypeScript + Vite):
- Головний екран: Швидкий перегляд поточного стану («Світло є» / «Світла немає»), зворотний відлік до наступної події та інтерактивна шкала часу.
- Графік на завтра: Окремий тимчасовий плановий екран у неоново-фіолетовій гамі з повзунком, що автоматично повертається на
00:00. - Центр верифікації (Адмінка): Пульт управління даними (редагування сітки графіків, аудит дій, обробка запитів на додавання адрес, моніторинг пуш-сповіщень).
- Аналітичний мікросервіс (FastAPI + Python):
- Обробка складної статистики, моніторинг навантаження розсилки та системна телеметрія.
- Модуль збору даних (Python Parser):
- Автоматичний моніторинг сайтів обленерго, Telegram-каналів, розпізнавання графіків (OCR) та вивантаження результатів у Supabase та статичні JSON файли.
- Хмарна інфраструктура (Supabase):
- Збереження профілів користувачів, черг сповіщень, логів аудиту дій адміністраторів та надійна автентифікація.
- Frontend: React 18, TypeScript, Vite, Zustand (керування станом), Tailwind CSS / Vanilla CSS (стилізація), React Router.
- Backend: Python 3.10+, FastAPI, SQLite, Supabase-py.
- Parser & Tools: Python, Pillow/Pytesseract (OCR розпізнавання зображень), GitHub Actions (автоматичний парсинг за розкладом).
- База даних: Supabase (PostgreSQL), SQLite (локальний кеш парсера).
- Деплой: GitHub Pages (для PWA клієнта), Docker / Docker-compose (контейнеризація бекенду).
- Інтерактивна шкала («Машина часу»): Можливість перетягувати повзунок часу на сьогодні/завтра та бачити стан мережі в будь-яку хвилину доби.
- Розумні PWA Пуш-сповіщення: Отримання попереджень про відключення відповідно до обраної підчерги.
- Автоматичний парсинг: Збір даних без участі людини, формування
today.jsonтаtomorrow.json. - Верифікація даних (Human-in-the-loop): Шій або парсер пропонують сітку відключень — адміністратор підтверджує або коригує її вручну перед публікацією через вбудований графічний редактор.
- Логування аудиту: Запис усіх дій модераторів та адміністраторів для гарантування безпеки та прозорості змін.
- Telegram PNG Експортер: Генерація адаптованих під месенджери картинок-графіків одним кліком в адмінці.
/web— Вихідний код PWA-клієнта (React + Vite)./parser— Скрипти збору даних та синхронізації з базою./backend— FastAPI мікросервіс телеметрії та аналітики./supabase— Конфігураційні SQL-файли та схеми таблиць.DATA_README.md— Детальний опис форматів та структур даних графіків відключень.
cd web
npm install --legacy-peer-deps
npm run devДодаток буде доступний за адресою http://localhost:5173.
cd backend
pip install -r requirements.txt
uvicorn main:app --reloadДокументація API буде доступна за адресою http://localhost:8000/docs.
cd parser
pip install -r requirements.txt
python sync_supabase.pyПроект розповсюджується під ліцензією MIT. Деталі див. у файлі LICENSE.