data-sync

Сервіс збереження даних на стак

Батч-синк локальних результатів логік на наш сервер: раз на 60 с зібрати накопичене, відправити одним пакетом і видалити локально після підтвердження (delete-on-ack). Використовує синхронізацію даних Stack API, однакову для всіх проєктів. Базова механіка реалізована в stack-electron (DataSyncService); favoriteProfiles треба додати.

Інтервал

60 с (самоперепланування) + одразу на старті + один фінальний синк на зупинці (дослати перед виходом).

Логіка

  1. Раз на 60 с збираємо накопичене з локальної SQLite.
  2. POST одним пакетом на наш сервер.
  3. Сервер вертає id збереженого → видаляємо ці рядки локально (ack).
  4. Оверфлоу: будь-яка колекція >200 → шлемо по 200, решту повторюємо через 3 с (не чекаємо повний інтервал).
  5. 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 с; +повтори при оверфлоу).

Зв’язки