Техническое задание - webkoth/style-guide-php-laravel GitHub Wiki

Цели разработки

Разрабатываемая CRM система предназначена для учета клиентов, сделок и продаж компании с целью обеспечить структурированное хранение данных и дальнейший их анализ для выявления слабых и сильных сторон ведения бизнеса компании, оценки эффективности сотрудников, финансовых потоков от тех или иных клиентов компании.

Система должна поддерживать модульность, что позволяло бы в дальнейшем сторонним разработчикам создавать свои компоненты, расширяющие возможности системы.

В разрабатываемой CRM системе сущность "Клиент" (контрагент) должна рассматриваться как ключевая, так как взаимодействие между заказчиком и исполнителем является центральным действием, благодаря которому поставляются услуги и товары, совершаются сделки, заключаются контракты и так далее. Клиент (контрагент-заказчик) — конечный потребитель товаров или услуг, поставляемых исполнителем (контрегентом-исполнителем) и от того, насколько конечный потребитель удовлетворен, зависит успешность бизнеса, для которого используется разрабатываемая CRM система.

Функциональные требования

Ключевые сущности системы

● Контрагент

Контрагент — это компания или физлицо, которое выступает в качестве заказчика или исполнителя.

● Лид

Лид — лицо-представитель контрагента в качестве потенциального заказчика: лицо, проявившее интерес, но еще не заключившее контракт с исполнителем.

● Холдинг или группа компаний

Холдинг или группа компаний — объединение или группировка контрагентов

● Пользователь

Пользователь — конкретная учетная запись со своими реквизитами входа в систему.

● Право/разрешение

Право или разрешение — это отдельная запись, которая обозначает возможность выполнения того или иного действия в системе.

● Роль

Роль — это именованный набор прав или разрешений, которыми наделяются пользователи, принадлежащие к этой роли.

● Контракт

Контракт — это документ, в рамках которого объединяются отдельные сделки между исполнителем и заказчиком (контрагентами). В рамках одного контракта может быть совершена одна или более сделок (поставки продукции, оказания услуг и т.д.)

● Сделка

Сделка — поставка товаров или оказание услуги в рамках конкретного контракта, заключенного между заказчиком и исполнителем (между клиентом и компанией владельца соответстено).

● Статус сделки

Статус сделки — стадия, через которую может проходить сделка в течение своего жизненного цикла

Какие действия могут совершаться в системе

Пользователи системы могут наделяться определенным набором прав, позволяющим осуществлять следующие действия:

  • Аутентификация (вход в личный кабинет)
  • Просмотр компаний и сделок
  • Редактирование, создание и удаление компаний (внутри одной группы компаний или холдинга)
  • Редактирование, создание и удаление клиентов
  • Редактирование, создание и удаление сделок
  • Редактирование, создание и удаление статусов сделок
  • Редактирование, создание и удаление сотрудников
  • Привязывать сотрудников к тем или иным компаниям и сделкам
  • Настраивать систему (изменять отдельные настройки)

Функциональные блоки

● Аутентификация и регистрация

К данному функциональному блоку относятся все процедуры и модули, отвечающие за регистраци и вход пользователя в личный кабинет системы

● Авторизация

Модули системы, отвечающие за проверку и раздачу прав пользователям

● Редактирование контрагентов

Модули системы, относящиеся к редактированию групп компаний и контрагентов.

● Редактирование пользователей (сотрудники и клиенты)

Модули системы, относящиеся к редактированию учетных записей пользователей, относящихся как к контрагентам-заказчикам, так и к исполнителям

● Контракты

Модули системы, относящиеся к редактированию контрактов

● Сделки и статусы

Модули системы, относящиеся к редактированию сделок, статусов и механизмам проверки логики статусов и их взаимных переходов.

● Настройки системы

Общие настройки системы

● Уведомления

Модули системы, отвечающие за уведомления пользователей различными способами о событиях, происходящих в системе

● Кастомизация сущностей

Модули системы, отвечающие за возможность расширения стандартного набора полей отдельных сущностей системы (сделок, контрактов, пользователей, контрагентов)

Типы пользователей

Типы пользователей — это набор стартовых ролей в системе, необходимых для начального функционирования. В системе данные роли должны быть неудаляемыми.

● Гость (анонимный пользователь)

Гость не имеет права входа в личный кабинет и пользования всеми возможностями и интерфейсами, отображаемыми в защищенном разделе сайта.

● Системный администратор (пользователь с неограниченными правами)

  • Может входить в личный кабинет при помощи своей учетной записи
  • Имеет неограниченный набор прав и может пользоваться всеми доступными функциями системы.

