namespace Tnsu.ApprovalRoute.Application.Reminders; public sealed class RemindersOptions { /// /// Шаблон ссылки на заявку. Подстановки: {siteUrl}, {pageUrl}, {requestId}, /// {listId}, {nav}. /// /// Портал — одностраничный и живёт в КОРНЕ сайта, отдельного пути к странице /// нет; всё состояние передаётся параметрами запроса (см. shared/routing.ts /// в request-portal). Пример живой ссылки: /// https://tnsukz.sharepoint.com/sites/requests?rpnav=approvals&rpmode=approve&rptype=it-1c-ticket&rpid=11&rplist=%2Fsites%2Frequests%2FLists%2F... /// /// {pageUrl} — это PageUrl типа заявки, то есть КЛЮЧ ФОРМЫ (it-1c-ticket), а /// не путь к странице: в портале он и подставляется в rptype. /// /// {listId} — server-relative url КОНКРЕТНОЙ партиции, где лежит строка /// согласования (параметр rplist). Без него портал открывал бы заявку так, /// будто она лежит в ТЕКУЩЕЙ партиции типа, и архивная заявка не находилась /// бы вовсе (см. IRoute.listId в request-portal/shared/routing.ts). /// /// Вынесено в конфигурацию, чтобы смена разметки ссылок в портале правилась /// настройкой, а не пересборкой сервиса. /// public string RequestUrlTemplate { get; set; } = "{siteUrl}?rpnav={nav}&rpmode=approve&rptype={pageUrl}&rpid={requestId}&rplist={listId}"; /// /// PageUrl типа заявки «Заявка на приём» (см. request-portal, forms/RecruitingHire/model.ts, /// FORM_ID) — по нему ищется RequestType для напоминаний об окончании испытательного срока. /// Не завязано на SlaHours: этот вид напоминаний не про просрочку шага согласования. /// public string RecruitingHirePageUrl { get; set; } = "recruiting-hire"; /// За сколько дней до конца испытательного срока присылать напоминание. public int ProbationReminderDaysBeforeEnd { get; set; } = 3; /// /// Куда ведёт ссылка в напоминании об окончании испытательного срока — на /// раздел «Подать заявку» портала, а НЕ на саму заявку на приём: от /// руководителя по этому напоминанию требуется завести НОВУЮ заявку (решение /// по итогам испытательного срока), а не открыть уже закрытую старую. /// /// Поэтому ссылка константная, без подстановок: адрес конкретной формы в /// портал вообще не передать — параметр rptype без rpid/rpsource /// игнорируется, и маршрут сваливается в раздел «Подать заявку» (см. /// parseRoute в request-portal/shared/routing.ts). Отдельная настройка, а не /// хардкод, — чтобы адрес правился конфигурацией. /// public string ProbationReminderUrl { get; set; } = "https://tnsukz.sharepoint.com/sites/requests?rpnav=new"; }