Сервіс збереження даних на стак
Батч-синк локальних результатів логік на наш сервер: раз на 60 с зібрати накопичене, відправити одним пакетом і видалити локально після підтвердження (delete-on-ack). Використовує синхронізацію даних Stack API, однакову для всіх проєктів. Базова механіка реалізована в stack-electron (DataSyncService); favoriteProfiles треба додати.
Інтервал
60 с (самоперепланування) + одразу на старті + один фінальний синк на зупинці (дослати перед виходом).
Логіка
- Раз на 60 с збираємо накопичене з локальної SQLite.
- POST одним пакетом на наш сервер.
- Сервер вертає id збереженого → видаляємо ці рядки локально (ack).
- Оверфлоу: будь-яка колекція >200 → шлемо по 200, решту повторюємо через 3 с (не чекаємо повний інтервал).
- 3 фейли поспіль → закриття програми (
app.quit()+ лог помилки).
Що синкаємо (пакет)
| Поле | Що це | Джерело |
|---|---|---|
| actions | стрім дій оператора | Дії оператора |
| chats | результати чат-сендера | сендер |
| mails | результати мейл-сендера | сендер |
| senderAnswers | відповіді RU на конкретні sender-відправки | сендер + вхідні повідомлення |
| online | онлайн TU (lady_online) | Онлайн ТЮ |
| streams | періоди стрімів камер | стрім Golden |
| views | перегляди профілів | перегляди Golden |
| favoriteProfiles | змінені короткі профілі глобальних RU | сервіс профілів RU |
| criticalLogs | критичні логи | усі логіки |
+ supervisorFamilyId — чий це батч. Онлайн оператора окремо не шлеться — сервер рахує його зі стріму actions.
Дані / стан
Найважливіше, що тримаємо (як у коді)
- Пакет —
{ actions, chats, mails, senderAnswers, online, streams, views, favoriteProfiles, criticalLogs }- Ack — сервер вертає id → рядки видаляються локально
| Дані | Де | Оновлення |
|---|---|---|
| Черги на синк | локальна SQLite | логіки пишуть; синк шле 60 с; delete-on-ack |
| attempts (лічильник фейлів) | пам’ять | +1 на фейл; 3 → app.quit; 0 на успіх |
Нюанси
- Batch ≤ 200 на колекцію; оверфлоу → 200 + повтор через 3 с.
- delete-on-ack: локально видаляється лише те, що сервер підтвердив (id).
- 3 фейли синку поспіль → програма закривається.
onlineу пакеті = онлайн TU, не оператора.- зап/хв — наше апі (1 POST / 60 с; +повтори при оверфлоу).
Зв’язки
- Годується: дії, сендер (
chats,mails,senderAnswers), онлайн ТЮ, профілі глобальних RU, стрім/перегляди (Golden), логи. - Навпаки: Отримання даних з стаку — pull на старті.
- Нові типи збереження спочатку фіксуємо у матриці змін даних.