Commit Graph

34 Commits

Author SHA1 Message Date
Fedor
3d9669dd8e fix: настройка подключения MySQL CRM из Docker контейнера
- Изменён docker-compose.yml: добавлен network_mode: host для доступа к MySQL на хосте
- Обновлён config.py: mysql_crm_host = localhost (работает в режиме host)
- MySQL CRM теперь успешно подключается из контейнера
2025-12-03 18:08:05 +03:00
Fedor
6a9f8b5465 docs: обновлён лог сессии 2025-12-03
- Получение cf_2624 из MySQL при загрузке черновика
- Исправление подключения MySQL CRM из Docker контейнера
- Блокировка редактирования полей при contact_data_confirmed=true
- Выбор банка для СБП выплат
- Все проблемы решены, система работает корректно
2025-12-03 18:07:53 +03:00
Fedor
a86120dd53 fix: передача contact_data_confirmed в StepClaimConfirmation для блокировки полей
- Добавлен prop contact_data_confirmed в StepClaimConfirmation
- Передача флага из formData.contact_data_confirmed в компонент
- Исправлена логика получения флага (приоритет: props > claimPlanData > false)
- Поля должны блокироваться при contact_data_confirmed=true
2025-12-03 18:04:08 +03:00
Fedor
e114231541 feat: Получение cf_2624 из MySQL при загрузке черновика
- Добавлен сервис CrmMySQLService для подключения к MySQL БД vtiger CRM
- Обновлён get_draft() для прямого SQL запроса к MySQL вместо webservice API
- Получение cf_2624 и всех данных контакта из MySQL
- Обновлена документация и SQL файлы для n8n
- Добавлено логирование для отладки

Преимущества:
- Проще: один SQL запрос вместо цепочки HTTP запросов
- Быстрее: прямой запрос к БД
- Надёжнее: не зависит от webservice API
- Актуальнее: всегда свежие данные из БД
2025-12-03 16:04:25 +03:00
Fedor
b7197e0da5 feat(forms): автоподстановка банков и улучшенная обработка телефона
- Step1Phone: добавлена обработка вставки телефона с автоматической очисткой от +7 и обрезкой до 10 цифр
- Step3Payment: заменён Select на AutoComplete для выбора банка с автоподстановкой
- generateConfirmationFormHTML: заменён select на input с datalist для автоподстановки банков в форме подтверждения
- Добавлены скрытые поля bank_id для сохранения ID банка отдельно от названия
- Добавлены файлы для проверки заявки 226564ce

Улучшения UX:
- Пользователь может вводить название банка вместо прокрутки длинного списка
- Автоматическая фильтрация списка банков при вводе
- Предупреждение при обрезке номера телефона при вставке
2025-12-02 17:12:25 +03:00
Fedor
ee1c4af5c3 feat: добавлен выбор банка для СБП выплат
Frontend:
- Динамическая загрузка 226 банков из NSPK API
- Выбор банка добавлен в Step3Payment (новая заявка)
- Выбор банка добавлен в generateConfirmationFormHTML (редактирование)
- Поля: bank_id (ID из NSPK) и bank_name (название для отображения)

Backend:
- Добавлено поле bank_id в ClaimCreateRequest

API:
- http://212.193.27.93/api/payouts/dictionaries/nspk-banks

Изменения:
- ticket_form/frontend/src/components/form/Step3Payment.tsx
- ticket_form/frontend/src/components/form/generateConfirmationFormHTML.ts
- ticket_form/frontend/src/pages/ClaimForm.tsx
- ticket_form/backend/app/api/models.py
2025-12-02 11:06:15 +03:00
Fedor
834520a045 docs: add session log 2025-12-01 2025-12-01 22:19:31 +03:00
Fedor
da82100b60 feat: UI/UX improvements + CRM integration methods + documents_meta deduplication
Frontend:
- Changed main title to 'Подать обращение о защите прав потребителя'
- Changed browser title to 'Clientright — защита прав потребителей'
- Enhanced draft cards: show problem_description (250 chars), category tag, document progress bar
- Fixed 'Назад' button to always return to draft selection
- Added SSE connection for OCR status updates
- Renamed steps: Вход, Обращение, Документы, Заявление
- Skip 'Проверка полиса' and 'Тип события' steps for new claim flow

