Изменения: ✅ Новый endpoint: POST /api/n8n/documents/attach ✅ Поддерживает привязку к Project или HelpDesk ✅ Логика: если указан ticket_id → HelpDesk, иначе → Project ✅ Полное логирование всех операций ✅ Интеграция с upload_documents_to_crm.php Входные данные: - contact_id (обязательно) - project_id (обязательно) - file_url (обязательно) - file_name (обязательно) - ticket_id (опционально, для привязки к заявке) - file_type (опционально, описание документа) Готово к интеграции в n8n workflow!
3.8 KiB
3.8 KiB
📎 Тестирование привязки документов к проекту/заявке
Эндпоинт
POST https://crm.clientright.ru/api/n8n/documents/attach
📋 Входные данные
Обязательные поля:
contact_id- ID контактаproject_id- ID проектаfile_url- URL файла в S3file_name- Имя файла
Опциональные поля:
ticket_id- ID заявки (если указан → привязываем к заявке)file_type- Описание документа (например: "flight_delay_boarding_or_ticket")
🧪 Тест 1: Привязка к проекту
curl -X POST "https://crm.clientright.ru/api/n8n/documents/attach" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "320096",
"project_id": "396874",
"file_url": "https://s3.twcstorage.ru/f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c/clientright/test/test_document.pdf",
"file_name": "boarding_pass.pdf",
"file_type": "flight_delay_boarding_or_ticket"
}'
Ожидаемый результат:
{
"success": true,
"result": {
"document_id": "15x396940",
"document_numeric_id": "396940",
"attached_to": "project",
"attached_to_id": "396874",
"file_name": "boarding_pass.pdf",
"file_type": "flight_delay_boarding_or_ticket",
"s3_bucket": "f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c",
"s3_key": "clientright/test/test_document.pdf",
"file_size": 12345,
"message": "Документ создан с правильными S3 метаданными и привязан к проекту"
}
}
🧪 Тест 2: Привязка к заявке (HelpDesk)
curl -X POST "https://crm.clientright.ru/api/n8n/documents/attach" \
-H "Content-Type: application/json" \
-d '{
"contact_id": "320096",
"project_id": "396874",
"ticket_id": "396935",
"file_url": "https://s3.twcstorage.ru/f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c/clientright/test/test_document.pdf",
"file_name": "flight_delay_confirmation.pdf",
"file_type": "flight_delay_confirmation"
}'
Ожидаемый результат:
{
"success": true,
"result": {
"document_id": "15x396941",
"document_numeric_id": "396941",
"attached_to": "ticket",
"attached_to_id": "396935",
"file_name": "flight_delay_confirmation.pdf",
"file_type": "flight_delay_confirmation",
"s3_bucket": "f9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c",
"s3_key": "clientright/test/test_document.pdf",
"file_size": 12345,
"message": "Документ создан с правильными S3 метаданными и привязан к проекту"
}
}
📊 Логика работы
-
Если
ticket_idНЕ указан:- Документ создается в vTiger CRM (модуль Documents)
- Привязывается к Project (проекту)
attached_to = "project"
-
Если
ticket_idуказан:- Документ создается в vTiger CRM (модуль Documents)
- Привязывается к HelpDesk (заявке)
attached_to = "ticket"
-
S3 метаданные:
- Автоматически обновляются в базе vTiger
filelocationtype = 'E'(External URL)- Сохраняются
s3_bucket,s3_key,file_size
🔍 Где смотреть логи
Backend логи:
docker-compose logs -f backend | grep "Attaching document"
CRM логи:
tail -f /var/www/fastuser/data/www/crm.clientright.ru/logs/upload_documents.log
✅ Готово!
Эндпоинт готов к интеграции в n8n workflow!