31a0a8e9e3
Напоминания: - ProbationEndingReminderDto: ManagerEmail убран — это был унаследованный ReceiverEmail под вторым именем. - Ссылка для ProbationEnding больше не ведёт на саму заявку на приём (она уже закрыта, решать по ней нечего) — берётся из новой настройки RemindersOptions.ProbationReminderUrl и ведёт в раздел, где заводят новую заявку. Подстановок в ней нет: адрес конкретной формы в портал не передать, rptype без rpid/rpsource игнорируется (см. parseRoute в request-portal). Заодно ушли BuildProbationUrl и ненужные больше параметры type/listId. Стайлгайд (CLAUDE.md) — у enum первое значение None: - ReminderFeed: None=0 трактуется как ApprovalOverdue, чтобы вызов без явного выбора работал как раньше. - EmploymentStatus: заодно инвертирован switch в ReminderService — раньше «продолжить» было веткой по умолчанию, и новый None молча означал бы «сотрудник работает». Теперь по умолчанию пропуск с предупреждением. - ConditionsLogic: None — НЕвалидное значение, отвергается валидаторами шага (в том числе новым PatchTemplateRouteStepRequestValidator, его не было вовсе). Поэтому у ConditionsLogic в Create/Update-запросах убрано значение по умолчанию: System.Text.Json в .NET 10 уважает дефолты параметров конструктора, и пропущенное поле молча означало «И». Теперь пропущенное поле даёт None и упирается в валидатор. ЛОМАЮЩЕЕ ИЗМЕНЕНИЕ КОНТРАКТА: клиент, не присылающий conditionsLogic в POST/PUT шага, получит 400 вместо прежнего молчаливого «И». Админка не затронута — она это поле всегда отправляет.
27 lines
1.5 KiB
C#
27 lines
1.5 KiB
C#
namespace Tnsu.ApprovalRoute.Domain.Enums;
|
|
|
|
/// <summary>
|
|
/// Как объединяются условия шага (<see cref="Entities.TemplateRouteStep.Conditions"/>)
|
|
/// между собой, если их несколько. Не действует, если условие одно или их нет вовсе.
|
|
/// </summary>
|
|
public enum ConditionsLogic
|
|
{
|
|
/// <summary>
|
|
/// Логика не задана — НЕвалидное значение (см. валидаторы шага), а не «как И».
|
|
/// Существует только как значение по умолчанию (default(ConditionsLogic)):
|
|
/// шаг с такой логикой не должен ни создаваться, ни сохраняться.
|
|
///
|
|
/// Именно поэтому у самой сущности и у запросов на создание/обновление
|
|
/// значение по умолчанию задано явно — <c>ConditionsLogic.And</c>
|
|
/// (см. TemplateRouteStep.ConditionsLogic и *TemplateRouteStepRequest):
|
|
/// пропущенное в запросе поле по-прежнему означает «И», как и раньше.
|
|
/// </summary>
|
|
None = 0,
|
|
|
|
/// <summary>Шаг появляется, только если выполняются ВСЕ условия.</summary>
|
|
And = 1,
|
|
|
|
/// <summary>Шаг появляется, если выполняется ХОТЯ БЫ ОДНО условие.</summary>
|
|
Or = 2
|
|
}
|