Навигация через goToStep (хлебные крошки) переключает шаг, не вызывая
per-step save, поэтому локальный стейт, который писался в formData только
по кнопке «Сохранить и продолжить», терялся при переходе на другой шаг.
- Шаг 2: поставщики без КП теперь гидратируются из formData и пишутся
в formData.suppliers сразу при изменении (а не только в persistStep2).
- Шаг 2: курсы валют пишутся в formData при каждой правке.
- Шаг 2: поставщик с КП и его офферы (с валютой файла) пишутся в formData
инкрементально при завершении обработки КП, иначе загруженный после
первого сохранения поставщик не попадал колонкой в таблицу шага 3.
Построение поставщиков/офферов вынесено в общую buildKpSuppliersAndOffers.
- Шаг 4: переупорядочивание согласующих (moveMember) пишет порядок
в formData сразу, иначе он сбрасывался при переходе на другой шаг.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Перенос, декомпозиция и перекраска форм CT/KPS/OID на @tnsu/ui-kit,
config-driven дашборд-реестр по трём типам документов. Из отслеживания
исключены артефакты сборки (lib-commonjs/jest-output/release) — забыты
в .gitignore ранее.