### 1.7. Предлагаемый срок исполнения работ по заявке
...
## 2. Цели и обоснование необходимости реализации
### 2.1. Цель создания подсистемы:
Модернизация СЗЗ "ВЕХНО" с целью реализация функционала отправки сообщений между пользователями.
### 2.2. Описание проблемы, решение которой требуется разработать
Необходимо обеспечить возможность обмениваться сообщениями между пользователями в рамках информационной СЗЗ "ВЕХНО".
### 2.3. Описание ожидаемых результатов от реализации подсистемы
Пользователи смогут обмениваться сообщениями в рамках СЗЗ "ВЕХНО", что позволит улучшить коммуникацию между пользователями и повысить эффективность работы в рамках проектов.
### 3. Нормативные и методические документы влияющие на выполнение заявки
#### 3.1. Нормативные правовые акты: ____
#### 3.2. Методические и иные документы определяющие требования и ограничения процессам, подлежащим автоматизации: ____
### 4. Требования к результату
### 4.1. Бизнес- или функциональные требования
Модернизация СЗЗ "ВЕХНО", с целью привнесения функционала обмена сообщениями между пользователями (СОС "НИЧАТКА").
СОС "НИЧАТКА" должна быть реализована как надстройка над СЗЗ "ВЕХНО" и обеспечивать возможность обмена сообщениями между пользователями.
* Сообщения имеют могут быть как адресованные конкретному пользователю (адресные), так и групповые (групповые), а так же безадресные (широковещательные).
* Сообщения могут иметь метки:
* цветовые: не менее шести;
* приоритетные: критично, важно, обычно;
* статусные: новые, прочитано, скрыто.
* Система должна обеспечивать возможность скрытия обработанных сообщений (удаление сообщений запрещено).
* Система должна обеспечивать возможность просмотра истории сообщений (включая скрытые).
* Система должна обеспечивать возможность управления сообщениями (изменения цветовых меток и приоритета, скрытие).
* Система должна обеспечивать возможность управления списком пользователей (адресатов адресных и групповых сообщений)
* Система должна обеспечивать возможность просмотра истории сообщений. Просмотр должен быть снабжен системой фильтров и поиска.
СОС "НИЧАТКА" должна быть реализована как надстройка над СЗЗ "ВЕХНО". Основной код и БД не должны быть изменены. Рефакторинг кода СЗЗ "ВЕХНО" допускается. Изменения дизайн (фронтэнд) допускается в минимальных объемах.
### 4.2. Общее описание автоматизируемых бизнес-процессов и их участников, модели взаимодействия и порядка обработки данных
#### 4.2.1. Наименование бизнес-процесса
СОС "НИЧАТКА" -- Система обмен сообщениями между пользователями СЗЗ "ВЕХНО"
#### 4.2.2. Описание (логика бизнес-процесса)
СОС "НИЧАТКА" должна быт разработана как отдельное приложение (django app), работающее в рамках СЗЗ "ВЕХНО". Никакие таблицы БД СЗЗ "ВЕХНО" не должны быть измены. Все таблицы СОС "НИЧАТКА" должны быть созданы в отдельной схеме БД.
Доработка дизайна (фронтэнд) СЗЗ "ВЕХНО" ограничивается добавлением двух элементов: иконка <колокольчик> в верхнем меню и скрытый блок для AJAX-подгрузки (виджета).
СОС "НИЧАТКА" должна быть реализована как отдельное приложение (django app), работающее в рамках СЗЗ "ВЕХНО". Никакие таблицы БД СЗЗ "ВЕХНО" не должны быть измены. Все таблицы СОС "НИЧАТКА" должны быть созданы в отдельной схеме БД.
Псевдокод BPMN диаграммы:
1. Создать пул для системы.
2. Добавить дорожки для "Статус" и "Панель".
* Добавить задачи и события:
* Начальное событие: "Запрос статуса {user}"
* Задача: "Отправить ответ на запрос статуса: число сообщений и наивысший приоритет"
* Задача: "Отобразить элемент управления: список и выбора адресатов"
* Задача: "Отобразить элемент управления: список и выбора приоритета"
* Задача: "Отобразить элемент управления: ввести сообщение (текст)"
* Задача: "Отобразить элемент управления: Отменить"
* Задача: "Отобразить элемент управления: Отправить"
И так далее... не уверен, что все правильно с точки зрения BPMN (никогда не использовал), но думаю, что идея понятна.
#### 4.2.3 Участники взаимодействия и их роли
Учаcтники: все пользователи СЗЗ "ВЕХНО".
Роли: СОС "НИЧАТКА" -- одноранговая. Каждый может отправить сообщение любому, и ответить на любое полученное сообщение или скрыть его.
#### 4.2.4. Схема взаимодействия
Система обмена сообщениями и взаимодействия между пользователями асинхронная, одноранговая. Пользователь может отправить сообщение, а также прочитать, ответить на него или скрыть. Пользователь может отправить сообщение любому пользователю, а также нескольким пользователям (группе). Пользователь может отправить широковещательное сообщение. Для отправки широковещательных сообщений пользователь должен выбрать группу (адресата) "Все".
Схема взаимодействия пользователей представлена на блок-схеме:
Каждый пользователь при создании сообщения может установить его приоритет. Приоритеты: критично, важно, обычно. Адресат не может изменить приоритет сообщения. Ответив на сообщение, приоритет сохраняется.
Каждый пользователь может установить свои цветовые метки для сообщений. Установленные метки видны только установившему их пользователю.
#### 4.2.6. Описание основных сущностей
Сущности:
* сообщение
* адресат/адресаты (пользователь)
* отправитель (пользователь)
* приоритет сообщения
* цветовая метка сообщения в привязке к пользователю
* статус сообщения (новое, прочитанное, скрытое)
* родительское сообщение (в случае, если сообщение является ответом)
* штамп времени
### 4.3. Входные данные
Весь обмен данными между СОС "НИЧАТКА" и СЗЗ "ВЕХНО" должен осуществляться через web-api. Состав данных определяется через URL-запроса.
### 4.3.1. Состав входной информации
Запрос статуса:
* Параметры:
* Уникальный ник-нейм пользователя СЗЗ "ВЕХНО"
* Токен верификации
* Метод: GET
* Исключения: В случае отсутствия данных, система должна вернуть ошибку 401.
Запрос панели сообщений:
* Поля:
* Уникальный ник-нейм пользователя СЗЗ "ВЕХНО"
* Токен верификации
* Параметры фильтрации
* Параметры пейджинации.
* Метод: GET
* Исключения: В случае отсутствия данных, система должна вернуть ошибку 401.
Передача сообщения:
* Поля:
* Уникальный ник-нейм пользователя СЗЗ "ВЕХНО"
* Токен верификации
* Адресат/адресаты (если есть, для первичного сообщения)
* Приоритет
* Текст сообщения
* ID родительского сообщения (если есть, для ответа)
* Метод: POST
* Исключения: В случае ошибки данных, система должна вернуть статус 401.
Передача изменения состояния:
* Поля:
* Уникальный ник-нейм пользователя СЗЗ "ВЕХНО"
* Токен верификации
* ID сообщения
* Параметры изменения: цветовая метка, приоритет, статус
* Параметры статуса сообщения: прочитано, скрыть
* Статус "происходит ввод текста" (для предотвращения перезагрузки виджета в момент ввода нового сообщения)
* Метод: PATCH (GET)
* Исключения: В случае ошибки данных, система должна вернуть статус 401.
##### 4.3.2. Наименование набора данных
Никакие данные, кроме уникального ник-нейма пользователя СЗЗ "ВЕХНО" и токена верификации, не должны быть переданы в запросе к СОС "НИЧАТКА". Все прочие запросы и ответы являются частью СОС "НИЧАТКА", и осуществляются внутри блока (виджета) СОС "НИЧАТКА".
###### 4.3.2.1. Описание входной информации
Все данные из СОС "НИЧАТКА" должны быть переданы в формате составе URL и методом GET или POST.
###### 4.3.2.2. Формат
Переменные GET или POST.
###### 4.3.2.3. Способ загрузки
Загрузка данных должна осуществляться через web-api. Витжет СОС "НИЧАТКА" отправляет периодически запрос статуса и запрос на обновление панели сообщений (виджета) в случае если панель открыта.
###### 4.3.2.4. Владелец
СОС "НИЧАТКА" одноранговая. Сообщения не имеют владельца. И отправитель, и адресата -- равноправные участники, никто не имеет права изменять или удалять сообщения )ни свои. ни других участников).
#### 4.4. Выходные данные
Все данные из СОС "НИЧАТКА" должны быть переданы в формате web-api (готовые фрагменты HTML для обработки внутри виджета). Протокол передачи данных: HTTPS, сжатые gzip, кодировка utf-16.
### 4.5. Нефункциональные требования
Цветовые и стилевые решения внутри виджета СОС "НИЧАТКА" должны быть согласованы с дизайном СЗЗ "ВЕХНО". Виджет должен быть адаптивным и поддерживать все современные браузеры. Виджет должен быть легковесным и не замедлять работу СЗЗ "ВЕХНО". Виджет должен быть удобным в использовании и интуитивно понятным.
## 5. Роли и права доступа пользователей
Роли и права доступа пользователей в СОС "НИЧАТКА" не регламентируются. Все пользователи равноправны и могут обмениваться сообщениями между собой. Права доступа к сообщениям и их изменениям не регламентируются. Пользователь может изменить цветовую метку, приоритет и статус сообщения, а также скрыть его. Эти изменения касаются только отображения сообщений для конкретного пользователя.
## 6. Критерии проверки результатов работ
* Результаты работ должны быть проверены на соответствие бизнес-требованиям и функциональным требованиям.
* Результаты работ должны быть проверены на соответствие нефункциональным требованиям.
* Результаты работ должны быть проверены на соответствие дизайну СЗЗ "ВЕХНО".
* Результаты работ должны быть проверены на соответствие стандартам безопасности и качества кода.
* Результаты работ должны быть проверены на соответствие стандартам производительности и оптимизации кода.
* Результаты работ должны быть проверены на соответствие стандартам адаптивности и кросс-браузерности.
* Результаты работ должны быть проверены на соответствие стандартам доступности и удобства использования.
* Результаты работ должны быть проверены на соответствие стандартам тестирования и отладки.
* Результаты работ должны быть проверены на соответствие стандартам документирования и комментирования кода.