FamilyFavoriteService
Сервіс, який перетворює платну активність конкретної Family у FamilyFavorite.
Задача
- Визначити TU, RU, час і вид платної дії у Family-даних.
- Без дублювання створити або оновити пару
TU + RU. - Оновити
firstPaidAt,lastPaidAt,profit,paidProfitіgifts. - Оновити
blockedByRU, коли Family повертає стан блокування у діалозі або окремому списку. - Після успішного запису опублікувати малу подію
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 не потрібен.
Оновлення
- Створювати favorite тільки після платної дії RU для TU.
- Повторна вигрузка статистики замінює агрегат за період, а не додає його повторно.
- Повторне повідомлення з тим самим partner message ID не збільшує
profit. firstPaidAtможе тільки зменшуватися,lastPaidAt— тільки збільшуватися.
Спільні правила
- Favorite існує для пари
TU + RUпісля першої платної дії. New RU— перша платна дія цієї пари, незалежно від інших TU.- Active Favorite рахується за однією platform-настройкою; default
7днів. isBlackListпоточних Family таblockedByTUGolden зводяться до одного поляblockedByTU.- Freeloader визначається глобально для RU і не належить FamilyFavoriteService.
Незакриті інтеграції
- Prime і Udate не мають RU в admin statistics, тому використовують платні повідомлення з TU-логік.
- TODO: реалізувати отримання
blockedByRUу Prime. - TODO: визначити джерело gifts для Udate або не повертати його для цієї Family.
Заповнити
- Вибрати формат зберігання нормалізованої paid activity, з якої FavoriteService рахуватиме календар без Family-логіки.