Files
crm.clientright.ru/ERROR_LOGGING_IMPROVEMENT.md
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- Added comprehensive AI Assistant system (aiassist/ directory):
  * Vector search and embedding capabilities
  * Typebot proxy integration
  * Elastic search functionality
  * Message classification and chat history
  * MCP proxy for external integrations

- Implemented Court Status API (GetCourtStatus.php):
  * Real-time court document status checking
  * Integration with external court systems
  * Comprehensive error handling and logging

- Enhanced S3 integration:
  * Improved file backup system with metadata
  * Batch processing capabilities
  * Enhanced error logging and recovery
  * Copy operations with URL fixing

- Added Telegram contact creation API
- Improved error logging across all modules
- Enhanced callback system for AI responses
- Extensive backup file storage with timestamps
- Updated documentation and README files

- File storage improvements:
  * Thousands of backup files with proper metadata
  * Fix operations for broken file references
  * Project-specific backup and recovery systems
  * Comprehensive file integrity checking

Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
2025-10-16 11:17:21 +03:00

214 lines
8.7 KiB
Markdown
Raw 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.

# Улучшение логирования ошибок прокси-сервера
**Дата:** 15 октября 2025
**Проблема:** Ошибка 500 от прокси-сервера без детальной информации в логах
**Статус:** ✅ Исправлено
## Проблема
При ошибке 500 от `explorer-proxy.debex.ru` в логах сохранялось только короткое сообщение:
```
2025-10-15 13:51:06 - получили ошибку при выполнении запроса:
Server error: `POST https://explorer-proxy.debex.ru/api/v3/production/sudrf`
resulted in a `500 Internal Server Error` response
```
**НО!** Прокси-сервер мог вернуть детальную информацию об ошибке в **теле ответа** (response body), которая не логировалась.
### Почему так было?
Старый код:
```php
} catch (Exception $ex) {
$output = $ex->getMessage(); // ← Только короткое сообщение!
file_put_contents('logs/send2court.log',
date('Y-m-d H:i:s').' - получили ошибку: '.$output.PHP_EOL,
FILE_APPEND);
}
```
При этом Guzzle в объекте исключения **содержит полный HTTP ответ**, включая:
- Статус код
- Заголовки
- **Тело ответа** с деталями ошибки
## Решение
Модифицирована функция `SendRequest()` в файле `/include/utils/Debexpert-guzzle.php`.
### Что добавлено
```php
} catch (Exception $ex) {
// Сохраняем короткое сообщение
$output = $ex->getMessage();
file_put_contents('logs/send2court.log',
date('Y-m-d H:i:s').' - получили ошибку: '.$output.PHP_EOL,
FILE_APPEND);
// 🔍 НОВОЕ: Извлекаем детали из ответа
if ($ex instanceof \GuzzleHttp\Exception\RequestException && $ex->hasResponse()) {
$response = $ex->getResponse();
$statusCode = $response->getStatusCode();
$responseBody = (string) $response->getBody();
// Логируем статус код
file_put_contents('logs/send2court.log',
date('Y-m-d H:i:s').' - HTTP статус код: '.$statusCode.PHP_EOL,
FILE_APPEND);
// Логируем тело ответа
file_put_contents('logs/send2court.log',
date('Y-m-d H:i:s').' - Тело ответа от сервера: '.$responseBody.PHP_EOL,
FILE_APPEND);
// Если JSON - парсим для читаемости
$jsonData = json_decode($responseBody, true);
if (json_last_error() === JSON_ERROR_NONE && !empty($jsonData)) {
file_put_contents('logs/send2court.log',
date('Y-m-d H:i:s').' - Детали ошибки (JSON): '.print_r($jsonData, true).PHP_EOL,
FILE_APPEND);
}
} else {
file_put_contents('logs/send2court.log',
date('Y-m-d H:i:s').' - Тело ответа недоступно (возможно, проблема с соединением)'.PHP_EOL,
FILE_APPEND);
}
}
```
## Что теперь будет в логах
### До исправления:
```
2025-10-15 13:51:06 - непосредственно отправляем запрос. Попытка №1
2025-10-15 13:51:06 - получили ошибку при выполнении запроса: Server error...
2025-10-15 13:51:06 - удален временный файл: /tmp/auth_doc_xxx.pdf
```
### После исправления:
```
2025-10-XX XX:XX:XX - непосредственно отправляем запрос. Попытка №1
2025-10-XX XX:XX:XX - получили ошибку при выполнении запроса: Server error...
2025-10-XX XX:XX:XX - HTTP статус код: 500
2025-10-XX XX:XX:XX - Тело ответа от сервера: {"error":"Invalid certificate format","details":"..."}
2025-10-XX XX:XX:XX - Детали ошибки (JSON): Array
(
[error] => Invalid certificate format
[details] => Certificate signature verification failed
[timestamp] => 2025-10-XX XX:XX:XX
)
2025-10-XX XX:XX:XX - удален временный файл: /tmp/auth_doc_xxx.pdf
```
## Возможные причины ошибки 500
Теперь мы сможем точно определить причину! Возможные варианты:
### 1. Проблемы с сертификатом
```json
{
"error": "Certificate validation failed",
"details": "Invalid signature or expired certificate"
}
```
**Решение:** Проверить актуальность сертификата в БД
### 2. Проблемы с форматом данных
```json
{
"error": "Invalid request format",
"field": "fillData.appealDocument.pagesCount",
"message": "Expected integer, got string"
}
```
**Решение:** Исправить формат данных в запросе
### 3. Превышение лимитов
```json
{
"error": "Request too large",
"size": "15MB",
"limit": "10MB"
}
```
**Решение:** Оптимизировать размер файлов
### 4. Проблемы на стороне сервера
```json
{
"error": "Internal server error",
"message": "Temporary unavailable, please retry later"
}
```
**Решение:** Повторить запрос позже или связаться с техподдержкой
### 5. Проблемы с авторизацией
```json
{
"error": "Authentication failed",
"message": "Invalid or expired session cookies"
}
```
**Решение:** Обновить cookies
## Результаты проверки
**Дата:** 15 октября 2025, 16:41-16:43
**Проект:** 390657 (Агеев / ООО СКИЛБОКС)
### ✅ Проблема ошибки 500 РЕШЕНА!
Оказалось, что **ошибка 500 была следствием проблемы со скачиванием файлов с `#`**:
1. **До исправления:**
- 5 файлов с `#` в имени не скачивались (HTTP 403)
- В суд отправлялось только 16 из 21 файлов
- Прокси-сервер обнаруживал несоответствие (JSON указывает 21 файл, реально 16)
- **Результат: ошибка 500** ❌
2. **После исправления:**
- Все 21 файл скачались успешно (# → %23)
- Полный пакет документов отправлен в суд
- **Результат: получен регистрационный номер 41RS0001-201-25-0001140** ✅
### Вывод
Улучшенное логирование реализовано и готово к использованию, но в данном конкретном случае не потребовалось - **исправление URL-кодирования решило обе проблемы**.
При возникновении **новых** ошибок 500 в будущем, улучшенное логирование поможет быстро диагностировать причину.
## Как протестировать
Чтобы сразу увидеть детали, можно:
1. **Запустить Send2Court вручную** для проблемного проекта:
```bash
php Send2Court.php?id=390657&processType=201.01&version=Prod
```
2. **Проверить логи** после ошибки:
```bash
tail -n 50 logs/send2court.log | grep -A 10 "получили ошибку"
```
3. **Найти строки с деталями:**
- "HTTP статус код:"
- "Тело ответа от сервера:"
- "Детали ошибки (JSON):"
## Преимущества
✅ **Полная диагностика** - видим точную причину ошибки
✅ **Быстрое решение** - не нужно гадать, что пошло не так
✅ **История проблем** - все детали сохраняются в логах
✅ **Обратная совместимость** - работает со всеми типами ответов
---
**Примечание:** Это дополняет исправление с URL-кодированием символа `#`. Теперь у нас есть:
1. Исправление проблемы со скачиванием файлов (SEND2COURT_S3_URL_FIX.md)
2. Детальное логирование ошибок от прокси-сервера (этот документ)