EmailService
src/main/operator/interval-services/email.service.ts
Оператор-рівень. Перевіряє email-діалоги фаворитів і створює UnansweredEmail таски якщо є непрочитані вхідні листи.
Інтервал
~60 сек (±20% рандом для розмазування навантаження).
Логіка
- Якщо вже є активний
UnansweredEmailтаск → пропустити (не більше одного за раз) - Отримати анкети з підключеним email (
clientEmail.status === connected) - Отримати фаворитів з
contactDetails.email+clientEmail.status === connected - Відфільтрувати діалоги перевірені менше 5 хв тому (кеш у
checked_email_dialogSQLite) - Відсортувати: нові (ще не перевірені) → найдавніше перевірені
- Для кожного діалогу (max 10 за тік, зупинка після першого створеного таска):
- Отримати повідомлення через
apiService.email.getMessages() - Знайти найновіше повідомлення по
createdAt - Якщо вхідне →
taskFactory.tryAddTask(UnansweredEmail) - Якщо вихідне або немає повідомлень → пропустити
- Записати timestamp перевірки в
checked_email_dialog
- Отримати повідомлення через
Нюанси
- Зупиняється одразу після першого створеного таска за тік — не флудить
- Кеш
checked_email_dialogзберігаєladyId_api + manId_api + timestampв SQLite - Не запускається якщо мережа недоступна (
networkService.isConnected())
Зв’язки
- Таск: UnansweredEmail
- Запускається з: LadyRunner-Init
- Кеш: Database (
checked_email_dialog)