Backend:
- Fixed client IP extraction (X-Forwarded-For, X-Real-IP)
- Added problem_title, category, documents_required_list to draft list API
- Fixed documents_uploaded count to count unique field_labels

CRM Webservices:
- Added UpsertContact.php - create/update contacts with tgid support
- Added UpsertAccounts.php - batch upsert offenders by INN
- Added UpsertProject.php - create/update projects with offender mapping

Database:
- Fixed documents_meta duplicates in existing claims
- SQL query for deduplication by field_name provided
2025-12-01 22:18:21 +03:00
Fedor
81acd49fd9 feat(frontend): использование form_draft для формы подтверждения
- StepDraftSelection: кнопка 'Продолжить' активна для draft_docs_complete
- ClaimForm: проверка form_draft при загрузке черновика
- Если есть form_draft — преобразуем в propertyName и показываем форму подтверждения
- Поддержка статуса draft_docs_complete для перехода к подтверждению
2025-11-30 11:45:35 +03:00
Fedor
0f8631bf20 fix(backend): исправлен алгоритм hash для совместимости с JS
- Использован ctypes.c_int32 для эмуляции JS 32-битного сдвига
- Теперь Python hash совпадает с JS hash в n8n
- Кэширование form_draft работает корректно
2025-11-30 11:37:16 +03:00
Fedor
3801bc4949 feat(backend): кэширование form_draft в check-ocr-status
- Добавлена проверка наличия черновика в БД перед запуском RAG
- Если documents_hash совпадает — возвращаем черновик из кэша
- Если черновика нет или он устарел — запускаем RAG workflow
- Добавлен параметр force_refresh для принудительного обновления
- Импортирован db сервис для работы с PostgreSQL
2025-11-30 11:30:36 +03:00
Fedor
985ee23810 feat(n8n): RAG workflow для извлечения данных из документов
- Обновлён Code1: нормализация данных из give_data1 с поддержкой payload.applicant, ai_analysis, wizard_plan
- Обновлён Code6: генерация промптов для RAG (user, project, offenders)
- Добавлена документация по настройке n8n нод для OCR статуса
- Добавлен эндпоинт check-ocr-status в documents.py
- Добавлен лог сессии с полным описанием workflow

Workflow itX62h38faB51y9J успешно извлекает:
- Данные пользователя (ФИО, контакты, адрес)
- Данные проекта (сумма, предмет, даты договора)
- Несколько контрагентов с разными ролями (seller, service_provider)
2025-11-29 19:29:14 +03:00
Fedor
840acca51a feat(documents): дедупликация documents_meta и исправление field_label
- Исправлен N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js: использовать uploads_field_labels[0] вместо [grp]
- Создан SQL_CLAIMSAVE_FIXED_NEW_FLOW_DEDUP.sql с дедупликацией documents_meta
- Создан SQL_CLEANUP_DOCUMENTS_META_DUPLICATES.sql для очистки существующих дубликатов
- Создан полный уникальный индекс idx_document_texts_hash_unique на document_texts(file_hash)
- Добавлен SESSION_LOG_2025-11-28_documents_dedup.md с описанием всех изменений

Fixes:
- field_label теперь корректно отображает 'Переписка' вместо 'group-2'
- documents_meta не накапливает дубликаты при повторных сохранениях
- ON CONFLICT (file_hash) теперь работает для document_texts
2025-11-28 18:16:53 +03:00
Fedor
6c770f0a87 feat(ticket_form): Новая архитектура загрузки документов
- StepDocumentsNew.tsx: поэкранная загрузка документов
- StepWaitingClaim.tsx: ожидание формирования заявления с SSE
- StepDraftSelection.tsx: поддержка новых статусов черновиков
- documents.py: API для загрузки документов
- NEW_FLOW_ARCHITECTURE.md: документация новой архитектуры

