126 lines
6.1 KiB
Markdown
126 lines
6.1 KiB
Markdown
|
|
# Обновление проекта из судебного документа (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
|
|||
|
|
- Более надежная обработка ошибок
|