FavoriteService
Спільний модуль family-application-api для роботи з FamilyFavorite.
Задача
- Віддавати нашому frontend favorites вибраної TU в одному форматі для всіх Family.
- Оновлювати ручні поля favorite з нашого frontend та Electron.
- Зберігати автоматичні оновлення favorite від Family-логік та Electron sync.
- Віддавати календар
New / Unique RUвибраної TU. - Формувати базовий snapshot favorites для Electron startup data.
Frontend API
Робочий список операцій до проєктування Swagger:
| № | Операція | Endpoint |
|---|---|---|
| 1 | Favorites вибраної TU | GET /tus/{tuId}/favorites |
| 2 | Оновити дані favorite | PATCH /favorites/{favoriteId} |
| 3 | Календар TU за місяць | GET /tus/{tuId}/favorites/calendar?month=YYYY-MM |
PATCH /favorites/{favoriteId} змінює type, contacts, isWhite або blockedByTU. blockedByRU змінюється тільки під час Family-синхронізації.
Внутрішні операції
| № | Операція | Хто використовує |
|---|---|---|
| 1 | Favorites усіх TU оператора | Electron StartupDataService |
| 2 | Favorite за парою TU + RU | Backend-логіки діалогу, тасків і сендерів |
| 3 | Upsert автоматичного стану | FamilyFavoriteService |
| 4 | Batch-збереження змін Electron | Electron DataSyncService |
Автоматичне оновлення приймає firstPaidAt, lastPaidAt, profit, paidProfit, gifts, isWhite та blockedByRU. Ручне оновлення не може перезаписати новіший автоматичний стан.
Список favorites
- Перевірити доступ user до TU через правила TUService.
- Прочитати
FamilyFavoriteзаtuId. - Додати профіль і останній online RU з глобальної RU-сутності.
- Додати
isFreeloaderз глобальної RU-логіки. - Порахувати
isActiveзаlastPaidAtі повернути список frontend.
Frontend та Electron отримують одне поле profit. Для Golden і Chathouse це сума витрат, для Prime і Udate — кількість платних вхідних повідомлень.
Календар
- Unique RU — кількість різних RU з платною дією на цій TU у вибраний день.
- New RU — кількість RU, для яких цього дня відбулася перша платна дія саме на цій TU.
Джерело платних дій і поточні відмінності описані у FamilyFavoriteService.
Межі
- Favorites одного RU на різних TU агрегує GlobalFavoriteService.
- Профіль, name, language та online RU належать глобальній RU-сутності.
- Нотатки й AI-нотатки належать окремому NotesService.