Флоу: Description → Documents → Waiting → Claim Review → SMS
Статусы: draft_new, draft_docs_progress, draft_docs_complete, draft_claim_ready
2025-11-26 12:52:54 +03:00
Fedor
0868d37484 Сессия 26.11.2025: Исправления UI Wizard - блоки загрузки, retry аутентификации 2025-11-25 23:42:32 +03:00
Fedor
55c1402d99 Исправлен React.useRef → useRef 2025-11-25 23:38:24 +03:00
Fedor
18fcdecae8 Исправлено дублирование блоков документов (ref для отслеживания созданных) 2025-11-25 23:36:32 +03:00
Fedor
f058ca91ad Убран дублирующий useEffect для создания блоков документов 2025-11-25 23:33:59 +03:00
Fedor
796316d969 Убраны лишние поля для предустановленных документов (description, кнопка Удалить) 2025-11-25 23:31:40 +03:00
Fedor
f3b5771c09 Блоки загрузки документов сразу развёрнуты при загрузке плана 2025-11-25 23:28:36 +03:00
Fedor
2ce0c585ff Чекбокс 'нет документа' перенесён под блок загрузки 2025-11-25 23:26:20 +03:00
Fedor
6cc07b0ba6 Исправлен JSX Fragment для блоков загрузки документов 2025-11-25 23:22:34 +03:00
Fedor
b5478c143f Заменены чекбоксы docs_exist на блоки загрузки файлов 2025-11-25 23:20:33 +03:00
Fedor
2b1dca9e92 Автогенерация уникального описания для дополнительных блоков документов 2025-11-25 21:22:11 +03:00
Fedor
99ef902a31 Показываем поле описания для всех блоков если блоков > 1 2025-11-25 21:20:48 +03:00
Fedor
8626c9aff4 Автоматическая нумерация дубликатов field_label при отправке визарда 2025-11-25 21:12:30 +03:00
Fedor
444e5d2b91 Добавлен лог отправляемых метаданных документов (field_label) 2025-11-25 20:53:19 +03:00
Fedor
8f4cff55e9 Добавлен полный лог диалога за 22 ноября 2025 2025-11-25 20:46:59 +03:00
Fedor
52fe013375 feat(ticket_form): unified_id/contact_id передача, исправлен мерж сессии, новая сессия для жалобы
- Добавлены unified_id и contact_id в TicketFormDescriptionRequest
- Исправлен CODE_MERGE_PROJECT_TO_SESSION.js - теперь сохраняются ВСЕ данные из body.other
- Добавлен fallback на получение other из Webhook напрямую
- Генерация новой session_id при создании новой жалобы (сохраняя авторизацию)
- Добавлен SQL_SELECT_CONTACT_WITH_CUSTOM_FIELDS.sql для CRM контактов
- Создан SESSION_LOG_2025-11-25.md с документацией сессии
2025-11-25 20:02:21 +03:00
Fedor
a20a4d0e09 Добавлен лог сессии 2025-11-22 2025-11-22 09:40:14 +03:00
Fedor
486f3619ff Добавлен field_label в результат переименования файлов, исправлена загрузка черновиков, обновлен формат пути S3 с project_name 2025-11-22 09:38:38 +03:00
Fedor
30a0df9c64 docs: добавлен лог сессии 19.11.2025 2025-11-20 00:39:04 +03:00
Fedor
d2f37faa7b fix: убран claim_id, используется только session_id на ранних этапах
- Убрана проверка claim_id из StepDescription.tsx
- Заменен claim_id на session_id в StepWizardPlan.tsx для SSE подключения
- Убран claim_id из запросов к API и сохранения в Step1Phone
- Обновлен backend для работы с опциональным claim_id
- Добавлена документация по исправлению узла claimsave для первичного черновика
- Добавлены SQL запросы и примеры кода для n8n workflow
2025-11-20 00:38:33 +03:00
Fedor
de011efba9 fix: исправлен конфликт имён переменных в loadDraft (claimId -> finalClaimId)
- Исправлена ошибка ReferenceError при загрузке черновиков
- Переименована локальная переменная claimId в finalClaimId для избежания конфликта с параметром функции
- Обновлена логика извлечения claim_id из разных источников (claim.claim_id, payload.claim_id, body.claim_id, claim.id)
- Добавлен fallback на параметр claimId функции для надёжности
2025-11-19 23:33:52 +03:00