TU Profiles (per-family)
(UI-екран Family-меню) — головна вкладка Family для роботи зі списком TU у межах однієї Family: golden, prime, udate, chathouse.
Суть
Екран показує runtime-список TU тільки поточної Family і дає дії над цими TU: фільтрацію, пошук, масовий вибір, перепризначення тімлідів/операторів і family-specific сервісні дії.
Prime у UI позначений як TalkyTimes, а route-сегмент має значення talkytimes. Внутрішній/backend Family key залишається prime; зокрема, картка отримує його через ?extra=prime.
Цей файл є єдиним джерелом правди для per-family вкладки TU Profiles. Глобальний крос-Family реєстр описаний окремо в TU Profiles (Stack).
Use cases
directorпереглядає всі TU Family, розкладає їх по статусних групах, масово змінює тімліда і виконує family-specific сервісні дії.top-managerпрацює тільки зі своїм скоупом тімлідів: фільтрує список, змінює тімліда/оператора в межах доступу, користується refresh/password/gifts/FN залежно від Family.supervisor(team_lead) працює з плоскою таблицею власної команди і масово переназначає TU між операторами.client_managerбачить TU під своїм кураторством, масово змінює тімліда і має додаткові обмеження для TU без CM.operatorбачить тільки власні TU у вигляді карток і переходить у конкретну TU Card.
Доступи і формат екрана
| Роль | Frontend route | Які TU бачить | Формат списку | Основна масова дія |
|---|---|---|---|---|
director | /ceo/<family-route>/tu_profiles | усі TU Family | згруповані таблиці | Change TL |
top-manager | /top_manager/<family-route>/tu_profiles | TU своїх тімлідів | згруповані таблиці | немає окремої масової кнопки в header |
supervisor (team_lead) | /teamlead/<family-route>/tu_profiles | TU своєї команди | одна плоска sortable-таблиця | Change operator |
client_manager | /client_manager/<family-route>/tu_profiles | TU під своїм кураторством | згруповані таблиці | Change TL |
operator | /operator/tu_profiles | тільки власні TU | картки | — |
<family-route> дорівнює golden, udate, chathouse або talkytimes для Family prime.
Групування і статуси
directorіclient_manager: поточні legacy-заголовкиWorking profiles,Free profiles,Not Active profiles,Deleted profiles.top-manager: поточні legacy-заголовкиWorking profiles,Blocked profiles,Deleted profiles.supervisor: окремих груп немає; є колонкаStatus.operator: таблиці немає; є список карток.- У grouped-видах заголовок блоку показує
Selected: NіCount: N. - Пошук застосовується до списку до його розбиття на групи.
- Табличний рядок підсвічується жовтим, якщо
!item.clientManager.
Legacy-слово profiles у заголовках означає TU цієї Family і не є нормативною назвою сутності. Його потрібно замінити на TU окремою user-facing copy-зміною.
Фільтри і контролі
| Контрол | director | top-manager | supervisor | client_manager | operator | Примітка |
|---|---|---|---|---|---|---|
All admin panels | ✓ | ✓ | — | ✓ | — | є на table-видах, крім team_lead |
All client managers | ✓ | — | — | — | — | тільки в director; є спецопції Free і All client managers |
Search profiles... | ✓ | ✓ | ✓ | ✓ | — | поточний legacy-placeholder shared search field; шукає TU по імені / прізвищу / ідентифікатору |
ID / ULID toggle | тільки udate | тільки udate | тільки udate | тільки udate | — | перемикає id_api / ulid |
| Header checkbox / multi-select | ✓ | ✓ | ✓ | ✓ | — | операторський список без масового вибору |
Header-дії по ролях
| Роль | golden | prime | udate | chathouse |
|---|---|---|---|---|
director | Change TL, Refresh, Reset Password | Change TL, Refresh, Reset Password | Change TL, Delete Stories | Change TL, Refresh, MAX profiles per Auth Code = X |
top-manager | Refresh, Reset Password | Refresh, Reset Password | disabled Refresh placeholder | Refresh |
supervisor | Change operator, Reset Password | Change operator, Reset Password | Change operator | Change operator |
client_manager | Change TL, Reset Password | Change TL, Reset Password | Change TL, Delete Stories | Change TL, Refresh |
operator | — | — | — | — |
Масові дії розведені так:
directorіclient_managerмають тільки масове перепризначення тімліда.supervisorмає тільки масове перепризначення оператора.top-managerне має окремої масової кнопки в header цієї вкладки.
Навігація з рядка або картки
directorпрацює з TU прямо в таблиці; окремої колонкиEditтут немає.top-managerіsupervisorмають колонкуEditз переходом у stack-картку TU.client_managerокремої колонкиEditне має.operatorвідкриває картку кліком по імені:/operator/tu_profiles/:id?extra=<family>.- Якщо нормалізована TU оператора не має Stack
id, клік показує поточний legacy-fallbackThere is no TU card for this profile.. Це формулювання не відповідає TU-стандарту й потребує окремої copy-зміни. - Якщо фото відсутнє, операторська картка показує
No image.
TU Card з per-family списку
top-manager, supervisor і operator відкривають partial-access режим із контекстом ?extra=<family>. director і client_manager переходять до full-access режиму з глобального каталогу. Єдиний опис полів, рольових прав, збереження, Return і станів міститься в TU Card.
Додаткові обмеження
- Для
client_managerчастина дій блокується на TU безclientManager: checkbox візуально переходить уno-drop, селектори тімліда отримуютьblock={!item?.clientManager}, аGet detailsуgolden/primeне виконує дію. directorу таблиці призначає саме тімліда; окремого selector-а оператора в director-рядку цієї вкладки немає.
Колонки по ролях
director
| Family | Колонки |
|---|---|
golden | checkbox, №, IMG, TU, ID, Lvl, CM, Login details, TeamLead1, E-mail, TeamLead2, E-mail, TeamLead3, E-mail, Status |
prime | checkbox, №, IMG, TU, ID, Lvl, CM, Login details, TeamLead1, TeamLead2, TeamLead3, Status, Gifts |
udate | checkbox, №, IMG, V.A., TU, ID / ULID, Lvl, CTR, CM, TeamLead1, TeamLead2, Status, Gifts |
chathouse | checkbox, №, IMG, TU, ID, Lvl, CM, Login details, TeamLead1, TeamLead2, TeamLead3, Status |
Додатково:
golden: у клітинціTUє інтерактивнийFN; єGet details; біля кожногоTeamLeadє checkbox доступу до email.prime: у клітинціTUє read-only індикаторCR; єGet details.udate: єvideoAvatar.thumbnail, перемикачID / ULID,CTR;Giftsпоказується як статусON / OFF, а не toggle;Get detailsнемає.chathouse:Login detailsіGet detailsє тільки тут, на director-рівні цієї Family.
top-manager
| Family | Колонки |
|---|---|
golden | checkbox, №, IMG, TU, ID, Lvl, Login details, CM, TeamLead1, E-mail, Operator1, TeamLead2, E-mail, Operator2, TeamLead3, E-mail, Operator3, Edit |
prime | checkbox, №, IMG, TU, ID, Lvl, Login details, CM, TeamLead1, Operator1, TeamLead2, Operator2, TeamLead3, Operator3, Gifts, Edit |
udate | checkbox, №, IMG, V.A., TU, ID / ULID, Lvl, CTR, CM, TeamLead1, Operator1, TeamLead2, Operator2, Edit |
chathouse | checkbox, №, IMG, TU, ID, Lvl, CM, TeamLead1, Operator1, TeamLead2, Operator2, TeamLead3, Operator3, Edit |
Додатково:
golden: інтерактивнийFN,Get details, email-access checkbox біля кожногоTeamLead.prime:Giftsперемикається toggle-омON / OFF;Login detailsє; code path лишаєтьсяtalkytimes.udate: єvideo avatar,CTR,ID / ULID;Giftsколонки в поточному top-manager коді немає.chathouse: колонкиLogin detailsу top-manager списку немає.
supervisor (team_lead)
| Family | Колонки |
|---|---|
golden | checkbox, №, Lvl, IMG, TU, ID, Login details, Status, CM, Operator, E-mail, Edit |
prime | checkbox, №, Lvl, IMG, TU, ID, Status, CM, Operator, Gifts, Edit |
udate | checkbox, №, Lvl, IMG, V.A., TU, CTR, ID / ULID, Status, CM, Operator, Gifts, Edit |
chathouse | checkbox, №, Lvl, IMG, TU, ID, Status, CM, Operator, Edit |
Додатково:
golden: єGet details; checkbox email-access стоїть біляOperator.prime:Giftsперемикається toggle-ом.udate:Giftsпоказується як статусON / OFF, а не як toggle.chathouse:Get detailsна teamlead-рівні цієї вкладки немає.
client_manager
| Family | Колонки |
|---|---|
golden | checkbox, №, IMG, TU, ID, Lvl, Login details, TeamLead1, E-mail, TeamLead2, E-mail, TeamLead3, E-mail, Status |
prime | checkbox, №, IMG, TU, ID, Lvl, Login details, TeamLead1, TeamLead2, TeamLead3, Status, Gifts |
udate | checkbox, №, IMG, V.A., TU, ID / ULID, CTR, Lvl, TeamLead1, TeamLead2, Status, Gifts |
chathouse | checkbox, №, IMG, TU, ID, Lvl, TeamLead1, TeamLead2, TeamLead3, Status |
Додатково:
- окремої колонки
Editтут немає. golden: єGet details; біля кожногоTeamLeadє checkbox доступу до email.prime: єGet details;Giftsперемикається toggle-ом.udate: єvideo avatar,CTR;Giftsпоказується як статусON / OFF, а не як toggle.chathouse:Login detailsколонки тут немає.
Operator view
| Family | Формат |
|---|---|
golden, prime, udate, chathouse | портретні картки з avatar / No image, name / No name, ID / N/A, age / N/A, level / N/A і дією Media content; клік по картці веде на /operator/tu_profiles/:id?extra=<family> |
Операторський список не використовує family-specific list helper: він завантажує власні TU через спільне Stack-джерело з family у контексті запиту.
Media content без додаткового API-запиту відкриває вже завантажене profile.media у новій вкладці та не відкриває саму TU Card. Якщо посилання немає, UI показує Media content is unavailable for this TU profile.. Якщо браузер блокує нову вкладку, показується Unable to open media content. Allow pop-ups and try again..
Avatar передається у shared media renderer як preview source. Під час завантаження він показує loading placeholder, а після помилки — Image unavailable; автоматичного fallback із preview на інше оригінальне джерело в цьому списку немає.
Family-specific особливості
| Family | Ідентифікатор | Специфіка вкладки |
|---|---|---|
golden | id_api | інтерактивний FN (findNew), Login details = id_api + password, email-access checkbox, refresh через /golden/admin/checkLadies |
prime | id_api | code folder talkytimes, read-only CR (canCreateChat) у director, Login details = email + password, Gifts через enableFeature/disableFeature з feature: 'realPresent' |
udate | id_api або ulid | V.A. з videoAvatar.thumbnail, CTR, Delete Stories, без Login details і без password-action на цій вкладці |
chathouse | external_id | director-only legacy-налаштування MAX profiles per Auth Code, refresh через /chathouse/lady/updateLadyProfiles, Login details у цьому списку є тільки в director |
CTR у udate кодується так:
5..100— зелений#0584052..4— жовтий#facc000..1— червоний#ff0000null—N/A
У chathouse сторінка також завантажує pageSettings.maxProfilesPerOperatorQuantity, але в header вкладки TU Profiles зараз редагується тільки maxProfilesPerAuthCodeQuantity через slider 1..12.
TODO: нормалізувати в UI legacy-copy profiles у статусних групах, search placeholder, Chathouse limit і notification без зміни backend identifiers.
Джерела даних
Табличні представлення використовують role-scoped Family helpers: залежно від ролі вони отримують плоский список або групування за operators і supervisors. Operator view використовує спільне Stack-джерело власних TU та передає поточну Family як контекст. Перепризначення supervisor/operator і сервісні дії виконуються окремими Family helpers.
Перевірені Golden operation deeplink-и:
- getAll;
- getLadiesGroupedByOperators;
- getLadiesGroupedByOperatorsAndSupervisors;
- setSupervisor;
- setOperator;
- changePassword;
- changeSenderType.
Повні request/response контракти потрібно звіряти у swagger, а не дублювати в цьому UI-документі.
Зв’язки
- TU Profiles (Stack) — крос-Family картка TU на рівні
stack - TU Card — єдине джерело логіки full-access і partial-access картки.
- TU Statistics — статистика по TU цієї Family
- swagger — реєстр Swagger UI бек-сервісів
- TODO: додати перевірені Swagger operation deeplink-и для Prime, Udate, Chathouse і Stack-джерела Operator view.