правки по логике переключения
Tests / frontend-test (push) Successful in 45s
Tests / backend-test (push) Successful in 2m11s

This commit is contained in:
gorbenko.pavel
2026-08-07 16:04:22 +05:00
parent 1d45780294
commit 11738b6e4a
5 changed files with 98 additions and 15 deletions
@@ -27,11 +27,16 @@ export const APPROVAL_PHASE = {
} as const;
// Строка маршрута в одном из этих статусов ЕЩЁ НЕ решена согласующим/исполнителем
// ОКОНЧАТЕЛЬНО — её можно менять (переназначить человека, удалить, переставить,
// добавить новую рядом). «Возвращена на доработку» сюда включена нарочно: это не
// финальное решение (заявка вернётся на новый круг после доработки), поэтому
// согласующего на этом шаге всё ещё можно переназначить. approved/executed/
// rejected — финальные решения, трогать нельзя ни при каких условиях.
// ОКОНЧАТЕЛЬНО — её можно менять (переназначить человека, удалить, добавить новую
// рядом). «Возвращена на доработку» сюда включена нарочно: это не финальное
// решение (заявка вернётся на новый круг после доработки), поэтому согласующего
// на этом шаге всё ещё можно переназначить. approved/executed/rejected —
// финальные решения, трогать нельзя ни при каких условиях.
//
// ВАЖНО: это НЕ то же самое, что «можно переставить» (см. isMovableRowStatus
// ниже) — «Возвращена на доработку» уже означает, что своё слово по этому шагу
// согласующий сказал (просто мы разрешаем потом переназначить человека), поэтому
// двигать такой шаг/менять его параллельность нельзя, а переназначить — можно.
const EDITABLE_ROW_STATUSES: string[] = [
REQUEST_STATUS.draft,
REQUEST_STATUS.queued,
@@ -44,6 +49,22 @@ export function isEditableRowStatus(status: string): boolean {
return EDITABLE_ROW_STATUSES.indexOf(status) !== -1;
}
// Строка в одном из этих статусов можно двигать (стрелки вверх/вниз) и менять её
// параллельность с соседней — строго подмножество EDITABLE_ROW_STATUSES, без
// «Возвращена на доработку»: решение по шагу уже принято, менять его МЕСТО в
// маршруте (а значит и то, когда он активируется повторно) не должно быть можно,
// хотя переназначить исполнителя на нём — можно (см. isEditableRowStatus).
const MOVABLE_ROW_STATUSES: string[] = [
REQUEST_STATUS.draft,
REQUEST_STATUS.queued,
REQUEST_STATUS.onApproval,
REQUEST_STATUS.onExecution
];
export function isMovableRowStatus(status: string): boolean {
return MOVABLE_ROW_STATUSES.indexOf(status) !== -1;
}
// Заявка в этом статусе прошла полностью (все фазы завершены) — маршрут можно
// только посмотреть, редактирование выключается целиком независимо от статусов
// отдельных строк.