From 84ca3bf964e0af68badfa221b06fa327508f7e45 Mon Sep 17 00:00:00 2001 From: e-serg Date: Sun, 4 Aug 2024 21:36:54 +0300 Subject: [PATCH] =?UTF-8?q?add:=20=D0=A0=D0=B5=D1=88=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...enger--functional-requirement__(tst_0b).md | 440 ++++++++++++++++++ 1 file changed, 440 insertions(+) create mode 100644 messenger--functional-requirement__(tst_0b).md diff --git a/messenger--functional-requirement__(tst_0b).md b/messenger--functional-requirement__(tst_0b).md new file mode 100644 index 0000000..933712d --- /dev/null +++ b/messenger--functional-requirement__(tst_0b).md @@ -0,0 +1,440 @@ +## Функциональные требования функционала отправки сообщений между пользователями внутри уже созданной информационной системы + +## 1. Общие сведения о Заявке + +### 1.1. Наименование информационной системы + +... + +### 1.2. Наименование подсистемы информационной системы: + +Система Отправки Сообщений "Ничатка" (СОС "НИЧАТКА") + +### 1.3. Функциональный заказчик + +... + +### 1.4. Автор + +Еремин Сергей + +### 1.5. Компонент(ы) подсистемы, подлежащий развитию, обработке + +Система Запросов и Заданий "Вехно" (СЗЗ "ВЕХНО") + +### 1.6. Приоритет заявки + +... + +### 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-подгрузки (виджета). +``` + +--------------------------------------------------------------------------+ + | ВЕРХНЕЕ МЕНЮ СЗЗ "ВЕХНО" <колокольчик> {user}| + +--------------------------------------------------------------------------+ + | ОСНОВНОЙ ИНТЕРФЕЙС СЗЗ "ВЕХНО" | ПАНЕЛЬ СОС "НИЧАТКА" | + | | (блок открыт) | + | | | + | | | + | | | + | | | + | | | + | +----------------------| + | | + | | + | | + +--------------------------------------------------------------------------+ +``` + +Псевдокод BPMN диаграммы: + +1. Создать пул для системы. +2. Добавить дорожки для "Пользователь" и "Система". + * Добавить задачи и события: + * Начальное событие: "Загрузка страницы" + * Задача: "Запрос статуса из СОС 'НИЧАТКА'" + * Задача: "Отобразить колокольчик со статусом" + * Промежуточное событие: "Клик на колокольчик" + * Исключающее условие: "Панель видима?" + * Если нет: + * Задача: "Загрузить контент из СОС 'НИЧАТКА'" (по web-api) + * Задача: "Показать панель" + * Если да: + * Задача: "Скрыть панель" + * Конечное событие: "Конец" + +Диаграмма: +```bpmn + + + + + click_bell_event + + + request_status_task + display_bell_task + load_content_task + show_panel_task + hide_panel_task + + + + + + + + + + + + + + + + + + + No + + + + + Yes + + + + +``` + +```text +Пул: Система + +------------------------------------------------------+ + | Дорожка: Пользователь | + | +-----------------------------+ | + | | Начальное событие: | | + | | "Загрузка страницы" | | + | +-------------+---------------+ | + | | | + | v | + | +-------------+---------------+ | + | | Задача: | | + | | "Запрос статуса из СОС |-----------------+ | + | | 'НИЧАТКА'" | | | + | +-------------+---------------+ | | + | | | | + | v | | + | +-------------+---------------+ | | + | | Задача: |<----------------+ | + | | "Отобразить колокольчик | | + | | со статусом" | | + | +-------------+---------------+ | + | | | + | v | + | +-------------+---------------+ | + | | Промежуточное событие: | | + | | "Клик на колокольчик" | | + | +-------------+---------------+ | + | | | + | v | + | +-------------+---------------+ | + | | Исключающее условие: | | + | | "Панель видима?" | | + | +------+------------+----------+ | + | | | | + | | Нет | Да | + | | | | + | v v | + | +------+------------+----------+ | + | | Задача: | | + | | "Загрузить контент из СОС |-----------------+ | + | | 'НИЧАТКА'" | | | + | +------+------------+----------+ | | + | | +------+ | + | | | | + | v v | + | +------+------------+---------+ +------+----------+| + | | Задача: | | Задача: || + | | "Показать панель" | | "Скрыть панель" || + | +-------------+---------------+ +------+----------+| + | | | + | v | + | +-------------+---------------+ | + | | Конечное событие: | | + | | "Конец" | | + | +-----------------------------+ | + +------------------------------------------------------+ + | Дорожка: Система | + | +-----------------------------+ | + | | Начальное событие: | | + | | "Запрос статуса из СОС |<-----------------+ | + | | 'НИЧАТКА'" | | + | +-------------+---------------+ | + | | | + | v | + | +-------------+---------------+ | + | | Задача: | | + | | "Отправить запрос к СОС | | + | | 'НИЧАТКА'" | | + | +-------------+---------------+ | + | | | + | v | + | +-------------+---------------+ | + | | Задача: | | + | | "Получить статус" | | + | +-------------+---------------+ | + | | | + | v | + | +-------------+---------------+ | + | | Задача: | | + | | "Передать статус в дорожку |------------------+ | + | | 'Пользователь'" | | | + | +-------------+---------------+ | | + | | | | + | v | | + | +-------------+---------------+ | | + | | Задача: | | | + | | "Загрузить контент из СОС |<----=------------+ | + | | 'НИЧАТКА'" | | | + | +-------------+---------------+ | | + | | | | + | v | | + | +-------------+---------------+ | | + | | Задача: | | | + | | "Передать контент в дорожку |-----------------+ | + | | 'Пользователь'" | | + | +-------------+---------------+ | + +------------------------------------------------------+ + +``` + +СОС "НИЧАТКА" должна быть реализована как отдельное приложение (django app), работающее в рамках СЗЗ "ВЕХНО". Никакие таблицы БД СЗЗ "ВЕХНО" не должны быть измены. Все таблицы СОС "НИЧАТКА" должны быть созданы в отдельной схеме БД. + +Псевдокод BPMN диаграммы: +1. Создать пул для системы. +2. Добавить дорожки для "Статус" и "Панель". + * Добавить задачи и события: + * Начальное событие: "Запрос статуса {user}" + * Задача: "Отправить ответ на запрос статуса: число сообщений и наивысший приоритет" + * Промежуточное событие: "Получение списка приоритетов непрочитанных сообщений" + * Задача: "Посчитать общее количество непрочитанных сообщений (через список статусов)" + * Задача: "Найти наивысший приоритет среди списка статусов" + * Добавить задачу и событие: + * Начальное событие: "Оправить рендер (web-api) для Панели Сообщений" + * Задача: "Отобразить элемент управления: фильтры" + * Задача: "Получить и отобразить список сообщений" + * Промежуточное событие: "Получение списка сообщений в соответствии с фильтрами и пейджинацией" + * Задача: "Отобразить список -- сообщение-отправитель-дата-время-получатели" + * Промежуточное событие: "Отобразить дополнительные элементы управления сообщением" + * Задача: "Отобразить элементы управления: прочитано (скрыть)" + * Задача: "Отобразить элементы управления: цветовые метки" + * Задача: "Отобразить элементы управления: ответить" + * Задача: "Отобразить пейджинатор" + * Задача: "Отобразить элемент управления: создать и отправить сообщение" + * Промежуточное событие: "Получение списка адресатов (пользователей)" + * Задача: "Отобразить элемент управления: список и выбора адресатов" + * Задача: "Отобразить элемент управления: список и выбора приоритета" + * Задача: "Отобразить элемент управления: ввести сообщение (текст)" + * Задача: "Отобразить элемент управления: Отменить" + * Задача: "Отобразить элемент управления: Отправить" + +И так далее... не уверен, что все правильно с точки зрения BPMN (никогда не использовал), но думаю, что идея понятна. + + +#### 4.2.3 Участники взаимодействия и их роли + +Учаcтники: все пользователи СЗЗ "ВЕХНО". + +Роли: СОС "НИЧАТКА" -- одноранговая. Каждый может отправить сообщение любому, и ответить на любое полученное сообщение или скрыть его. + + +#### 4.2.4. Схема взаимодействия + +Система обмена сообщениями и взаимодействия между пользователями асинхронная, одноранговая. Пользователь может отправить сообщение, а также прочитать, ответить на него или скрыть. Пользователь может отправить сообщение любому пользователю, а также нескольким пользователям (группе). Пользователь может отправить широковещательное сообщение. Для отправки широковещательных сообщений пользователь должен выбрать группу (адресата) "Все". + +Схема взаимодействия пользователей представлена на блок-схеме: + +```mermaid +graph TD + А[Пользователь] -->|Запрос статуса| B(Система) + B -->|Отправить статус| А + А -->|Клик на колокольчик| B + А -->|Запросить контент (список сообщений)| B + B -->|Отобразить список сообщений (в соответсвии с фильтрами и паджинацией)| А + A -->|Создать сообщение| --> B(Создать сообщение) + А -->|Указать адресата или адресатов| --> B(Создать сообщение) + А -->|Указать приоритет| --> B(Создать сообщение) + A -->|Отправить сообщение| B(Отправить сообщение) +``` + + +#### 4.2.5. Описание смежных видов деятельности + +Каждый пользователь при создании сообщения может установить его приоритет. Приоритеты: критично, важно, обычно. Адресат не может изменить приоритет сообщения. Ответив на сообщение, приоритет сохраняется. + +Каждый пользователь может установить свои цветовые метки для сообщений. Установленные метки видны только установившему их пользователю. + + +#### 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. Критерии проверки результатов работ + +* Результаты работ должны быть проверены на соответствие бизнес-требованиям и функциональным требованиям. +* Результаты работ должны быть проверены на соответствие нефункциональным требованиям. +* Результаты работ должны быть проверены на соответствие дизайну СЗЗ "ВЕХНО". +* Результаты работ должны быть проверены на соответствие стандартам безопасности и качества кода. +* Результаты работ должны быть проверены на соответствие стандартам производительности и оптимизации кода. +* Результаты работ должны быть проверены на соответствие стандартам адаптивности и кросс-браузерности. +* Результаты работ должны быть проверены на соответствие стандартам доступности и удобства использования. +* Результаты работ должны быть проверены на соответствие стандартам тестирования и отладки. +* Результаты работ должны быть проверены на соответствие стандартам документирования и комментирования кода.