# Сессия 26 ноября 2025 - Исправления UI Wizard ## Основные изменения ### 1. Исправлена ошибка Authentication failed в upload_documents_to_crm.php - **Проблема:** Race condition при параллельных запросах к webservice CRM - **Решение:** Добавлена функция `getWebserviceSession()` с retry механизмом (до 3 попыток) и случайной задержкой между попытками ### 2. Исправлен Wizard Plan - чекбоксы заменены на блоки загрузки - **Проблема:** Вопрос `docs_exist` показывал чекбоксы вместо полей загрузки файлов - **Решение:** - Скрыт вопрос `docs_exist` когда есть документы в плане - Добавлены блоки загрузки файлов под карточкой "Документы, которые понадобятся" ### 3. Чекбокс "У меня нет документа" перенесён под загрузку - **Было:** Чекбокс показывался отдельно сверху - **Стало:** Чекбокс внутри карточки, под Dragger (только для обязательных документов) ### 4. Блоки загрузки сразу развёрнуты - Добавлен useEffect с ref для автоматического создания блоков при загрузке плана - Используется `createdDocBlocksRef` чтобы избежать дублирования ### 5. Убраны лишние поля для предустановленных документов - Для документов из плана (contract, payment, correspondence и т.д.): - Нет поля "Уточните тип" (тип уже известен) - Нет кнопки "Удалить" для первого блока - Для дополнительных блоков - поля отображаются ### 6. Исправлено дублирование блоков - Убран дублирующий useEffect (для documentGroups) - Добавлен ref `createdDocBlocksRef` для отслеживания созданных блоков - Исправлена опечатка `React.useRef` → `useRef` ## Файлы изменены 1. `upload_documents_to_crm.php` - retry механизм для аутентификации 2. `ticket_form/frontend/src/components/form/StepWizardPlan.tsx`: - Скрытие вопроса docs_exist - Блоки загрузки под информационной карточкой - Чекбокс под Dragger - Автосоздание блоков при загрузке - Улучшенная логика isPredefinedDoc ## Коммиты 1. `Добавлен retry механизм для webservice аутентификации (race condition fix)` 2. `Заменены чекбоксы docs_exist на блоки загрузки файлов` 3. `Исправлен JSX Fragment для блоков загрузки документов` 4. `Чекбокс 'нет документа' перенесён под блок загрузки` 5. `Блоки загрузки документов сразу развёрнуты при загрузке плана` 6. `Убраны лишние поля для предустановленных документов` 7. `Убран дублирующий useEffect для создания блоков документов` 8. `Исправлено дублирование блоков документов (ref для отслеживания созданных)` 9. `Исправлен React.useRef → useRef`