чат по заявке через комментарии к строке списка (#14)
Tests / frontend-test (push) Successful in 1m15s

Обсуждение заявки поверх штатных комментариев SharePoint (PnPjs
item.comments) — без новых колонок и провижининга, права на переписку
раздаёт сам SharePoint по правам на элемент.

Встроено в ApproveFeature и EditFeature (единственные входы в просмотр
заявки для всех типов), поэтому доступно автору, всем согласующим
(включая уже решивших и ещё не дошедших до своего шага) и исполнителям,
а не только текущему шагу маршрута, как DecisionPanel.

Автора комментария всегда ставит реальная учётка — отладочная подмена
личности на запись в SharePoint не влияет, в UI есть предупреждение.

---------

Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz>
Reviewed-on: http://git.tnsu.kz/timur.gorodetskiy/request-portal/pulls/14
This commit was merged in pull request #14.
This commit is contained in:
2026-08-24 11:37:34 +00:00
parent a146877327
commit 0ecb1ded78
19 changed files with 1357 additions and 5 deletions
@@ -0,0 +1,29 @@
/** Файл, прикреплённый к сообщению чата (лежит в библиотеке «Файлы чата»). */
export interface IChatAttachment {
/** Имя для показа — без служебного префикса (см. chatFileNames.ts). */
fileName: string;
/** Ссылка на файл в библиотеке. */
url: string;
}
/**
* Сообщение чата заявки — комментарий к элементу списка данных, приведённый
* к виду, удобному интерфейсу (SharePoint отдаёт сырой ICommentInfo).
*/
export interface IChatMessage {
/** Id комментария в SharePoint. Строка, а не число — так его отдаёт API. */
id: string;
/** Текст сообщения БЕЗ служебной пометки о файлах. */
text: string;
/** ФИО автора; если SharePoint его не отдал — email или заглушка. */
authorName: string;
authorEmail: string;
createdAt: Date;
/**
* Сообщение написано текущим пользователем — рисуется «своим» (справа).
* Считается по email автора, см. toChatMessages.
*/
isOwn: boolean;
/** Прикреплённые файлы; пустой массив — файлов нет. */
attachments: IChatAttachment[];
}