Починить активацию маршрута при отправке со статусом «Выполнение»
Tests / frontend-test (pull_request) Successful in 1m14s
Tests / frontend-test (pull_request) Successful in 1m14s
Регрессия из 0cf8359: initialSubmitStatus стала возвращать «Выполнение»
для маршрута без согласующих, но writeRoute определяла факт отправки
строгим сравнением `status === onApproval`. В результате для такой заявки:
- строки маршрута писались со статусом «Выполнение» — недопустимым для
строки значением (его нет в APPROVAL_ROW_STATUS_CHOICES) вместо
«Ждёт очереди»;
- activateNextQueued не вызывался вовсе, поэтому ни одна строка не
получала «На исполнении».
Очередь исполнителя фильтрует строки ровно по «На исполнении», поэтому
отправленные заявки в неё не попадали.
Заменено на предикат isSubmittedStatus, который покрывает все статусы,
возвращаемые initialSubmitStatus. Тест связывает эти две функции
напрямую, чтобы добавление нового статуса отправки не могло снова
разойтись с writeRoute молча.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ import { resolveRoute } from './approvalRoute.service';
|
||||
import { ApprovalListService, IApproverToWrite } from './approvalList.service';
|
||||
import { IMatrixRow } from './models/IMatrixRow';
|
||||
import { ApprovalStatus, IResolveFieldValue } from './models/IApprovalRouteApi';
|
||||
import { APPROVAL_PHASE, REQUEST_STATUS } from './models/statuses';
|
||||
import { APPROVAL_PHASE, REQUEST_STATUS, isSubmittedStatus } from './models/statuses';
|
||||
|
||||
// Планируемый маршрут для НОВОЙ заявки: resolve по email инициатора → строки матрицы.
|
||||
// status выбирает фазу: 'Approval' (согласующие, по умолчанию) или 'Execution'
|
||||
@@ -82,7 +82,11 @@ export async function writeRoute(
|
||||
// При ОТПРАВКЕ все шаги пишем «Ждёт очереди», затем активируем первый —
|
||||
// так активен ровно текущий шаг, остальные ждут. В черновике — статус заявки
|
||||
// (Черновик), без активации.
|
||||
const submitted = status === REQUEST_STATUS.onApproval;
|
||||
//
|
||||
// Именно предикат, а не `status === onApproval`: отправка маршрута без
|
||||
// согласующих даёт «Выполнение» (см. initialSubmitStatus), и при строгом
|
||||
// сравнении такая заявка не активировала ни одного шага исполнения.
|
||||
const submitted = isSubmittedStatus(status);
|
||||
const rowStatus = submitted ? REQUEST_STATUS.queued : status;
|
||||
|
||||
// Смещение фазы исполнения — по МАКСИМАЛЬНОМУ номеру шага согласующих, а не по
|
||||
|
||||
Reference in New Issue
Block a user