Модуль: Компания ТЗ

При регистрации создаётся компания(БД Account) , создаётся 1й(главный) отдел(БД Department) с названием компании(у этого отдела будет в бд флаг “is_head=true”). Пользователь создавший компанию в crm записывается в этот отдел.

Важно! Пользователь не может быть без отдела, по умолчанию он записывается в первый(главный отдел)

Вопросы:
+ Где будет меню, слева – вертикально или сверху – горизонтально под Топ-модулем? – В Топ модуле меню навигации, доп элементы в Tools-Bar
+ Сколько может быть руководителей у отдела? – Один
– Как изменить привязку пользователя к другому отделу? У битрикса это делается в карточке профиля. Могу ли я как админ изменить привязку сотрудника .
+ При удалении отдела если там есть пользователи, какая будет логика? куда их девать? – Нельзя удалить отдел пока в нём есть пользователи

Страницы/Разделы модуля:
– Структура компании
– Сотрудники
– Карточка сотрудника(всплывашка у битрикс и амо) или страница с элементами управления для Админа, например сменить отдел, роль, должность, что-то ещё.
– Окно Добавления нового сотрудника
– Страница с настройкой прав доступа, ролей (менеджер ролей)

Структура компании. Страница

Маршрут

/company/structure

! Компания не является отделом и имеют разные БД. Первый отдел создаётся автоматически при создании системы с названием фирмы и может редактироваться.

Сделали 3х уровневую структуру компании:
Отдел(главный) с названием фирмы -> Отдел -> Подотдел
Логика, если у отдела есть РОДИТЕЛЬ и отдел не является “is_head”, то к нему нельзя добавить ДОЧЕРНИЙ отдел.
!Фирма, не является отделом.

Таблица БД

  • id
  • name(название отдела)
  • parent_departament_id (родительский отдел, указываем ключ отдела)
  • (FK) director (руководитель отдела, может быть пуcтым)(1 ко М)
  • (FK) managers (сотрудник отдела, может быть пустым)(М ко М)
  • is_head (boolean по умолчанию False)

Вопросы:

Может ли юзер остаться без отдела?
Если юзер привязан к отделу, то он всё равно привязан и к фирме?

UX/UI

Tools-Bar, где поиск и зум, будет относится к топ модулю

Дизайн окна добавления отдела

Кнопки пригласить сотрудника и добавить отдел, каждая на своей странице.

Окно – Добавить отдел

Поля:

  • Название отдела (input)
  • Вышестоящий отдел (select)
  • Выбрать руководителя. Нажимаешь -> выпадающий список с поиском и списком пользователей(всех), пока что без разбиения по отделам
  • Выбрать (Добавить) Сотрудников. – > Нажимаешь -> выпадающий список с поиском и списком пользователей(всех), пока что без разбиения по отделам

Названия окна при создании отдела – “Добавить отдел” , при редактировании – “Редактировать отдел”

Обработка событий

Удаление отдела в карточке:
– Обработчик если есть пользователи. Если в отделе находятся сотрудники, то его нельзя удалить.
Сообщение: Удаление не возможно! В данном отделе находятся сотрудники, удалите их или переместите в другой отдел, после этого повторите операцию. Кнопка – закрыть.
– Обработчик если нет пользователей. Вы уверены что хотите удалить отдел ? Кнопка – Удалить / Отмена
– проверка на подотделы
Удаление невозможно. Отдел имеет подотделы, переместите или удалите их и повторите операцию снова.

В окне – Добавить отдел, кнопка “Добавить”
Состояние: всегда активна.
Обработка на добавление отдела происходит по полю “Название”, если поле пустое, то под ним выскакивает сообщение: Введите название отдела.

В окне – Редактировать отдел, кнопка “Сохранить”
Состояние: всегда активна.
1. Обработка на редактирование отдела происходит по полю “Название”, если поле пустое, то под ним выскакивает сообщение: Введите название отдела.
2. Обработка на то, если у отдела второго уровня, есть подотделы и его хотят сделать отделом 3го уровня. Происходит проверка отдела на наличие у него подотделов, если подотделов нет, то переносит его в 3й уровень, если подотделы есть, то не переносит, появляется сообщение: Чтобы перенести отдел на уровень ниже, у него не должно быть подотделов.

Кнопка “Закрыть” – Х
Закрывает окно в любом случае, без обработке введены данные или нет.

На карандаш. То, что можно улучшить или добавить в дальнейшем. По структуре компании. Отделы

  1. Привязать Сотрудников и Руководителей к отделу(обработка всех процессов)

Сотрудники. Страница

Содержимое страницы

  1. Топ-модуль с необходимыми элементами управления
  2. Tools-Bar – поиском
  3. Список сотрудников в формате таблицы в body. Значения выводим из БД. Поля:
    – Иконка управления/Чекбокс. Подумать какие функции можно прикрутить
    – Имя
    – Роль, если админ
    – Онлайн/Офлайн(В сети/Не всети). Нужно ли?

    – Email
    – Телефон
    – Должность
    – Отдел
  4. ???

Информация:

Один отдел может иметь одного руководителя, Но один пользователь может быть руководителем нескольких отделов.
Сотрудник может относиться ко многим отделам.

Вопросы:

Будут ли ещё какие-то поля по умолчанию?
Можно-ли и нужно-ли делать возможность изменять структуру шаблона, то есть выводить или удалять какие-либо ещё поля?
Чтобы открыть карточку юзера, кликаем на всю строку, имя или ещё куда-то?
Можно ли будет редактировать (админу) какие-либо из данных юзера прямо в таблице или только в карточке?
Может ли 1н сотрудник принадлежать к 2м отделам?

