5.7 KiB
5.7 KiB
n8n S3 Migration JSON API
Описание
Скрипт n8n_s3_migration_json.php предназначен для автоматической миграции файлов из локального хранилища в S3 с выводом результатов в формате JSON для удобного парсинга в n8n.
Использование
Прямой вызов PHP
php n8n_s3_migration_json.php [LIMIT] [DRY_RUN]
Через bash wrapper
./n8n_migration_json.sh
Переменные окружения
LIMIT- количество файлов для обработки (по умолчанию: 20)DRY_RUN- режим тестирования без изменений (0/1, по умолчанию: 0)
Формат 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
}
Предупреждение (проблемные файлы)
{
"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
}
Частичная ошибка
{
"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
}
Критическая ошибка
{
"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
ssh user@server "/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/n8n_migration_json.sh"
Парсинг JSON
// В 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 задача
# Каждые 5 минут
*/5 * * * * /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/n8n_migration_json.sh
Безопасность
- Скрипт работает только с файлами типа 'I' (Internal)
- Исключает системные файлы (file_15_*, пустые имена)
- Помечает проблемные файлы вместо удаления записей
- Логирует все операции для аудита