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, телефону
Безопасность
- Пароль хранится в защищённом виде (не открытым текстом)
- PIN-код тоже хранится в защищённом виде
- При деактивации — все сессии сотрудника мгновенно завершаются
Связи с другими модулями
- Авторизация (BR 1.3) — email и пароль сотрудника используются для входа в админку
- POS-авторизация — PIN-код сотрудника используется для входа на кассу (будущая BR)
- Торговые точки — сотрудник привязан к ТТ (ЮЛ определяется через ТТ)
Связь с архитектурными решениями
ADR-001, ADR-004
Реализация этой BR разблокирует Auth Service: появится таблица сотрудников с email и паролем → Auth Service сможет валидировать credentials → можно будет пересмотреть ADR-001 (локальный JWT-фильтр vs централизованная валидация).