113 lines
3.8 KiB
Markdown
113 lines
3.8 KiB
Markdown
|
|
# 📎 ИТОГ: API привязки документов готов!
|
|||
|
|
|
|||
|
|
## ✅ Что сделано
|
|||
|
|
|
|||
|
|
### 1️⃣ Backend Endpoint
|
|||
|
|
**URL:** `POST https://crm.clientright.ru/api/n8n/documents/attach`
|
|||
|
|
|
|||
|
|
**Возможности:**
|
|||
|
|
- ✅ Batch-обработка массива документов
|
|||
|
|
- ✅ Умный парсинг S3 путей (автоматически добавляет хост)
|
|||
|
|
- ✅ Поддержка двух форматов полей (`file`/`file_url`, `filename`/`file_name`)
|
|||
|
|
- ✅ Привязка к HelpDesk (заявке) или Project (проекту)
|
|||
|
|
- ✅ Детальная статистика по каждому документу
|
|||
|
|
- ✅ Полное логирование всех операций
|
|||
|
|
|
|||
|
|
### 2️⃣ PHP Backend
|
|||
|
|
**Файл:** `/var/www/fastuser/data/www/crm.clientright.ru/upload_documents_to_crm.php`
|
|||
|
|
|
|||
|
|
**Доработки:**
|
|||
|
|
- ✅ Поддержка `ticket_id` для привязки к HelpDesk
|
|||
|
|
- ✅ Логика: если `ticket_id` → HelpDesk, иначе → Project
|
|||
|
|
- ✅ Обновление S3 метаданных в базе vTiger
|
|||
|
|
- ✅ Прямая привязка через `relateEntities` если webservice не работает
|
|||
|
|
|
|||
|
|
### 3️⃣ Документация
|
|||
|
|
- 📄 `DOCUMENT_ATTACH_API.md` - полная документация API
|
|||
|
|
- 📄 `QUICK_START_DOCUMENTS.md` - краткая шпаргалка
|
|||
|
|
- 📄 `TEST_ATTACH_DOCUMENT.md` - примеры тестирования
|
|||
|
|
|
|||
|
|
### 4️⃣ Тесты
|
|||
|
|
- 🧪 `TEST_REAL_DATA.sh` - тест с реальными данными
|
|||
|
|
- 🧪 `TEST_QUICK.sh` - быстрые тесты
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🚀 Формат входных данных
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"claim_id": "CLM-2025-11-02-WNRZZZ",
|
|||
|
|
"event_type": "delay_flight",
|
|||
|
|
"contact_id": "320096",
|
|||
|
|
"project_id": "396868",
|
|||
|
|
"ticket_id": "396936",
|
|||
|
|
"filename": "boarding_pass.pdf",
|
|||
|
|
"file_type": "flight_delay_boarding_or_ticket",
|
|||
|
|
"file": "/bucket/path/to/file.pdf"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Важно:**
|
|||
|
|
- Всегда массив `[...]` (даже для одного документа)
|
|||
|
|
- Поле `file` без хоста → автоматически добавится `https://s3.twcstorage.ru`
|
|||
|
|
- `ticket_id` опционально (если есть → HelpDesk, иначе → Project)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📊 Формат ответа
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"success": true,
|
|||
|
|
"total_processed": 1,
|
|||
|
|
"successful": 1,
|
|||
|
|
"failed": 0,
|
|||
|
|
"results": [
|
|||
|
|
{
|
|||
|
|
"document_id": "15x396941",
|
|||
|
|
"document_numeric_id": "396941",
|
|||
|
|
"attached_to": "ticket",
|
|||
|
|
"attached_to_id": "396936",
|
|||
|
|
"file_name": "boarding_pass.pdf",
|
|||
|
|
"file_type": "flight_delay_boarding_or_ticket",
|
|||
|
|
"s3_bucket": "f9825c87-...",
|
|||
|
|
"s3_key": "crm2/CRM_Active_Files/...",
|
|||
|
|
"file_size": 85320,
|
|||
|
|
"message": "Документ создан и привязан..."
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"errors": null
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🧪 Тестирование
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /var/www/fastuser/data/www/crm.clientright.ru/erv_platform
|
|||
|
|
./TEST_REAL_DATA.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 Git коммиты
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
ec44f43 - docs: Добавлена краткая шпаргалка для быстрого старта
|
|||
|
|
efb0cd6 - feat: Поддержка batch-обработки документов и умного парсинга S3 путей
|
|||
|
|
e27280e - docs: Добавлена полная документация API привязки документов
|
|||
|
|
936cea6 - feat: Добавлен эндпоинт для привязки документов к проекту/заявке
|
|||
|
|
d3b7b3b - feat: Добавлены все N8N webhook URLs в config.py
|
|||
|
|
5f4f992 - feat: Добавлена поддержка привязки документов к HelpDesk (CRM)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 Готово к боевому использованию!
|
|||
|
|
|
|||
|
|
Эндпоинт протестирован и готов к интеграции в n8n workflow! 🚀
|