operator-login

Логін оператора

Вхід оператора: перевірки допуску → конект нашого сокета → приходить список анкет (TU). Це не лише автентифікація — на вході кладемо в пам’ять і на диск дані, з якими працює вся сесія (профіль, ключ перекладача, версія). Поки перевірки не пройдені — до логіну ТЮ не пускає. Однаково для всіх проектів (логін у наш сервер, нічого проектного).

Логіка

  1. Креденшели → автентифікація (JWT).
  2. Перевірка версії — застаріла версія не заходить; зміна версії або зміна оператора чистить локальну базу (див. нижче).
  3. Перевірка часу сервера — дрейф від 20 с показує попередження, від 50 с закриває програму.
  4. Конект нашого сокета → подія connectionResult приносить список анкет (TU) зі статусами.
  5. Перевірки пройдені → оператор може логінити ТЮ (Логін ТЮ). У роботу йдуть лише анкети AVAILABLE.

Stack API

ОпераціяЧастота
Логін оператора1 / логін
Перевірка версії1 / логін, далі 1 / 15 хв
Час сервера1 / запуск програми
Сесія оператора1 постійний socket + reconnect

Дані / стан

Найважливіше, що тримаємо (як у коді)

  • Профіль оператора{ id, ім'я, family, supervisor }
  • Перекладач (DeepL){ ключ, мова }
ДаніДеОновлення
JWT токенпам’ять + рендерна логіні; далі в кожен запит (Bearer) і в хендшейк сокета
Профіль оператора (id, ім’я, family, supervisor)пам’ятьна логіні
Ключ перекладача (DeepL) + мовапам’ять → сервіс перекладуз логін-відповіді; ключ порожній, якщо не підтверджений; мова за замовч. UK
Креденшели (email + пароль)диск, зашифрованона логіні, для префілу форми входу
Версія програмилокальна база (SQLite)на логіні; зміна версії → дроп/реініт таблиць; зміна оператора → чистка всіх даних
Стан сокета (реконект, sleepMode)пам’ятьпід час сесії
Список анкет (TU) + статусирендер + runnerconnectionResult; реконект діфить; наживо setLady / dropLady

Не тримаємо: зсув часу (лише звіряємо на старті), refresh-токен (тільки в рендері), роль/картку оператора.

Статуси анкет (TU)

Приходять у списку на конекті сокета; визначають, кого запускати:

  • AVAILABLE — доступна; лише такі йдуть у роботу.
  • OCCUPIED — зайнята (за іншим оператором).
  • WILL_BE_AVAILABLE — скоро звільниться (визначено, але фактично не проставляється — під питанням, чи лишаємо).

Оновлення: на реконекті — діф набору AVAILABLE (DROP/SET); наживо — команди setLady / dropLady. Рендер тримає ще окремі прапорці isOnline / isReady — це не статус із сервера.

Зв’язки

  • Далі: Логін ТЮ — логін кожної анкети на сайт.
  • Наш сокет — канал списку анкет і координації сесії.