# Обновление проекта из судебного документа (v2) ## Описание Скрипт для автоматического обновления проекта в CRM на основе данных из судебного документа с использованием прямых SQL запросов и S3Client. ## Использование ### 1. Через stdin (рекомендуется) ```bash echo '[{"content": {...}, "file": "...", "file_name": "..."}]' | php simple_project_updater_v2.php ``` ### 2. Из n8n через SSH ```bash ssh user@server "cd /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions && echo '$(printf '%s' '{{ $json | toJson }}')' | php simple_project_updater_v2.php" ``` ### 3. Прямой вызов с JSON ```bash php simple_project_updater_v2.php << 'EOF' [{"content": {"description": "Определение судьи...", "case_number": "М-5071/2025", "court": "Щелковский городской суд Московской области", "plaintiff_fio": "Соколов Александр Владимирович", "uid": "50RS0052-01-2025-007323-70", "document_title": "ОПРЕДЕЛЕНИЕ"}, "file": "https://s3.twcstorage.ru/.../document.pdf", "file_name": "document.pdf"}] EOF ``` ## Формат входных данных ```json [ { "content": { "description": "Описание документа", "case_number": "М-5071/2025", "writ_number": null, "court": "Щелковский городской суд Московской области", "plaintiff_fio": "Соколов Александр Владимирович", "defendant_fio": null, "uid": "50RS0052-01-2025-007323-70", "document_title": "ОПРЕДЕЛЕНИЕ" }, "file": "https://s3.twcstorage.ru/.../document.pdf", "file_name": "document.pdf" } ] ``` ## Функциональность ### 1. Поиск проекта - По ФИО истца в названии проекта или описании - По номеру дела в номере проекта или описании - По УИД в описании - По названию суда в кастомных полях (cf_1499, cf_2278) ### 2. Создание документа - Прямые SQL запросы к vtiger_crmentity и vtiger_notes - Автоматическое обновление vtiger_crmentity_seq - Формирование полного S3 URL в поле filename ### 3. Загрузка в S3 - Использование S3Client с авторизацией - Скачивание файла по URL - Загрузка в S3 с правильным ключом - Обновление метаданных (s3_bucket, s3_key, s3_etag, filesize) ### 4. Привязка к проекту - Создание связи в vtiger_senotesrel - Логирование всех действий ## Логирование Все действия записываются в файл `logs/project_update.log` ## Пример использования ```bash # Тестовый запуск echo '[{ "content": { "description": "Определение судьи Щелковского городского суда Московской области Т.И. Пикулевой от 26 августа 2025 года о возврате искового заявления МОО «Клиентправ», действующего в интересах Соколова Александра Владимировича, к ООО «СКИЛБОКС» о взыскании денежных средств, неустойки, процентов, штрафа, компенсации морального вреда. Исковое заявление оставлено без движения 16 июля 2025 года, недостатки в срок не устранены, заявление возвращается. Разъяснено право на повторное обращение. Определение может быть обжаловано в Московский областной суд в течение 15 дней.", "case_number": "М-5071/2025", "court": "Щелковский городской суд Московской области", "plaintiff_fio": "Соколов Александр Владимирович", "uid": "50RS0052-01-2025-007323-70", "document_title": "ОПРЕДЕЛЕНИЕ" }, "file": "https://s3.twcstorage.ru/f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c/letters/58f29988-faac-4a2f-b9c1-41a2441240d6/ПК_e9572340-f3d0-0c4c-310b-edeb2996fd47.pdf_WITH_ENVELOPE.pdf", "file_name": "ПК_e9572340-f3d0-0c4c-310b-edeb2996fd47.pdf_WITH_ENVELOPE.pdf" }]' | php simple_project_updater_v2.php ``` ## Формат ответа ```json { "success": true, "project_id": 58462, "plaintiff_fio": "Соколов", "case_number": "М-5071/2025", "uid": "50RS0052-01-2025-007323-70", "document_id": "394196", "document_ws_id": "15x394196", "s3_url": null, "message": "Документ успешно создан через CRM API и добавлен к проекту" } ``` ## Обработка ошибок - Валидация входных данных - Проверка существования проекта - Обработка ошибок загрузки файлов - Детальное логирование ошибок - Автоматическое обновление последовательности ID ## Требования - PHP 7.4+ - Доступ к базе данных CRM - Права на запись в директорию логов - Доступ к S3 хранилищу через S3Client - Файл конфигурации .env с S3 credentials ## Отличия от v1 - Использует прямые SQL запросы вместо CRM API - Интегрирован с S3Client для загрузки файлов - Автоматически обновляет vtiger_crmentity_seq - Сохраняет полный S3 URL в поле filename - Более надежная обработка ошибок