● Сотрудник компании владельца

  • Может входить в личный кабинет при помощи своей учетной записи
  • Может наделяться определенным набором прав для управления (создания/редактирования/удаления) отдельными сущностями системы.

● Сотрудник клиента

  • Может входить в личный кабинет при помощи своей учетной записи
  • Имеет ограниченный набор прав на просмотр сделок, в которых он непосредственно задействован

Доступные интерфейсы системы

● Фронт часть — короткая презентационная страница

Общая информационная страница с описанием ключевых возможностей системы, о способе приобретения, установке и разработчиках продукта

● Страница входа

Страница ввода логина и пароля для входа в защищенную часть сайта (личный кабинет)

Элементы страницы:

  • Форма ввода логина/пароля

● Страница регистрации

Данная страница позволяет пользователю самостоятельно создать учетную запись с минимальным набором прав и отсутствием привязок к каким-либо компаниям. В последующем администратор системы может добавить права к этой учетной записи и привязать пользователя к той или иной компании.

Элементы страницы:

  • поле ввода E-mail
  • поля ввода ФИО
  • поле ввода телефона
  • кнопка регистрации

● Личный кабинет (защищенная часть сайта)

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

● Панель управления (Dashboard)

Данный интерфейс подразумевает центральный интерфейс для пользователя в авторизованном состоянии и предполагает наличие визуальных карточек для перехода к прочим внутренним интерфейсам системы

Элементы и блоки:

Центральная панель с карточками (виджетами) для отображения ключевой информации и возможностью с помощью них перехода в прочие внутренние интерфейсы системы

● Профиль текущего пользователя

Страница с информацией текущего аутентифицированного пользователя.

Элементы и блоки:

  • Фото профиля
  • Имя
  • Фамилия
  • Отчество
  • Компании, к которым привязан пользователь
  • Должности (в разных компаниях)
  • E-mail
  • Телефон
  • Пароль (поле только для создания нового пароля)
  • Мои сделки (блок или ссылка на раздел со сделками пользователя)
  • Мои клиенты
  • Кастомные поля, добавленные через интерфейс кастомизации карточки пользователя (см. ниже)

● Пользователи (сотрудники контрагентов)

Данный интерфейс предназначен для просмотра всех учетных записей системы и карточек пользователей, их принадлежности к тем или иным компаниям, а также к тем или иным сделкам.

Данный интерфейс должен предоставлять следующие возможности:

  1. Добавление пользователя
  2. Редактирование пользователя
  3. Карточка пользователя (просмотр)

Элементы и блоки:

  • Таблица со списком пользователей с возможностью кастомизации набора столбцов для отображения
  • Фильтр по компаниям
  • Фильтр заказчики/исполнители
  • Фильтр по ФИО
  • Кнопка/окно добавления нового пользователя
  • Кнопка удаления пользователя
  • Кнопка изменения пользователя
  • Постраничная навигация
  • Окно просмотра подробной информации одного пользователя (карточка пользователя)

● Карточка пользователя

Элементы и блоки:

  • Фото профиля
  • Имя
  • Фамилия
  • Отчество
  • Компании, к которым привязан пользователь
  • Должности (в разных компаниях)
  • E-mail
  • Телефон
  • Сделки пользователя (блок или ссылка на раздел со сделками пользователя)
  • Клиенты (только для сотрудников контрагентов-исполнителей)
  • Блок или отдельный интерфейс для кастомизации набора полей сущности "Пользователь"

● Группы компаний

Данный интерфейс предоставляет следующие возможности:

  1. Добавление группы компаний
  2. Редактирование группы компаний
  3. Карточка группы компаний
    1. Название
    2. Входящие компании

Элементы и блоки:

  • Таблица со списком всех доступных групп компаний
  • Кнопка для добавления новой группы (всплывающее окно или отдельная страница)
  • Кнопка удаления группы компаний
  • Кнопка редактирования группы компаний во всплывающем окне или на новой странице
  • Окно просмотра карточки группы компаний
  • Постраничная навигация

● Карточка группы компаний

Элементы и блоки:

  • Название группы компаний
  • Список входящих компаний
  • Кнопка добавления компании в группу (вызывает всплывающее окно с выбором компании из списка доступных)
  • Кнопка удаления компании из группы

● Контрагенты (исполнители и заказчики)

Данный интерфейс предоставляет следующие возможности:

  1. Добавление контрагента
  2. Редактирование контрагента
  3. Карточка контрагента
    1. Сотрудники
    2. Клиенты (только для исполнителей)

