Перейти до вмісту

Обрані спеціальності

ПолеЗначення
Статус🟢 prod
Поверхніweb
Доступністьпотрібен акаунт
ВласникTODO:
Останнє підтвердження2026-06-14 · код:main + live-гейти (/users/me → 401, /specialities → 200 публічно). Авторизований UI — code-derived

Дозволяє абітурієнту (та APPLICANT_MEMBER) вибрати список цільових спеціальностей (interestedSpecialities) і одну позначити основною (primary). Для цих спеціальностей система рахує конкурсний бал і шанси вступу. Це не окрема сторінка, а частина профілю — редагується у двох місцях.

Два місця редагування одного поля interestedSpecialities:

  1. Налаштування → «Інтереси» (/profile/settings, InterestsSection): мультиселект із нечітким пошуком (Fuse), згрупований по галузях знань (branch), формат «‹код› ‹назва›»; також вибір регіонів.
  2. Майстер «Мій бал», крок 5 (/profile/my-score/step-5, MyScoreStep5): «Цільові спеціальності», валідація «треба обрати хоча б одну».

Перегляд: на дашборді ProfileCard показує лічильник; на результаті my-scoreSpecialityCard з конкурсним балом по кожній спеціальності + вибір основної.

ДжерелоЕндпоінт / entityПризначення
api-v2GET /users/meпрофіль із interestedSpecialities: SpecialityResponse[]
api-v2PATCH /users/profileоновлення (interestedSpecialities: number[])
api-v2PUT /users/profile/primary-speciality{ specialityId }; має бути серед обраних, інакше 400; null = скинути
api-v2GET /specialities, /specialities/branches, /specialities/:id/coefficientsпублічний read-only каталог опцій (RedisCache)
api-v2БД: M2M user_interested_specialities + users.primary_speciality_idзведено в базового користувача (міграція 1774434517786)

Зв’язки з іншими фічами

Section titled “Зв’язки з іншими фічами”
  • my-scoreGET /users/profile/concurs-score рахує бал по кожній обраній спеціальності.
  • offer-search — каталог спеціальностей як джерело опцій.
  • profile — поле живе в профілі (Settings + my-score).
РепоШляхПримітка
abitly-frontend-v2src/components/pages/profile/pages/Settings/components/Sections/InterestsSectionредактор інтересів
abitly-frontend-v2src/components/pages/profile/pages/MyScore/** (Step5)вибір у майстрі бала
abitly-api-v2src/api/users/users.service.ts (reconcilePrimarySpeciality)реконсиляція primary
  • Доступно лише авторизованим; повний UI не верифіковано без браузера.
  • Primary реконсилюється: якщо стара основна випала зі списку обраних — primarySpecialityId авто-скидається в null.
  • Релевантно для APPLICANT / APPLICANT_MEMBER; STUDENT/TEACHER/OTHER мають інші поля.
  • ⚠️ Зв’язок зі specialty-broadcasts бота розірвано: tg-bot v3 ADR-0008 (2026-06-02) видалив filter_specialities/filter_universities (таблиці з іменами >63 символів давали UndefinedTableError і краш /start); бот фільтрує лише за регіонами. Обрані спеціальності кабінету наразі НЕ використовуються ботом для сегментації розсилок. Майбутній зв’язок — у дизайні profile-bot-link.
  • ≠ збережені оффери: interestedSpecialities (цілі) — це не Вступлісти (збережені конкурсні пропозиції).
ДатаПодіяДжерело
2026-06-02tg-bot ADR-0008 відв’язав specialty-фільтриabitly-tg-bot-v3
2026-06-14створено картку; факти з коду mainPR Wave 2