TU Media Gallery
(UI-екран Family-меню)
TU Media Gallery — спільний per-Family розділ для роботи з медіа TU. Розділ доступний у udate, prime (маршрут talkytimes), golden і chathouse та використовує окремі дозволи галереї для вибраної Family.
Use cases
- Після відкриття розділу frontend паралельно завантажує preview доступних TU через
POST /v2/tus/previewі дозволи галереї для поточної Family. topManagerможе фільтрувати TU за team lead та operator,supervisor— за operator,client_manager— за team lead; дляoperatorкомандні фільтри не показуються. Вибрані значення передаються в preview-запит якteamLeadProjectIdіoperatorProjectId.- Списки team lead/operator заново завантажуються при кожному відкритті відповідного dropdown через
POST /team-members/current/supervisorsіPOST /team-members/current/operators; зміна team lead скидає вибраного operator, а наступне відкриття operator dropdown запитує список для нового team lead. - Користувач може знайти TU за ім’ям або TU ID та вибрати її у списку.
- Порожній список показує стан
No TU found.; помилки завантаження відображаються через глобальне повідомлення. - Після вибору TU основна панель показує дозволені комбінації
channel → type → statusі завантажує відповідні фото, відео або аудіо. Іконка фільтра категорій розташована праворуч у панелі фільтрів для статусуapproved. У дропдауні початково вибрані всі категорії, які повернувgetAllows, включно зDefaultдля звичайних медіа; коли вибрані всі, галерея показує всі медіа. Користувач може залишити кілька категорій одночасно. Зміна каналу або типу відновлює вибір усіх доступних для них категорій; зміна TU чи фільтра замінює поточний набір медіа. - Іконка фільтра категорій показується лише для
approved, якщоgetAllowsповертає для поточного типу медіа хоча б одну категорію крімdefault. Якщо категорій немає або доступна тількиdefault, фільтр прихований, а список медіа запитується зcategories: []. Дляon_moderationіdeclinedфільтр прихований, запит також міститьcategories: []; при поверненні доapprovedпопередній вибір категорій зберігається. - Галерея підвантажує наступні сторінки під час прокручування, не дублює однакові медіа й припиняє pagination, коли наступної сторінки немає.
- Натискання на медіа відкриває fullscreen preview. Для списку передбачені стани початкового завантаження, підвантаження наступної сторінки,
No media filesта помилка з дієюRetry. Якщо бекенд повертає масив деталей помилки завантаження, кожна деталь показується окремим глобальним повідомленням. - Картки з категоріями
erotic,special,pre_specialіspecial_plusмають локальні category-іконки з доступною назвою та tooltip при hover. Категоріяeroticпозначається вогником. - Якщо активний media type дозволяє видалення, користувач може вибрати одне або кілька медіа та видалити їх після підтвердження. Кнопка bulk-delete розташована праворуч у footer медіагалереї та показує spinner на весь цикл delete + reload. Після хоча б одного успішного видалення frontend перезапитує поточний dataset з
cursor: null, щоб отримати актуальний список і новий cursor, але старі картки залишаються видимими до атомарної заміни відповіді; часткові помилки відображаються у глобальному повідомленні. - Якщо активний media type дозволяє завантаження, дія
Add newу footer відкриває multiple file picker для поточного типу медіа. ЯкщоgetAllowsповертає доступні upload-категорії, біля кнопки показується selector лише з повернутими категоріями; початково вибрана перша з них.Defaultпоказується тільки за наявності у відповіді та означає upload без поляcategory. Якщо список категорій порожній, selector прихований і полеcategoryне надсилається. Кожен файл завантажується окремим multipart-запитом; зміна TU або фільтра скасовує активне завантаження, а після успіху поточний dataset перезапитується з першої сторінки та отримує новий cursor. Під час цього reload поточні картки не очищаються: upload-loader залишається активним, доки новий список не замінить старий. Часткові помилки відображаються у звіті та глобальному повідомленні. - Зміна категорії вже існуючого медіа та модерація на цьому етапі не підключені.
Доступи та маршрути
| Роль | Доступ | Маршрут |
|---|---|---|
topManager | призначені Family | /top_manager/{family-route}/tu_media_gallery |
supervisor | призначені Family | /teamlead/{family-route}/tu_media_gallery |
operator | власна Family | /operator/tu_media_gallery |
client_manager | призначені Family | /client_manager/{family-route}/tu_media_gallery |
director, hr_manager, recruiter і technical_department не мають доступу. {family-route} дорівнює udate, talkytimes, golden або chathouse; talkytimes відповідає Family prime.
Зв’язки
- getAllows у test Swagger — дозволи й налаштування галереї для вибраної Family.
- getMediaList у test Swagger — медіа вибраної TU за активними фільтрами.
- createMedia у test Swagger — завантаження одного media file multipart-запитом; frontend повторює запит для кожного вибраного файлу.
- deleteMedia у test Swagger — видалення одного медіа; frontend виконує bulk-delete як серію запитів з обмеженою паралельністю.
- swagger — реєстр Swagger UI бек-сервісів.