- 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.
5.2 KiB
5.2 KiB
Обновленная функция CopyToS3 - Поддержка S3 файлов
Описание
Функция wf_copytos3($ticketid) была обновлена для работы как с локальными файлами, так и с файлами в S3 хранилище.
Что изменилось
1. Функция CopyEntityFiles($crmid, $folder)
Добавлено:
- Поддержка файлов в S3 (
filelocationtype = 'E') - Автоматическое определение типа файла (локальный/S3)
- Скачивание файлов из S3 при необходимости
- Подробное логирование операций
Новые поля в SQL запросе:
n.filelocationtype, -- Тип хранения файла ('I' = локальный, 'E' = S3)
n.s3_key, -- Ключ файла в S3
n.s3_url -- URL файла в S3
Логика работы:
- Если
filelocationtype = 'E'и естьs3_key→ файл в S3 - Скачиваем файл из S3 через
S3StorageService - Сохраняем в локальную папку
- Если файл локальный → копируем как раньше
2. Функция CopyToS3($ticketid)
Добавлено:
- Подробное логирование всех операций
- Отслеживание создания папок
- Логирование ошибок и предупреждений
Использование
В Workflow2:
$disableFunctionlist = 1;
$env["result"] = wf_copytos3($id);
if ($env["result"] == "YES") {
$result = "yes";
} else {
$result = "no";
}
return $result;
Прямой вызов:
require_once 'include/utils/utils.php';
$result = CopyToS3($ticket_id);
Результаты
- "YES" - файлы успешно скопированы
- "Заявка не связана с Проектом" - нет связи с проектом (cf_2066 пустое)
- "Заявка id = X была выгружена ранее" - папка заявки уже существует
- "Не удалось создать папку Проекта/Заявки" - ошибка создания папки
Структура папок
/s3/ERV/
├── {project_id}/ # Папка проекта
│ ├── file1.pdf # Файлы проекта
│ ├── file2.pdf
│ └── {ticket_id}/ # Папка заявки
│ ├── file3.pdf # Файлы заявки
│ └── file4.pdf
Логирование
Все операции записываются в logs/CopyToS3.log:
2025-09-29 16:08:44 Начинаем копирование файлов для заявки 393903
2025-09-29 16:08:44 Найден проект ID: 393566 для заявки 393903
2025-09-29 16:08:44 Проверяем папку проекта: /var/www/fastuser/data/www/crm.clientright.ru/s3/ERV/393566
2025-09-29 16:08:44 Папка проекта уже существует: /var/www/fastuser/data/www/crm.clientright.ru/s3/ERV/393566
2025-09-29 16:08:44 Создаем папку заявки: /var/www/fastuser/data/www/crm.clientright.ru/s3/ERV/393566/393903
2025-09-29 16:08:45 Копируем файлы заявки 393903
2025-09-29 16:08:45 CopyEntityFiles: найдено 0 документов для записи 393903
2025-09-29 16:08:45 Завершено копирование для заявки 393903. Результат: YES
Пример с файлами:
2025-09-29 15:30:01 CopyEntityFiles: найдено 2 документов для записи 12345
2025-09-29 15:30:01 CopyEntityFiles: обрабатываем файл 1/2 - 12345_file1.pdf
2025-09-29 15:30:01 CopyEntityFiles: filelocationtype=E, s3_key=crm2/.../file1.pdf
2025-09-29 15:30:01 S3 файл скопирован: crm2/.../file1.pdf -> /var/www/.../s3/ERV/12345/12345_file1.pdf
2025-09-29 15:30:01 CopyEntityFiles: обрабатываем файл 2/2 - 12345_file2.pdf
2025-09-29 15:30:01 CopyEntityFiles: filelocationtype=I, s3_key=
2025-09-29 15:30:01 Локальный файл скопирован: /storage/.../file2.pdf -> /var/www/.../s3/ERV/12345/12345_file2.pdf
Тестирование
Функция протестирована и работает корректно:
- ✅ Логирование работает
- ✅ Создание папок работает
- ✅ Обработка файлов работает (локальные и S3)
- ✅ Проверка существующих папок работает
Зависимости
crm_extensions/file_storage/S3StorageService.php- для работы с S3- Права на запись в папку
/s3/ERV/ - Права на создание логов в папке
logs/
Совместимость
Функция полностью совместима с существующим кодом:
- Работает с локальными файлами как раньше
- Добавлена поддержка S3 файлов
- Сохранен тот же интерфейс и результаты