1.4 Управление сотрудниками

Эта BR разблокирует ADR-001 и ADR-004

Без таблицы сотрудников невозможно реализовать Auth Service (логин по email+пароль). Сейчас каждый сервис валидирует JWT локально — это временное решение (ADR-001). Эта BR даёт данные для полноценной авторизации.

Что нужно

Владелец франшизы и франчайзи должны иметь возможность управлять своими сотрудниками: создавать, редактировать, деактивировать. Каждый сотрудник имеет роль, которая определяет его доступ ко всей системе.

Кто такой сотрудник

Сотрудник — это человек, который работает в системе. У него есть:

  • ФИО — имя и фамилия
  • Телефон — контактный номер
  • Email — используется для входа в админку (бэк-офис)
  • Пароль — для входа в админку
  • PIN-код — 4 цифры, для входа на POS-кассу (у кассиров и менеджеров)
  • Роль — одна из четырёх (см. ниже)
  • Привязка к торговым точкам — к каким ТТ сотрудник имеет доступ
  • Статус — Активен или Деактивирован (уволен)
  • Флаг “Курьер” — может ли доставлять заказы (для собственной доставки)

Четыре роли

Франшиза (владелец бренда)

Полный доступ ко всей системе. Видит все ТТ, всех сотрудников, все данные. Может создавать сотрудников с любой ролью.

Франчайзи (партнёр)

Доступ только к своим ТТ и своим сотрудникам. Может создавать менеджеров и кассиров для своих точек. Не может создавать других франчайзи или сотрудников с ролью “Франшиза”.

Менеджер ТТ

Управление конкретной торговой точкой. Привязан к одной ТТ. Видит сотрудников только своей точки. Не может создавать или редактировать сотрудников.

Кассир

Работает на POS-терминале. Входит по PIN-коду. В админку не заходит. Не видит раздел “Сотрудники”.

Кто что может делать с сотрудниками

Франшиза

  • Просматривать список всех сотрудников всех ТТ
  • Создавать сотрудников с любой ролью (франшиза, франчайзи, менеджер, кассир)
  • Редактировать любого сотрудника
  • Деактивировать любого сотрудника (увольнение)
  • Привязывать сотрудника к любой ТТ и любому ЮЛ

Франчайзи

  • Просматривать список сотрудников только своих ТТ
  • Создавать только менеджеров и кассиров в своих ТТ
  • Редактировать только своих сотрудников
  • Деактивировать только своих сотрудников
  • Назначать курьеров из своих сотрудников

Менеджер ТТ

  • Просматривать список сотрудников своей ТТ (только просмотр)

Кассир

  • Нет доступа к разделу “Сотрудники”

Создание сотрудника

При создании указываются:

  • Обязательно: имя, фамилия, email, пароль, роль
  • Не обязательно (можно потом): телефон, PIN-код, флаг “Курьер”
  • Привязка к ТТ: обязательна для менеджера (одна ТТ) и кассира (одна или несколько). Для франчайзи — автоматически все его ТТ. Для франшизы — не нужна (видит всё).

Ограничения при создании

  • Email должен быть уникальным (нельзя два сотрудника с одним email)
  • PIN-код — 4 цифры, уникален в рамках торговой точки (два сотрудника на одной ТТ не могут иметь одинаковый PIN)
  • Франчайзи не может создать сотрудника с ролью “Франшиза” или “Франчайзи” — только менеджера и кассира
  • Роль “Франчайзи” назначает только франшиза

Редактирование сотрудника

Можно менять: ФИО, телефон, email, пароль, PIN-код, привязку к ТТ, флаг “Курьер”.

Нельзя менять: роль (если нужна другая роль — деактивировать и создать нового).

Деактивация (увольнение)

  • Сотрудник не удаляется из системы, а переводится в статус “Деактивирован”
  • Деактивированный сотрудник не может войти ни в админку, ни на POS
  • Все его активные сессии завершаются
  • В списке сотрудников отображается с пометкой “Деактивирован” (серый)
  • Можно реактивировать (вернуть в работу)

Список сотрудников

Колонки:

  • ФИО
  • Email
  • Телефон
  • Роль
  • Торговые точки (перечисление)
  • Статус (Активен / Деактивирован)
  • Курьер (да/нет)

Фильтры:

  • По роли
  • По ТТ
  • По статусу

Поиск:

  • По ФИО, email, телефону

Безопасность

  • Пароль хранится в защищённом виде (не открытым текстом)
  • PIN-код тоже хранится в защищённом виде
  • При деактивации — все сессии сотрудника мгновенно завершаются

Связи с другими модулями

  • Авторизация (BR 1.3) — email и пароль сотрудника используются для входа в админку
  • POS-авторизация — PIN-код сотрудника используется для входа на кассу (будущая BR)
  • Торговые точки — сотрудник привязан к ТТ (ЮЛ определяется через ТТ)

Связь с архитектурными решениями

ADR-001, ADR-004

Реализация этой BR разблокирует Auth Service: появится таблица сотрудников с email и паролем → Auth Service сможет валидировать credentials → можно будет пересмотреть ADR-001 (локальный JWT-фильтр vs централизованная валидация).