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

5.7 KiB
Raw Blame History

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_*, пустые имена)
  • Помечает проблемные файлы вместо удаления записей
  • Логирует все операции для аудита