Чат заявки: отметки «@» и оповещения через поток (#26)
Tests / frontend-test (push) Successful in 2m1s

## Что сделано

**Чат заявки: отметки и оповещения**
- В поле ввода «@» открывает подсказку с участниками заявки: инициатор, согласующие и исполнители из маршрута, а также те, кому открыты «Все заявки» этого типа (список из request-type-access).
- Отметка — обычный текст «@ФИО», без штатного упоминания SharePoint, чтобы не уходило его письмо.
- После отправки сообщения портал вызывает поток Power Automate (`FLOW_CHAT_NOTIFY_URL`): отмеченным — «Вас упомянули», инициатору — «Новое сообщение по вашей заявке». Сбой потока не мешает отправке.
- В письмо добавляется строка «Прикреплены файлы: …», чтобы сообщение из одного файла не приходило пустым.
- Свойство веб-части «Чат: уведомлять о своих сообщениях (для теста)», по умолчанию выключено: письма и о своих сообщениях, можно отметить себя.
- Когда пишет сам инициатор с отметками, в `initiatorEmail` уходит первый отмеченный — поток шлёт инициатору всегда, если его нет среди отмеченных, и иначе он получил бы письмо о своём же сообщении.

**Чат включён для:** Обходной лист, заявка на подбор, заявка на приём, заявка в отдел 1С.

**Исправление:** редактор маршрута может удалять исполнителей в Обходном листе, Командировке и заявке в 1С (не передавалось `canRemoveRow`).

**Прочее:** убраны 4 предупреждения линтера (`no-new-null`, `no-script-url`).

## Не проверено на тенанте
- Ответ потока 200 через AadHttpClient и доставка писем.
- Права согласующих на комментарии и на запись в библиотеку «Файлы чата».
- Папки в «Файлы чата» наследуют права библиотеки, а не закрыты на заявку — для подбора и приёма это важно решить до выкладки.
- Если поток вставляет `messageText` в HTML-письмо, перенос строки перед «Прикреплены файлы» может не отобразиться.

---------

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/26
This commit was merged in pull request #26.
This commit is contained in:
2026-10-14 10:05:45 +00:00
parent 96f53da020
commit 5d2abaf430
27 changed files with 754 additions and 46 deletions
@@ -157,6 +157,30 @@ export const FLOW_RESOURCE = 'https://service.flow.microsoft.com/';
export const FLOW_NOTIFY_URL =
'https://eab3d2815f2beb42bf2e7ec1731708.92.environment.api.powerplatform.com:443/powerautomate/automations/direct/cu/07/workflows/b21516edf8a14287a65a39e4116dfe4f/triggers/manual/paths/invoke?api-version=1';
/**
* Power Automate: поток оповещения о новом сообщении в чате заявки (shared/chat).
* Тот же механизм вызова, что у FLOW_NOTIFY_URL (Entra-триггер, AadHttpClient с
* ресурсом FLOW_RESOURCE), но тело другое — получателей поток НЕ ищет сам, их
* передаёт портал (см. shared/chat/chatNotify.ts):
* отмеченным через «@» — «Вас упомянули в чате по заявке №…»,
* инициатору (если его не отметили) — «Новое сообщение в чате по вашей заявке №…».
*/
export const FLOW_CHAT_NOTIFY_URL =
'https://eab3d2815f2beb42bf2e7ec1731708.92.environment.api.powerplatform.com:443/powerautomate/automations/direct/cu/07/workflows/325d735d32de4e6989f4f06fc347e833/triggers/manual/paths/invoke?api-version=1';
// Чат заявки, режим проверки (свойство веб-части chatSelfNotify): письма уходят и
// о СВОИХ сообщениях, и себя можно отметить через «@». По умолчанию выключен —
// писать самому себе в обычной работе незачем.
let _chatSelfNotify = false;
export function setChatSelfNotify(enabled: boolean): void {
_chatSelfNotify = enabled;
}
export function getChatSelfNotify(): boolean {
return _chatSelfNotify;
}
/**
* Microsoft Dataverse (Power Platform) — рабочая среда «По умолчанию»
* (org95ca17d6.crm4.dynamics.com). NB: таблица cree9_demandline существует и в