Files
crm.clientright.ru/SEND2COURT_FIXES.md

122 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

# Исправления 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)
**Статус:** ✅ Готово к тестированию