06-project-ru-profiles

ProjectRUProfile

backend-common/src/ru-profile/project-ru-profile.schema.ts · колекція project_ru_profiles — короткий профіль і online одного RU у межах проєкту. Один запис на кожного RU, якого бачили TU, незалежно від того, чи є він favorite.

Поля

  • project — проєкт RU.
  • ruId — ID RU на партнері як string; той самий ключ, що у 03-project-favorites і 04-project-global-favorites.
  • name / age / avatar — профіль, як його бачать TU на партнері, або null. Вік 0 від партнера зберігається як null.
  • isSatellite — ознака Golden satellite; інші проєкти її не пишуть.
  • lastOnlineAt — коли RU востаннє був online.
  • createdAt / updatedAt — updatedAt рухається лише при реальній зміні профілю або online; на ньому тримається стрічка змін для кешу Electron.

Хто пише

ЩоХтоЯк
ПрофільElectron через [[services/project-application-api/features/07-ru-profiles#Запис|POST /v2/ru-profiles/sync]]пакет профілів, побачених у TU; записуються лише нові й змінені
Onlineсервіс проєкту через знімок online на партнеріlastOnlineAt лише наявним профілям; поки лише Golden
Перенесення[[services/project-application-api/features/12-migrations|POST /v2/migrations/ru-profiles/apply]]лише відсутні RU

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

ПроєктПрофіль у legacyOnline у legacy
Goldengolden_man_profiles — усі RU, яких бачив Electron (~158 тис.), тримається в пам’яті сервісу; змінені профілі не оновлюютьсяlastOnline у профілі і golden_global_mans.lastOnlineAt, знімок партнера раз на 5 хв
Primeім’я в prime_global_mansprime_global_mans.lastOnlineAt
Chathouseім’я в chathouse_global_manschathouse_global_mans.lastOnlineAt
Udateім’я в udate_global_mansudate_global_mans.lastOnlineAt

Нюанси

  • Індекси: unique project + ruId; project + updatedAt + _id для стрічки змін.
  • Сервіс нічого не тримає в пам’яті: кеш профілів живе в Electron, після логіну клієнт забирає лише зміни за курсором, невідомих RU дочитує за ID.
  • 04-project-global-favorites профілю не містить: favorites і global favorites беруть його з цієї колекції на читанні.