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

126 lines
5.2 KiB
Markdown
Raw Permalink 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.

# Обновленная функция CopyToS3 - Поддержка S3 файлов
## Описание
Функция `wf_copytos3($ticketid)` была обновлена для работы как с локальными файлами, так и с файлами в S3 хранилище.
## Что изменилось
### 1. Функция `CopyEntityFiles($crmid, $folder)`
**Добавлено:**
- Поддержка файлов в S3 (`filelocationtype = 'E'`)
- Автоматическое определение типа файла (локальный/S3)
- Скачивание файлов из S3 при необходимости
- Подробное логирование операций
**Новые поля в SQL запросе:**
```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:
```php
$disableFunctionlist = 1;
$env["result"] = wf_copytos3($id);
if ($env["result"] == "YES") {
$result = "yes";
} else {
$result = "no";
}
return $result;
```
### Прямой вызов:
```php
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 файлов
- Сохранен тот же интерфейс и результаты