fix:передаю условия маршрута по компании в resolve и починил пагинацию /Project
Tests / frontend-test (push) Failing after 14s

This commit is contained in:
Тимур Городецкий
2026-08-25 15:50:27 +05:00
parent cf1bc0ec1f
commit f751f03060
5 changed files with 74 additions and 19 deletions
@@ -116,17 +116,29 @@ const RecruitingSelectionForm: React.FC<IRequestFormProps> = ({
// Новая заявка: матрицу резолвим только когда есть и тип, и проект — иначе
// 404 «маршрут не найден». При редактировании читаем уже записанные строки.
const matrixReady = !!editId || (!!projectId && !!requestTypeId);
// Условные шаги маршрута (см. [[request-portal-fieldvalues-routing]] — тот же
// разбор на RecruitingHire): fieldName = internalName колонки. Companies —
// мультивыбор → ОДНА запись fieldValues, value — имена выбранных компаний
// ЧЕРЕЗ ПРОБЕЛ (не JSON, не массив — ResolveFieldValueDto на бэкенде
// принимает только строку, массив даёт 400). ObjectProject — текст названия
// проекта (не ObjectProjectId/GUID, тот уже уходит отдельным параметром projectId).
const companiesFieldValue = data.Companies.map((c) => c.Name).sort().join(' ');
const fieldValues = useMemo(() => {
const companies = companiesFieldValue ? [{ fieldName: 'CompaniesJson', value: companiesFieldValue }] : [];
return data.ObjectProject ? [...companies, { fieldName: 'ObjectProject', value: data.ObjectProject }] : companies;
// eslint-disable-next-line react-hooks/exhaustive-deps -- companiesFieldValue — стабильный слепок data.Companies
}, [companiesFieldValue, data.ObjectProject]);
const loadMatrix = useCallback(
() =>
editId
? approval.getMatrixForRequest(editId)
: getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval', null, undefined, projectId),
[context, userEmail, approval, editId, requestTypeId, projectId]
: getPlannedMatrix(context, requestTypeId as number, userEmail, approval, 'Approval', null, fieldValues, projectId),
[context, userEmail, approval, editId, requestTypeId, fieldValues, projectId]
);
const matrix = useMatrixEditor(
loadMatrix,
// projectId в ключе → при смене проекта маршрут перезапрашивается.
`${userEmail}-${editId ?? 'new'}-${projectId}`,
// projectId/companies в ключе → при их смене маршрут перезапрашивается.
`${userEmail}-${editId ?? 'new'}-${projectId}-${companiesFieldValue}`,
!readOnly,
matrixReady,
(login) => approval.getJobTitle(login)