lady

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)