d9d68405ab
«Редактирование заявок» и «Заявки по согласующему» раньше читали списки SharePoint напрямую с фронтенда (PnP от имени залогиненного администратора), из-за чего видимые заявки молча урезались правами САМОГО администратора на списки. Добавлен RequestManageService/RequestManageController на бэкенде (app-only SharePointClient, по образцу ReminderService) — теперь чтение (поиск заявки, матрица маршрута, строки по согласующему) идёт через него, а правка (переназначить/удалить/переставить/уведомить) остаётся на PnP. Заодно кнопка уведомления в таблице маршрута включена и для строк в статусе «Возвращена на доработку» — по клику поток Power Automate уведомляет автора заявки, что её вернули на доработку. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
35 lines
2.0 KiB
TypeScript
35 lines
2.0 KiB
TypeScript
// Домен вкладки «Заявки по согласующему» (ManageByUserScreen) — сводит вместе
|
||
// два независимых источника по одному конкретному человеку: живые строки
|
||
// согласования (SharePoint, requestManageService.ts) и шаблонные шаги
|
||
// маршрутов (Tnsu.ApprovalRoute.Api, TemplateRouteStep с ExecutorEmail).
|
||
import { ManagedApprovalRow } from './requestManage';
|
||
import { TemplateRouteStep } from './templateRouteSteps';
|
||
|
||
/**
|
||
* Строка согласования, найденная сразу по ВСЕМ типам заявок и ВСЕМ их
|
||
* партициям — в отличие от ManagedApprovalRow (одна открытая заявка одного
|
||
* типа), здесь нужен контекст, к какому типу/списку/партиции она относится,
|
||
* чтобы её можно было и показать, и записать обратно через reassignApprover.
|
||
*/
|
||
export interface UserApprovalRow extends ManagedApprovalRow {
|
||
requestTypeId: number;
|
||
requestTypeName: string;
|
||
siteUrl: string;
|
||
/** Партиция списка ДАННЫХ, где физически лежит заявка. */
|
||
listId: string;
|
||
approvalListTitle: string;
|
||
requestTitle: string;
|
||
// eslint-disable-next-line @rushstack/no-new-null -- зеркалит SharePoint: колонки может не быть
|
||
requestUniqueCode: string | null;
|
||
}
|
||
|
||
/** Форма, в которой UserApprovalRow отдаёт Tnsu.ApprovalRoute.Api — см. requestManage.ts/ManagedApprovalRowApi. */
|
||
export type UserApprovalRowApi = Omit<UserApprovalRow, 'date'>;
|
||
|
||
/** Шаг шаблона маршрута с ExecutorEmail = искомый человек, обогащённый для отображения. */
|
||
export interface UserTemplateStepRow extends TemplateRouteStep {
|
||
requestTypeName: string;
|
||
companyName: string;
|
||
departmentName: string;
|
||
}
|