## 1. System ról i autoryzacja
### 1.1 Role użytkowników
- Administrator
- Użytkownik
### 1.2 Funkcje administratora
- Moderacja kont użytkowników
- Potwierdzanie nowych rejestracji
- Usuwanie kont
- Zarządzanie statystyką:
- Tabela wszystkich kont w systemie z następującymi kolumnami:
- ID konta
- Numer telefonu
- Właściciel konta (użytkownik)
- Liczba utworzonych wiadomości opóźnionych
- Data ostatniej aktywności
- Przycisk usunięcia konta
- Paginacja:
- 50 rekordów na stronę
- Nawigacja po stronach
- Sortowanie według dowolnej kolumny
- Filtrowanie danych:
- Według użytkownika
- Według daty
- Według liczby wiadomości
### 1.3 Rejestracja użytkowników
- Pola do rejestracji:
- Login
- Hasło
- Nick Telegram
- Status: oczekiwanie na potwierdzenie przez administratora
- Dostęp do panelu tylko po potwierdzeniu
### 2. Funkcjonalność panelu użytkownika
2.1 Zarządzanie kontami
Przycisk "Dodaj konto"
Tabela kont z następującymi elementami:
Lp.
Numer telefonu konta
Przycisk "Włącz wysyłkę"
Przycisk "Usuń konto"
Checkbox do wyboru konta
Przycisk "Włącz wysyłkę dla wybranych"
### 3.3 Algorytm wysyłki
1. Zbieranie kontaktów:
- Otrzymywanie wszystkich kontaktów
- Filtrowanie wzajemnych kontaktów
- Sortowanie według czasu ostatniego online:
- Online teraz
- Niedawno w sieci
- Mniej niż godzinę temu
- Mniej niż dwie godziny temu
- I tak dalej
2. Mechanizm opóźnionej wysyłki:
- Grupowanie kontaktów po 5
- Szybkie tworzenie wiadomości opóźnionych:
- Minimalne opóźnienie między zapytaniami, aby uniknąć ograniczeń API
- Dla pierwszej grupy: opóźniona wysyłka po 5 minutach od aktualnego czasu
- Dla każdej następnej grupy: +15 minut do czasu wysyłki
- Przykład dla 100 kontaktów:
- 20 grup po 5 kontaktów
- Tworzenie wszystkich wiadomości opóźnionych odbywa się sekwencyjnie z minimalnym opóźnieniem
- Czas tworzenia wszystkich wiadomości opóźnionych: kilka sekund
- Faktyczna wysyłka wiadomości będzie odbywać się przez 5 godzin
- Po utworzeniu wszystkich wiadomości opóźnionych:
- Natychmiastowe odłączenie od konta
- Zwolnienie zasobów
- Aktualizacja statystyk w bazie danych
## 4. Wymagania techniczne
- Asynchroniczne wykonywanie wszystkich operacji
- Wsparcie do 50 równoległych wątków
- Przechowywanie plików sesji i konfiguracji w osobnym folderze projektu
- Praca przez proxy
- Obsługa błędów i wyjątków
- Logowanie procesów
- Optymalizacja pracy z API Telegram:
- Minimalne opóźnienia między zapytaniami
- Efektywne zarządzanie połączeniami
- Obsługa ograniczeń API
## 5. Struktura plików
- Plik proxy.txt z proxy
- Folder do przechowywania sesji
- Folder do konfiguracji JSON kont
- Baza danych do przechowywania statystyk:
- Tabela kont
- Tabela użytkowników
- Tabela statystyk wysłanych wiadomości