## 1. Система ролей і авторизація
### 1.1 Ролі користувачів
- Адміністратор
- Користувач
### 1.2 Функції адміністратора
- Модерація облікових записів користувачів
- Підтвердження нових реєстрацій
- Видалення облікових записів
- Управління статистикою:
- Таблиця всіх акаунтів у системі з наступними колонками:
- ID акаунта
- Номер телефону
- Власник акаунта (користувач)
- Кількість створених відкладених повідомлень
- Дата останньої активності
- Кнопка видалення акаунта
- Пагінація:
- 50 записів на сторінку
- Навігація по сторінках
- Сортування по будь-якому стовпцю
- Фільтрація даних:
- По користувачу
- По даті
- По кількості повідомлень
### 1.3 Реєстрація користувачів
- Поля для реєстрації:
- Логін
- Пароль
- Нікнейм Telegram
- Статус: очікування підтвердження адміністратором
- Доступ до панелі тільки після підтвердження
### 2. Функціонал панелі користувача
2.1 Управління акаунтами
Кнопка "Додати акаунт"
Таблиця акаунтів з наступними елементами:
Порядковий номер
Номер телефону акаунта
Кнопка "Увімкнути розсилку"
Кнопка "Видалити акаунт"
Чекбокс для вибору акаунта
Кнопка "Увімкнути розсилку для вибраних"
### 3.3 Алгоритм розсилки
1. Збір контактів:
- Отримання всіх контактів
- Фільтрація взаємних контактів
- Сортування по часу останнього онлайну:
- Онлайн зараз
- Нещодавно в мережі
- Менше години тому
- Менше двох годин тому
- І так далі
2. Механізм відкладеної відправки:
- Групування контактів по 5
- Швидке створення відкладених повідомлень:
- Мінімальна затримка між запитами для уникнення обмежень API
- Для першої групи: відкладена відправка через 5 хвилин від поточного часу
- Для кожної наступної групи: +15 хвилин до часу відправки
- Приклад для 100 контактів:
- 20 груп по 5 контактів
- Створення всіх відкладених повідомлень відбувається послідовно з мінімальною затримкою
- Час створення всіх відкладених повідомлень: кілька секунд
- Фактична відправка повідомлень буде відбуватися протягом 5 годин
- Після створення всіх відкладених повідомлень:
- Негайне відключення від акаунта
- Звільнення ресурсів
- Оновлення статистики в базі даних
## 4. Технічні вимоги
- Асинхронне виконання всіх операцій
- Підтримка до 50 паралельних потоків
- Зберігання файлів сесій і конфігурацій в окремій папці проекту
- Робота через проксі
- Обробка помилок і виключень
- Логування процесів
- Оптимізація роботи з API Telegram:
- Мінімальні затримки між запитами
- Ефективне управління з'єднаннями
- Обробка обмежень API
## 5. Файлова структура
- Файл proxy.txt з проксі
- Папка для зберігання сесій
- Папка для JSON-конфігурацій акаунтів
- База даних для зберігання статистики:
- Таблиця акаунтів
- Таблиця користувачів
- Таблиця статистики відправлених повідомлень