Отправка текстовых сообщений#
Пользователи процесса#
Предусловия#
- У пользователя роли CONTRACTOR есть права
- У пользователя роли AGENT есть права
- У пользователя роли CUSTOMER есть права
Точки входа#
- Пользователь ввел текстовое сообщение в переписке по заявке
Варианты завершения#
- Текстовое сообщение отправлено
- Текстовое сообщение не отправлено
Процесс#
| Шаг | Описание |
|---|---|
| 1 | Пользователь набирает сообщение, при необходимости ставит признак приватности |
| 2 | Пользователь отправляет сообщение |
| 3 | Система отображает пользователю-отправителю сообщение в статусе Отправляется |
| 3.1 | Если пользовать поставил признак приватности сообщения, система: |
| - отображает сообщение как Приватное | |
| - возвращает переключатель приватности в false (следующее отправляемое сообщение по-умолчанию не приватное) | |
| 4 | Система сохраняет сообщение |
| 4.1 | Если системе не удалось сохранить сообщение, отображает сообщение в статусе Ошибка отправки |
| 4.2 | Если пользователь нажимает кнопку повторной отправки сообщения, возврат к шагу 3, иначе Конец сценария. |
| 5 | Система отображает сообщение всем пользователям (список сообщений сдвигается). Если применимо к пользователю, то в статусе Отправлено |
| 5.1 | Если сообщение имеет признак приватности (isPrivate == true), система отображает сообщение как Приватное |
Особенности процесса#
- могут быть введены любые символы
- максимальное количество символов в одном сообщении = 2000
- при вводе длинного текста, поле ввода расширяется по вертикали до 6 строк. Если строк больше - появляется скролл для прокрутки текста
- кнопка отправки становится доступна, если в поле ввода введены символы
- сообщение отправляется при нажатии на Enter на клавиатуре или на кнопку отправки на экранной форме
Сохранение сообщения#
Модель message.schema.json
Id- уникальный Id сообщенияsentAt- дата и время отправки сообщения пользователемsentBy- id пользователя, отправившего сообщениеmessageTypeTEXT- при отправке текстового сообщенияFILE- при отправке файла
messageText- заполняется текстом отправляемого сообщенияisPrivate- true, если пользователь установил этот признак перед отправкой сообщения/файлаfile.path- путь к загруженному файлуfile.name- отображаемое название файла - соответствует названию файла, который выбрал пользовательfile.size- отображаемы размер файла - соответствует размеру файла, который выбрал пользовательnotReadBy[]- добавляются роли CONTRACTOR, AGENT, CUSTOMER,
- исключая роль автора сообщения.
- для приватных сообщений исключается роль CUSTOMER.
- для НЕ приватных сообщений при отправке ролью CONTRACTOR исключается роль AGENT
replyForId- если это был ответ на другое сообщение, Id сообщения на которе был ответlinks[]- при наличии ссылок (может быть больше одной внутри текста), каждая ссылка парсится и сохраняется отдельным элементом вlinks[], для дальнейшего отображения в списке ссылок:url- адрес ссылки
Если сохраняемое сообщение является ответом на друге сообщение (указан replyForId), то в сообщении, на которое отвечает пользователь, заполняется:
hasReply- true