feat: инициатор заменяет согласующих в заявке на рабочее место до отправки

Если согласующий из маршрута недоступен (отпуск и т.п.), инициатор может
поставить на его шаг другого человека, пока заявка не отправлена. Шаг
целиком (порядок, роль, SLA) сохраняется, удалить его по-прежнему нельзя —
состав маршрута из админки остаётся гарантированным. Замена — общая операция
useMatrixEditor.replace, кнопка подключена только в этой форме.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Тимур Городецкий
2026-10-07 14:37:09 +05:00
parent bce2283bf3
commit 053ca9d8cd
3 changed files with 20 additions and 0 deletions
@@ -414,6 +414,11 @@ const WorkplaceSetupForm: React.FC<IRequestFormProps> = ({
editor={matrix}
search={(q) => approval.searchUsers(q)}
canRemoveRow={composeRemoveRowRule(effectiveUserEmail(context))}
// Пока заявка не отправлена, любой инициатор может поставить на шаг
// другого человека (напр. согласующий в отпуске), но не убрать шаг:
// состав маршрута из админки остаётся гарантированным.
canReplaceRow={readOnly ? undefined : () => true}
onReplaceRow={matrix.replace}
/>
{!executors.loading && (executors.editable || executors.rows.length > 0) && (