feat(recommendations): collect demographics and advance age cohorts
ci / ts / ts (packages + web) (push) Successful in 3m19s
ci / db / db (push) Successful in 53s
ci / module boundaries / boundaries (push) Successful in 7s
ci / api / api (push) Successful in 51s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m3s
ci / recommender / recommender (push) Failing after 16s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m15s
ci / ts / ts (packages + web) (push) Successful in 3m19s
ci / db / db (push) Successful in 53s
ci / module boundaries / boundaries (push) Successful in 7s
ci / api / api (push) Successful in 51s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m3s
ci / recommender / recommender (push) Failing after 16s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m15s
This commit is contained in:
1 parent
e158558da3
commit
fff91c446b
24 files changed
+778
-324
No files matched your search
+21
-4
@@ -219,10 +219,27 @@ MMR-разнообразие и квоты остаются. Пока модел
|
||||
- **Новый пользователь**: опциональный онбординг (выбрать 3+ жанра или исполнителя) → начальные центроиды.
|
||||
Без онбординга — первые пачки из `popular` и максимально разнообразных кластеров библиотеки
|
||||
(по одному треку из разных кластеров), exploration 40% на первые 30 треков.
|
||||
- Реализация онбординга: `GET /onboarding` (40 исполнителей с наибольшим числом треков, 24 жанра; `required` —
|
||||
не пройден и своей истории < 10 треков), `PUT /me/onboarding` → `user_profiles_rec.onboarding`; пустой выбор —
|
||||
пропуск. Рекомендатель, пока своих оценок < 30, добавляет псевдооценки: треки выбранных исполнителей +1,
|
||||
жанров +0.5 (до 300 треков). Веб показывает онбординг на главной вместо волны.
|
||||
- Онбординг: `GET /onboarding` возвращает 40 исполнителей, 24 жанра, сохранённый `choice` и `required`.
|
||||
Анкета показывается на главной в вебе/desktop и Android до первого заполнения или пропуска, независимо
|
||||
от истории и наличия библиотеки. Её можно повторно открыть в настройках профиля.
|
||||
- `PUT /me/onboarding` сохраняет исполнителей, жанры, необязательный пол (`male`, `female`, `other`) и
|
||||
возрастную группу (`under_13`, `13_19`, `20_29`, `30_39`, `40_49`, `50_59`, `60_plus`) в
|
||||
`user_profiles_rec.onboarding`. Пустые списки и `null` для пола/возраста означают пропуск.
|
||||
- Вместе с исходной возрастной группой сервер сохраняет год выбора (`age_group_year`); клиент не может
|
||||
подменить его. SQL-функция `rec_age_group` прибавляет прошедшие годы к середине выбранного диапазона
|
||||
(для открытых диапазонов: 6 и 65 лет). Например, 13–19 лет в 2006 → примерно 30–39 лет в 2026.
|
||||
API возвращает текущую приблизительную группу. При сохранении той же текущей группы исходная группа
|
||||
и год остаются прежними; выбор другой группы задаёт новую точку отсчёта. Это оценка, не дата рождения.
|
||||
- Пока собственных оценок меньше 30, рекомендатель добавляет псевдооценки: исполнители +1, жанры +0.5,
|
||||
а треки, понравившиеся минимум двум другим незаблокированным слушателям с тем же полом и текущей
|
||||
возрастной группой, — до +0.25. Если указано одно поле, сравнивается только оно; если ни одного —
|
||||
демографического сигнала нет. Личные оценки не перезаписываются, дизлайки исключаются.
|
||||
На каждый источник действует лимит 300 треков. Музыкальные предпочтения пола/возраста заранее не задаются.
|
||||
- Запасная Go-волна учитывает выбранных исполнителей/жанры и те же демографические когорты после личных
|
||||
лайков и любимых исполнителей. Случайные треки сохраняют разнообразие.
|
||||
- Администраторский сброс удаляет профиль целиком, включая все ответы и год выбора. Клиенты обновляют
|
||||
состояние анкеты каждые 30 секунд, а веб также при возвращении на главную/в окно. Пользователь проходит
|
||||
настройку снова; текущее воспроизведение не прерывается.
|
||||
- **Новый трек**: сразу доступен через `audio_sim` / `fresh` (как только проанализирован), без единого прослушивания.
|
||||
|
||||
## 8. Обучение на всех пользователях
|
||||
|
||||
Reference in new issue
Block a user