family-favorite-service

FamilyFavoriteService

Сервіс, який перетворює платну активність конкретної Family у FamilyFavorite.

Задача

  1. Визначити TU, RU, час і вид платної дії у Family-даних.
  2. Без дублювання створити або оновити пару TU + RU.
  3. Оновити firstPaidAt, lastPaidAt, profit, paidProfit і gifts.
  4. Оновити blockedByRU, коли Family повертає стан блокування у діалозі або окремому списку.
  5. Після успішного запису опублікувати малу подію FamilyFavoriteChanged з family і ruExternalId.

Джерела

FamilyСтворення й оновлення favoriteРезультат
GoldenОперативна й денна статистика з RU та часом операціїprofit, paidProfit, gifts, firstPaidAt, lastPaidAt
PrimeПлатні вхідні повідомлення з історії діалогу та live-подійprofit, paidProfit, firstPaidAt, lastPaidAt
ChathouseОперативна й денна статистика з RU та часом операціїprofit, paidProfit, gifts, firstPaidAt, lastPaidAt
UdateПлатні вхідні повідомлення з історії діалогу та live-подійprofit, paidProfit, firstPaidAt, lastPaidAt

Golden і Chathouse отримують дані після Statistics Sync Worker. Prime і Udate отримують повідомлення через Family TU API. Окремий Family Favorite API не потрібен.

Оновлення

  1. Створювати favorite тільки після платної дії RU для TU.
  2. Повторна вигрузка статистики замінює агрегат за період, а не додає його повторно.
  3. Повторне повідомлення з тим самим partner message ID не збільшує profit.
  4. firstPaidAt може тільки зменшуватися, lastPaidAt — тільки збільшуватися.

Спільні правила

  1. Favorite існує для пари TU + RU після першої платної дії.
  2. New RU — перша платна дія цієї пари, незалежно від інших TU.
  3. Active Favorite рахується за однією platform-настройкою; default 7 днів.
  4. isBlackList поточних Family та blockedByTU Golden зводяться до одного поля blockedByTU.
  5. Freeloader визначається глобально для RU і не належить FamilyFavoriteService.

Незакриті інтеграції

  • Prime і Udate не мають RU в admin statistics, тому використовують платні повідомлення з TU-логік.
  • TODO: реалізувати отримання blockedByRU у Prime.
  • TODO: визначити джерело gifts для Udate або не повертати його для цієї Family.

Заповнити

  • Вибрати формат зберігання нормалізованої paid activity, з якої FavoriteService рахуватиме календар без Family-логіки.