FavoriteService
Спільний модуль project-application-api для роботи з ProjectFavorite.
Задача
- Віддавати нашому frontend favorites вибраної TU в одному форматі для всіх проєктів.
- Оновлювати ручні поля favorite з нашого frontend та Electron.
- Зберігати автоматичні оновлення favorite від логік проєктів та Electron sync.
- Віддавати календар
New / Unique RUвибраної TU. - Формувати базовий snapshot favorites для Electron startup data.
Під час міграції треба повернути автоматичну ініціалізацію favorites після синхронізації TU. У legacy її робив LadySyncService.processLadyUpdates викликом initFavorites(); разом із видаленням того сервісу вона зникла. Див. Golden Migration, розділ «Борг після вимкнення legacy TU sync».
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 змінюється тільки під час синхронізації з проєктом.
Внутрішні операції
| № | Операція | Хто використовує |
|---|---|---|
| 1 | Favorites усіх TU оператора | Electron StartupDataService |
| 2 | Favorite за парою TU + RU | Backend-логіки діалогу, тасків і сендерів |
| 3 | Upsert автоматичного стану | ProjectFavoriteService |
| 4 | Batch-збереження змін Electron | Electron DataSyncService |
Автоматичне оновлення приймає firstPaidAt, lastPaidAt, profit, gifts, isWhite та blockedByRU. Ручне оновлення не може перезаписати новіший автоматичний стан.
Список favorites
- Перевірити доступ user до TU через правила TUService.
- Прочитати
ProjectFavoriteзаtuId. - Додати профіль і останній online RU з глобальної RU-сутності.
- Додати
isFreeloaderз глобальної RU-логіки. - Порахувати
isActiveзаlastPaidAtі повернути список frontend.
Frontend та Electron отримують одне поле profit. Для Golden і Chathouse це сума витрат, для Prime і Udate — кількість платних вхідних повідомлень.
Календар
- Unique RU — кількість різних RU з платною дією на цій TU у вибраний день.
- New RU — кількість RU, для яких цього дня відбулася перша платна дія саме на цій TU.
Джерело платних дій і поточні відмінності описані у ProjectFavoriteService.
Межі
- Favorites одного RU на різних TU агрегує GlobalFavoriteService.
- Профіль, name, language та online RU належать глобальній RU-сутності.
- Нотатки й AI-нотатки належать окремому NotesService.