Files
crm.clientright.ru/SEND2COURT_FIXES.md
Fedor 9245768987 🚀 CRM Files Migration & Real-time Features
 Features:
- Migrated ALL files to new S3 structure (Projects, Contacts, Accounts, HelpDesk, Invoice, etc.)
- Added Nextcloud folder buttons to ALL modules
- Fixed Nextcloud editor integration
- WebSocket server for real-time updates
- Redis Pub/Sub integration
- File path manager for organized storage
- Redis caching for performance (Functions.php)

📁 New Structure:
Documents/Project/ProjectName_ID/file_docID.ext
Documents/Contacts/FirstName_LastName_ID/file_docID.ext
Documents/Accounts/AccountName_ID/file_docID.ext

🔧 Technical:
- FilePathManager for standardized paths
- S3StorageService integration
- WebSocket server (Node.js + Docker)
- Redis cache for getBasicModuleInfo()
- Predis library for Redis connectivity

📝 Scripts:
- Migration scripts for all modules
- Test pages for WebSocket/SSE/Polling
- Documentation (MIGRATION_*.md, REDIS_*.md)

🎯 Result: 15,000+ files migrated successfully!
2025-10-24 19:59:28 +03:00

122 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Исправления Send2Court - 23 октября 2025
## Проблемы, которые были исправлены
### 🔴 Проблема №1: HTTP 500 - Invalid Control Characters
**Ошибка:** `Specified value has invalid Control characters. (Parameter 'value')`
**Причина:** В адресах из базы данных присутствовали HTML entities (`—`, ` `, `"` и т.д.), которые попадали в JSON и отправлялись в API debex.ru. Сервер не мог обработать эти символы и возвращал ошибку 500.
**Пример проблемного адреса:**
```
362047, Республика Северная Осетия — Алания, Владикавказ...
```
**Решение:** Добавлено декодирование HTML entities с помощью функции `html_entity_decode()` для всех текстовых полей перед отправкой в API:
- `courtNoticesAddress` - адрес для судебных уведомлений
- `legalAddress` - юридический адрес
- `actualResidenceAddress` - фактический адрес
- `name` - название организации
- Адреса, используемые для поиска суда
**Изменения в коде:**
```php
// Было:
$data['mySelfAdditionalData']['courtNoticesAddress'] = $adb->query_result($result, 0, 'addr_notice');
// Стало:
$data['mySelfAdditionalData']['courtNoticesAddress'] = html_entity_decode($adb->query_result($result, 0, 'addr_notice'), ENT_QUOTES | ENT_HTML5, 'UTF-8');
```
---
### 🔴 Проблема №2: HTTP 403 при скачивании файлов из S3
**Ошибка:** `ошибка скачивания файла из S3, HTTP код: 403`
**Причина:** В именах файлов на S3 присутствовали специальные символы:
- `#` (хештег) - интерпретируется как якорь URL
- Пробелы
- Кириллица в именах файлов
- Другие спецсимволы
**Пример проблемного URL:**
```
https://s3.twcstorage.ru/.../8_Договора_оказание_услуг_09-04-2025-13-52-43_Чужба_10_CTP#realfile.pdf
```
**Решение:** Переписана функция `getTempFileFromS3()` с правильным кодированием URL:
1. URL разбирается на части с помощью `parse_url()`
2. Путь разбивается на сегменты по `/`
3. Каждый сегмент кодируется с помощью `rawurlencode()`
4. URL собирается обратно
Теперь символы правильно кодируются:
- `#``%23`
- Пробел → `%20`
- Кириллица → правильные UTF-8 последовательности
**Изменения в коде:**
```php
// Было:
$s3Url = str_replace('#', '%23', $s3Url);
$s3Url = str_replace(' ', '%20', $s3Url);
// Стало:
$urlParts = parse_url($s3Url);
$path = isset($urlParts['path']) ? $urlParts['path'] : '';
$pathSegments = explode('/', $path);
$encodedSegments = array_map(function($segment) {
return rawurlencode($segment);
}, $pathSegments);
$encodedPath = implode('/', $encodedSegments);
$s3Url = $urlParts['scheme'] . '://' . $urlParts['host'] . $encodedPath;
```
---
## Дополнительные улучшения
### Улучшенное логирование
- Добавлен вывод размера скачанного файла
- Добавлен вывод CURL ошибок при проблемах со скачиванием
- Улучшены сообщения в логах для лучшей диагностики
### Проверка валидности данных
- Добавлена проверка корректности URL перед попыткой скачивания
- Добавлена проверка, что файл не пустой перед сохранением
---
## Файлы, которые были изменены
- `/var/www/fastuser/data/www/crm.clientright.ru/include/utils/Debexpert-guzzle.php`
- Функция `Send2Court()` - добавлено декодирование HTML entities
- Функция `getCourt()` - добавлено декодирование HTML entities в адресах
- Функция `getTempFileFromS3()` - переписана с правильным кодированием URL
---
## Тестирование
После внедрения исправлений необходимо протестировать отправку:
1. Искового с адресом, содержащим HTML entities (`—`, ` ` и т.д.)
2. Проекта с файлами на S3, содержащими `#` или другие спецсимволы в имени
3. Проекта с кириллицей в именах файлов на S3
---
## Мониторинг
Проверять логи после отправки на наличие:
-`HTTP статус код: 500` + `Invalid Control characters`
-`ошибка скачивания файла из S3, HTTP код: 403`
-`файл сохранен во временную папку` + размер файла
-`получили ответ на запрос` + номер дела
---
**Дата исправления:** 23 октября 2025
**Автор:** AI Assistant (Claude)
**Статус:** ✅ Готово к тестированию