Files
crm.clientright.ru/crm_extensions/file_storage/N8N_JSON_API.md

187 lines
5.7 KiB
Markdown
Raw Normal View History

# n8n S3 Migration JSON API
## Описание
Скрипт `n8n_s3_migration_json.php` предназначен для автоматической миграции файлов из локального хранилища в S3 с выводом результатов в формате JSON для удобного парсинга в n8n.
## Использование
### Прямой вызов PHP
```bash
php n8n_s3_migration_json.php [LIMIT] [DRY_RUN]
```
### Через bash wrapper
```bash
./n8n_migration_json.sh
```
### Переменные окружения
- `LIMIT` - количество файлов для обработки (по умолчанию: 20)
- `DRY_RUN` - режим тестирования без изменений (0/1, по умолчанию: 0)
## Формат JSON ответа
### Успешное выполнение
```json
{
"status": "success",
"timestamp": "2025-09-22 14:21:06",
"summary": {
"total_processed": 1,
"successfully_migrated": 1,
"failed": 0,
"marked_problematic": 0,
"dry_run": false
},
"migrated_files": [
{
"notesid": 393084,
"filename": "Отказ_от_иска_поелу__2-3265-2024_1_стр.pdf",
"s3_url": "https://s3.twcstorage.ru/...",
"s3_key": "crm2/CRM_Active_Files/Documents/393084/...",
"local_file_deleted": true
}
],
"problematic_files": [],
"exit_code": 0
}
```
### Предупреждение (проблемные файлы)
```json
{
"status": "warning",
"timestamp": "2025-09-22 14:21:06",
"summary": {
"total_processed": 2,
"successfully_migrated": 1,
"failed": 0,
"marked_problematic": 1,
"dry_run": false
},
"migrated_files": [...],
"problematic_files": [
{
"notesid": 393085,
"original_filename": "problematic_file.pdf",
"problematic_filename": "[PROBLEM_2025-09-22_14-21-06] problematic_file.pdf",
"reason": "Physical file not found"
}
],
"exit_code": 1
}
```
### Частичная ошибка
```json
{
"status": "partial_error",
"timestamp": "2025-09-22 14:21:06",
"summary": {
"total_processed": 2,
"successfully_migrated": 1,
"failed": 1,
"marked_problematic": 0,
"dry_run": false
},
"migrated_files": [...],
"problematic_files": [],
"exit_code": 2
}
```
### Критическая ошибка
```json
{
"status": "error",
"timestamp": "2025-09-22 14:21:06",
"error": "Database connection failed: ...",
"exit_code": 3
}
```
## Коды выхода
- `0` - Успех
- `1` - Предупреждение (есть проблемные файлы)
- `2` - Частичная ошибка (есть неудачные миграции)
- `3` - Критическая ошибка (проблемы с БД или S3)
## Поля ответа
### summary
- `total_processed` - общее количество обработанных файлов
- `successfully_migrated` - успешно мигрированных
- `failed` - неудачных миграций
- `marked_problematic` - помеченных как проблемные
- `dry_run` - режим тестирования
### migrated_files
Массив успешно мигрированных файлов:
- `notesid` - ID записи в БД
- `filename` - имя файла
- `s3_url` - URL в S3 (только для реальной миграции)
- `s3_key` - ключ в S3 (только для реальной миграции)
- `local_file_deleted` - удален ли локальный файл (только для реальной миграции)
- `local_file_path` - путь к локальному файлу (только для dry_run)
- `dry_run` - режим тестирования (только для dry_run)
### problematic_files
Массив проблемных файлов:
- `notesid` - ID записи в БД
- `original_filename` - оригинальное имя файла
- `problematic_filename` - новое имя с префиксом (только для реальной миграции)
- `reason` - причина проблемы
## Интеграция с n8n
### SSH Node
```bash
ssh user@server "/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/n8n_migration_json.sh"
```
### Парсинг JSON
```javascript
// В n8n JavaScript Code
const result = JSON.parse($input.all()[0].json.stdout);
if (result.status === 'success') {
return {
success: true,
migrated: result.summary.successfully_migrated,
problematic: result.summary.marked_problematic
};
} else if (result.status === 'warning') {
return {
warning: true,
migrated: result.summary.successfully_migrated,
problematic: result.problematic_files
};
} else {
return {
error: true,
message: result.error || 'Unknown error'
};
}
```
## Мониторинг
### Логи
- Основной лог: `/var/www/fastuser/data/www/crm.clientright.ru/logs/n8n_s3_migration.log`
- JSON лог: `/var/www/fastuser/data/www/crm.clientright.ru/logs/n8n_migration_json.log`
### Cron задача
```bash
# Каждые 5 минут
*/5 * * * * /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/n8n_migration_json.sh
```
## Безопасность
- Скрипт работает только с файлами типа 'I' (Internal)
- Исключает системные файлы (file_15_*, пустые имена)
- Помечает проблемные файлы вместо удаления записей
- Логирует все операции для аудита