Files
crm.clientright.ru/SEND2COURT_S3_URL_FIX.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

119 lines
5.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# Исправление проблемы с символом # в URL файлов S3
**Дата:** 15 октября 2025
**Проблема:** Ошибка 403 при скачивании файлов из S3 с символом `#` в имени
**Статус:** ✅ Исправлено
## Описание проблемы
При отправке документов в суд через скрипт `Send2Court.php` возникала ошибка 403 при скачивании некоторых файлов из S3:
```
2025-10-15 15:00:07 - ошибка скачивания файла из S3, HTTP код: 403
URL: .../8_Договора_оказание_услуг_08-27-2025-15-47-39_Агеев__13_CTP#realfile.pdf
```
### Причина
Символ `#` в URL интерпретируется браузерами и curl как **якорь** (anchor/fragment identifier). Всё после `#` считается частью фрагмента URL и не отправляется на сервер. Например:
- URL: `https://s3.example.com/file#realfile.pdf`
- Сервер получает: `https://s3.example.com/file`
Из-за этого S3 не мог найти файл и возвращал ошибку 403.
## Решение
Модифицирована функция `getTempFileFromS3()` в файле `/include/utils/Debexpert-guzzle.php`:
### Что изменено
1. **Автоматическая замена проблемных символов:**
- `#``%23` (URL-кодированная версия)
- ` ` (пробел) → `%20`
2. **Улучшенное логирование:**
- Логируется исходный URL
- Если URL был изменён, логируется исправленная версия
- Легче отслеживать проблемы
### Пример работы
**До исправления:**
```
URL: https://s3.twcstorage.ru/bucket/file_CTP#realfile.pdf
Результат: ❌ HTTP 403
```
**После исправления:**
```
Исходный URL: https://s3.twcstorage.ru/bucket/file_CTP#realfile.pdf
Исправленный: https://s3.twcstorage.ru/bucket/file_CTP%23realfile.pdf
Результат: ✅ HTTP 200
```
## Затронутые файлы
-`/include/utils/Debexpert-guzzle.php` - функция `getTempFileFromS3()` обновлена
- `/include/utils/Letters.php` - уже имеет обработку `#realfile` (другая сигнатура функции)
## Дополнительные преимущества
- Исправление работает автоматически, **не требует изменений в БД**
- Обрабатывает не только `#`, но и пробелы
- Логирование помогает отслеживать исправления
- Совместимо со старыми URL без проблемных символов
## Рекомендации
### Для будущего
Рекомендуется при загрузке файлов в S3 **сразу очищать имена файлов** от проблемных символов:
- Заменять `#` на `-` или `_`
- Убирать или заменять пробелы на `_`
- Избегать других спецсимволов: `&`, `?`, `%`, и т.д.
### Мониторинг
После внедрения исправления в логах `logs/send2court.log` появятся записи:
```
2025-10-15 15:00:07 - скачиваем файл из S3 (исходный URL): .../file#test.pdf
2025-10-15 15:00:07 - URL исправлен для корректной загрузки: .../file%23test.pdf
```
Это нормальное поведение и подтверждает, что исправление работает.
## Результаты проверки
**Дата:** 15 октября 2025, 16:41-16:43
**Проект:** 390657 (Агеев / ООО СКИЛБОКС)
### ✅ Исправление работает идеально!
Все 5 проблемных файлов скачались успешно:
```
2025-10-15 16:41:23 - скачиваем файл из S3 (исходный URL): ...CTP#realfile.pdf
2025-10-15 16:41:23 - URL исправлен для корректной загрузки: ...CTP%23realfile.pdf
2025-10-15 16:41:23 - файл сохранен во временную папку: /tmp/other_doc_0_1760535683.pdf
```
**Скачанные файлы:**
1. ✅ 8_Договора_оказание_услуг...CTP#realfile.pdf
2. ✅ 9_Подтверждение_оплаты...CTP#realfile.pdf
3. ✅ 10_1_Скрин_личногоабинета...CTP#realfile.pdf
4. ✅ 11_1_Подтверждение_претензионной_работы...CTP#realfile.pdf
5. ✅ 11_2_Подтверждение_претензионной_работы...CTP#realfile.pdf
### 🎯 Бонус: решена проблема ошибки 500!
Оказалось, что **ошибка 500 от прокси-сервера возникала из-за этих недостающих файлов**:
- JSON указывал 21 файл, но реально отправлялось только 16
- Система обнаруживала несоответствие и возвращала ошибку 500
- После исправления все 21 файл загрузились → получен номер **41RS0001-201-25-0001140**
---
**Статус:** ✅ Проблема полностью решена и проверена на реальном проекте