Возможности функциональные

  1. Вызов окна “Добавления сотрудника” по кнопке “Пригласить сотрудника”(кнопка будет в Топ-модуле)
  2. Вызов окна “Карточка сотрудника” при нажатии на сотрудника из таблицы
  3. Удаление/Увольнение например???
  4. Ставить задачи или что-то ещё??
  5. ???

Добавить сотрудника. Окно

Схема добавления сотрудника

Содержимое окна

Вид реализации: Всплывающее окно справа.
Поля:

  • Имя. Ограничение по символам – 50. В это поле можно будет вводить ФИО полностью. Поле не обязательное. Если имя пустое, то в БД записывается email
  • Email. * . Валидация как email.
  • Выбор отдела. По умолчанию ГЛАВНЫЙ. Список SELECT
  • Роль (Права доступа). Пока 2а варианта – Менеджер/Админ. По умолчанию – Менеджер. Список SELECT
    – Администратор, который имеет все права
    – Пользователь (Менеджер), который имеет меньше прав
  • Кнопка “Пригласить”

Обработчики:
– Если пользователь уже привязан к твоей компании и ты его пытаешься добавить снова, то появляется сообщение по строкой email: Такой пользователь уже добавлен.
– При вводе email, происходит поиск в бд на совпадение:

  1. если нет совпадения то поля остаются в доступе и система регистрирует пользователя
  2. если есть совпадение, то есть пользователь уже зареган в системе, то блокирует input-имя

Отправка в/по БД (под капотом)

– Если пользователя нет, создаётся(регистрируется) в общей системе пользователь с данными EMAIL и ИМЯ из формы, и автоматической генерацией пароля и связывается с аккаунтом регистрирующей компании
– Если пользователь есть, то мы его просто связываем с аккаунтом регистрирующей компании
– Привязка к отделу. В таблицу departments поле managers.
– Привязка к роли. В таблицу role_permissions поле users.

Описание схемы, как это будет происходить
Вариант 1 – отправка приглашения пользователю на email
2. Форма:
1. Имя. Ограничение по символам – 50. В это поле можно будет вводить ФИО полностью.
2. Email. Валидация как email.
Уточнить у Вано, как работает функционал один email на несколько аккаунтов, так как у амо, когда вводишь email идёт проверка и если этот email есть в бд, то подставляет его данные(имя, email, пароль) в форму. Таким образом создаёт ещё акк на тот же email.
3. Пароль. Нужен ли? Задавать вручную, как у амо или нет, как у битрикс? С одной стороны задавать пароль вручную имеет смысл, так как можно ошибиться email и доступ может получить незнакомец. С другой стороны, регистрирующему нужно заморачиваться и придумывать пароль. Я склоняюсь к регистрации без указания пароля, пароль высылает система, но есть момент небезопасности, в таком случае, !!проверить, проходит ли ещё пользователь, какое либо подтверждение после первого входа в кабинет.
4. Отдел. Выбор из выпадающего списка
5. Должность. Нужна ли? Если да то писать вручную или уже админ будет составлять списки.
6. Роль. Выбор роли чекбоксом или выпадающим списком. Точно будет 2е роли:
– Администратор, который имеет все права
– Пользователь (Менеджер), который имеет меньше прав

Просмотр/Редактирование сотрудника. Окно

Вид реализации: Всплывающее окно справа.
Поля:

  • uid
  • Аватар
  • Имя (не ред. админом)
  • Email (Не ред.)
  • Телефон (не ред)
  • Роль
  • Должность
  • Отдел
  • К

Письмо на почту

Составить шаблон
Пример письма Амо

Пример письма Битрикс

Увольнение/Удаление сотрудника

Две кнопки:

  1. Увольнение
  2. Удаление

-подсказка в виде знака вопроса, при наведении в окошке инфо по тому или иному действию.

На карандаш. То, что можно улучшить или добавить в дальнейшем. По структуре компании. Сотрудники

  • Оповещение сотрудника, письмом на почту об увольнении или удалении из системы
  • При увольнении сотрудника, указывать причину увольнения

Вопросы:

Что будет приходить приглашённому пользователю на почту. Структура письма. Как будет происходить его авторизация. Понимание и схема всего процесса. ?

Схемы

Иерархия связей в компании

БД

Таблица – Компания. Структура

  • id
  • name (содержит поддомен, может меняться)
  • company_name (имя компании, текст, может меняться, по умолчанию значение из “name”)
  • owner (связь с пользователем который создал компанию изначально, но потом может поменяться на приемника и дуругой может стать главным)
  • datetime_created (дата создания)

Права пользователей по роли

Админ – имеет доступ ко всему функционалу

Менеджер(пользователь) вообще ни когда не имеет доступа к пункту “Настройки” системы, пункты:

  • Общие настройки
  • Счёт и оплата
  • Пользователи
  • Чаты и мессенджеры

Не имеет возможности добавлять/редактировать воронки, списки и другие организации управления системой.

БД роли

Название – role_permissions

  • id
  • name (название роли)
  • (FK) users (пользователь который привязан к роли)(1 ко М)
  • (FK) account (к какому аккаунту относятся роль)(1 к 1)
  • (FK) permissions (права, которые принадлежат к роли)(1 ко ?)

БД прав

Название – permissions

  • id
  • is_company (boolean) (по умолчанию false)
  • (FK) role (связь с ролью)

БД должность/статус(уволен, действующий)

Название – employee attributes

  • id
  • access_to_company (booolean, по умолчанию true). (уволен или действующий. имеет ли доступ во вход компании)
  • post_in_company (строка, по умолчанию пустая и может быть пустой всегда). Записывается должность сотрудника(просто любая без правил на бум)
  • (FK) user (пользователь который привязан к роли)(1 ко 1)
  • (FK) account (к какому аккаунту относятся роль)(1 к 1)