fix: Исправление загрузки документов и SQL запросов

- Исправлена потеря документов при обновлении черновика (SQL объединяет вместо перезаписи)
- Исправлено определение типа документа (приоритет field_label над field_name)
- Исправлены дубликаты в documents_meta и documents_uploaded
- Добавлена передача group_index с фронтенда для правильного field_name
- Исправлены все документы в таблице clpr_claim_documents с правильными field_name
- Обновлены SQL запросы: claimsave и claimsave_final для нового флоу
- Добавлена поддержка multi-file upload для одного документа
- Исправлены дубликаты в списке загруженных документов на фронтенде

Файлы:
- SQL: SQL_CLAIMSAVE_FIXED_NEW_FLOW.sql, SQL_CLAIMSAVE_FINAL_FIXED_NEW_FLOW_WITH_UPLOADED.sql
- n8n: N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js (поддержка group_index)
- Backend: documents.py (передача group_index в n8n)
- Frontend: StepWizardPlan.tsx (передача group_index, исправление дубликатов)
- Скрипты: fix_claim_documents_field_names.py, fix_documents_meta_duplicates.py

Результат: документы больше не теряются, имеют правильные типы и field_name
This commit is contained in:
AI Assistant
2025-11-26 19:54:51 +03:00
parent 1d6c9d1f52
commit 02689e65db
42 changed files with 8314 additions and 232 deletions

View File

@@ -0,0 +1,55 @@
# Сессия 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`