Элементы и блоки:

  • Таблица со списком всех контрагентов с возможностью кастомизации набора столбцов для отображения
  • Фильтр по названию
  • Фильтр заказчики/исполнители (мои компании или клиенты)
  • Статус сделок (контрагенты, у которых есть сделки в выбранном статусе)
  • Кнопка для добавления нового контрагента (всплывающее окно или отдельная страница)
  • Кнопка удаления контрагента
  • Кнопка редактирования контрагента во всплывающем окне или на новой странице
  • Окно просмотра подробной информации о контрагенте
  • Постраничная навигация

● Карточка контрагента

Элементы и блоки:

  • Тип контрагента (компания или частное лицо)
  • Исполнитель/заказчик
  • Название или ФИО
  • E-mail
  • Телефон
  • Веб-сайт
  • Принадлежность к группе компаний/холдингу
  • Блок сотрудников компании
  • Сделки
  • Связанные контрагенты (заказчики для исполнителя и исполнители для заказчика)
  • Контракты, в которых участвует контрагент
  • Блок или отдельный интерфейс для кастомизации набора полей сущности "Контрагент"

● Контракты

Доступные действия:

  1. Добавление
  2. Редактирование
  3. Карточка контракта (просмотр деталей)

Элементы и блоки:

  • Таблица со списком контрактов с возможностью кастомизации столбцов для отображения
  • Фильтр по заказчику/исполнителю
  • Фильтр по дате
  • Кнопка добавления контракта
  • Кнопка удаления контракта
  • Кнопка редактирования контракта
  • Постраничная навигация
  • Окно просмотра карточки отдельного контракта

● Карточка контракта

Элементы и блоки:

  • Дата контракта
  • Контрагент заказчик
  • Контрагент исполнитель
  • Комментарии к контракту (условия оплаты и прочие комментарии)
  • Создатель контракта (пользователь)
  • Сделки внутри контракта
  • Блок или отдельный интерфейс для кастомизации набора полей сущности "Контракт"

● Сделки

  1. Добавление
  2. Редактирование
  3. Карточка сделки (просмотр деталей)

Элементы и блоки:

  • Таблица со списком сделок с возможностью кастомизации столбцов для отображения
  • Фильтр по заказчику/исполнителю
  • Фильтр по статусу сделки
  • Фильтр по дате
  • Кнопка добавления сделки
  • Кнопка удаления сделки
  • Изменение статуса отдельной сделки
  • Кнопка редактирования сделки
  • Постраничная навигация
  • Окно просмотра карточки отдельной сделки

● Карточка сделки

Элементы и блоки:

  • Дата формирования сделки
  • Предполагаемая дата завершения сделки
  • Статус сделки
  • Контрагент заказчик
  • Контракт сделки
  • Контрагент исполнитель
  • Комментарии к сделке (условия оплаты и прочие комментарии)
  • Создатель сделки (пользователь)
  • Ответственное лицо (пользователь)
  • Сумма сделки + валюта сделки
  • История сделки (даты и лица, осуществлявшие переход сделки от статуса к статусу)
  • Блок или отдельный интерфейс для кастомизации набора полей сущности "Сделка"

● Настройки

Элементы и блоки:

  • Таблица со списком всех настроек, доступных для редактирования

● Настройка статусов сделок

Элементы и блоки:

  • Список доступных статусов сделок
  • Кнопка добавления нового статуса сделки

● Настройка кастомизируемых сущностей

Элементы и блоки:

  • Выбор сущности из фиксированного набора
  • Список для добавления и редактирования пользовательских полей сущности
  • Элементы управления для добавления/удаления/редактирования поля
  • Всплывающее окно с настройками одного поля (при создани или редактировании)

● Настройка прав и ролей

Элементы и блоки:

  • Список доступных ролей
  • Элементы управления для добавления/удаления/редактирования роли
  • Всплывающее окно или отдельный интерфейс для редактирования роли и ее прав

● Карточка настройка роли

Элементы и блоки:

  • Список всех доступных прав в системе с возможностью выставить необходимые для роли права

Требования к документации

Необходимо снабдить подробной документацией процесс создания сторонних дополнений к системе.

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

Стадии и этапы разработки

Разработка технического задания

Разработка диаграммы интерфейсов

Разработка прототипов интерфейсов

Разработка дизайн-системы и сборка визуальных макетов интефрейсов

Верстка интефрейсов и frontend-разработка

Программирование серверной логики (backend-разработка)