LadyService
src/golden/lady/LadyService.ts · LadyController.ts
Логіка запитів, що віддають і переназначають TU (анкети) для екрана Ladies. Перелік ендпоінтів — у Swagger.
Сховище
TU лежать у golden_lady. Запис тримає тільки familyId-и звʼязків: supervisors[] (до 3 тімлідів), operators[] (оператор на позиції відповідного тімліда), clientManager. Імена цих людей у golden не зберігаються — підтягуються зі stack по RMQ при кожній віддачі. Клієнтський email TU — теж зі stack.
Запити, що віддають TU
Список анкет за роллю
getAll · getAllLadies
Вибірка TU зі скоупу ролі ініціатора:
- director — усі TU Family.
- client_manager — закріплені за ним плюс «нічийні» TU (без CM) його адмін-панелей.
- top-manager — TU тімлідів зі свого списку (список своїх тімлідів питає у
stack). - supervisor — TU свого тімліда.
- operator — лише свої TU.
Далі кожну TU збагачуємо: імена тімлідів/операторів/CM беруться зі stack по familyId; звідти ж — статус клієнтського email і кому він відкритий. Кожна TU розкладається у слоти «тімлід + оператор»: supervisor бачить лише свій слот, інші ролі — усі (до 3); на кожному слоті проставляється, чи виданий доступ до email.
Анкети по операторах команди
getLadiesGroupedByOperators · supervisor / operator
- supervisor — TU команди, згруповані по операторах, плюс група «Free Profiles» (TU, де на місці його слоту оператор не призначений).
- operator — лише свої TU, одна група (він сам).
Біля кожного оператора — прапор, чи він зараз онлайн. Вкладені TU подаються коротко (id, вік, аватар, ім’я).
Анкети по тімлідах і операторах
getLadiesGroupedByOperatorsAndSupervisors · top-manager
По кожному тімліду топа: його TU → групування по операторах + «Free Profiles». Видалені тімліди пропускаються.
Переназначення і дії над TU
Закріпити або зняти тімліда
setSupervisor · updateSupervisorInLady
Bulk по списку TU. Спершу гарди: усі TU існують і належать одному адміну. Далі по кожній TU і кожному з 3 слотів тімліда:
- порівнює, що переданий «поточний» тімлід справді стоїть на слоті (якщо ні — конфлікт, дані застаріли);
- CM не може призначити тімліда на TU без CM;
- зняття поточного тімліда зі слоту автоматично знімає й оператора цього слоту (з логуванням переходу);
- призначення кандидата перевіряє, що тімлід привʼязаний до того ж адміна, що й TU.
Кожна TU у відповіді — окремий success/error: часткові збої не валять усю операцію.
Закріпити або зняти оператора
setOperator · updateOperatorInLady
Bulk у межах одного тімліда. По кожній TU:
- порівнює поточного оператора слоту (якщо ні — конфлікт);
- кандидат-оператор має належати тому ж тімліду і мати заповнений нікнейм (інакше відмова);
- при призначенні TU наживо проштовхується в Electron цього оператора — зʼявляється у його клієнті без перезаходу;
- зняття/призначення логуються як переходи TU.
Відповідь — per-TU success/error.
Оновити дані анкет з api
updateDataLadies · кнопка Refresh
Тягне актуальні дані анкет з адмінки партнерського сайту і зберігає в golden_lady (оновлює зокрема паролі). Працює по всіх анкетах або по одній.
Скинути пароль
changePassword
Генерує і зберігає нові паролі вибраним TU (bulk).
Перемикач find-new
changeSenderType · тумблер FN
Ставить прапор findNew — чи робити sender по нових RU онлайн для цієї TU.
Нюанси
- До 3 тімлідів на TU.
operators[]паралельнийsupervisors[]— оператор стоїть на позиції свого тімліда. «Free Profiles» = слот тімліда без оператора. - Зняття тімліда каскадно знімає оператора того ж слоту.
- Призначення оператора штовхає TU в його Electron наживо — анкета зʼявляється в клієнті оператора одразу.
- Bulk-операції повертають результат по кожній TU окремо — часткові помилки не зривають решту.
Зв’язки
- ladies — UI-екран Ladies (per-family)