// DTO эндпоинта api/template-routes/resolve // (Application/TemplateRoutes/ResolveTemplateRouteDto.cs). /* eslint-disable @rushstack/no-new-null -- поля 1:1 зеркалят nullable JSON-контракт бэкенда */ import { HeadType, RouteStepStatus } from './enums'; /** Значение поля списка SharePoint (field_name шага) для проверки условий шагов. */ export interface ResolveFieldValue { fieldName: string; value: string; } export interface ResolveTemplateRouteQuery { requestTypeId: number; userEmail?: string; projectId?: string; status: RouteStepStatus; fieldValues?: ResolveFieldValue[]; /** Для шагов с HeadType.DepartmentHead — отдел не выводится из инициатора, задаётся явно. */ departmentId?: string; } export interface ResolvedRouteStep { id: number; orderNo: number; executorEmail: string | null; position: string | null; allowReassignToOtherApprovers: boolean; /** Причина, по которой исполнитель шага не определился (текст с бэкенда). */ warning: string | null; /** * HeadType шага (Chief/DirectionHead/...), если исполнитель задан типом * руководителя, иначе null. В отличие от position (реальная должность * резолвнутого сотрудника из справочника) — это код роли из самого шага. */ positionCode: HeadType | null; } export interface ResolveTemplateRouteResult { routeId: number; requiresControl: boolean; steps: ResolvedRouteStep[]; }