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

5.2 KiB
Raw Blame History

Обновленная функция 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

Логика работы:

  1. Если filelocationtype = 'E' и есть s3_key → файл в S3
  2. Скачиваем файл из S3 через S3StorageService
  3. Сохраняем в локальную папку
  4. Если файл локальный → копируем как раньше

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 файлов
  • Сохранен тот же интерфейс и результаты