03-project-favorites

ProjectFavorite

backend-common/src/favorite/project-favorite.schema.ts · колекція project_favorites — пара TU + RU після першої платної дії RU: платна активність і ручні позначки оператора.

Поля

  • project — проєкт пари.
  • tuId — canonical ID TU (02-project-tus).
  • ruId — ID RU на партнері як string.
  • type — ручний тип від оператора: new, normal, naughty, aggressive.
  • contacts.status — yes або no: чи відбувся обмін контактами.
  • contacts.email — email RU у нижньому регістрі, якщо проєкт його зберігає.
  • blockedByRU — RU заблокував TU на партнері.
  • blockedByTU — RU вручну заблокований для TU у наших логіках.
  • firstPaidAt / lastPaidAt — перша й остання платна дія RU для TU; null, поки платної дії не було.
  • profit — profit пари у форматі проєкту.
  • gifts — кількість подарунків, якщо проєкт їх повертає.
  • isWhite — RU у white-list цієї TU; рахує Electron.
  • createdAt / updatedAt — час створення й останньої зміни.

Поля directorId немає: scope визначає TU.

Відмінності проєктів

ПроєктruIdprofitgiftsДжерело платної діїБлок від RU
Goldenчисловий IDсума витрат✓денна та оперативна статистикаокремий блок-лист по TU
Primeчисловий IDкількість платних вхідних повідомлень—історія діалогу і live-подіїз діалогів
ChathouseULIDсума витрат разом із free credits✓статистика з ознакою free creditsз діалогів
UdateULIDкількість платних вхідних повідомленьджерела немаєісторія діалогу і live-подіїз діалогів

Writer автоматичних полів — перерахунок зі статистики проєктів (Перерахунок); наповнена лише Golden.

Нюанси

  • Індекси: unique project + tuId + ruId; tuId + lastPaidAt для списку favorites TU; project + ruId для зв’язків RU з TU.
  • Активний favorite не зберігається: рахується від lastPaidAt за спільною настройкою, зараз 7 днів.
  • Golden: дати партнера є локальним часом Kyiv; firstPaidAt з legacy має лише день, точний час доби дасть імпорт статистики. Блокування від RU беруться з golden_block_lists, а не з поля blocked legacy-документа.
  • Legacy name, note і language favorite у документ не входять: ім’я живе в 04-project-global-favorites, нотатки чекають NotesService.
  • Міграція зберігає _id із golden_favorites; пари без canonical TU у scope директора пропускаються.