169 lines
5.5 KiB
Markdown
169 lines
5.5 KiB
Markdown
|
|
# 🚀 SSE СИНХРОНИЗАЦИЯ ФАЙЛОВ - ИНСТРУКЦИЯ ПО НАСТРОЙКЕ
|
|||
|
|
|
|||
|
|
## 📋 ЧТО СОЗДАНО:
|
|||
|
|
|
|||
|
|
### ✅ **ШАГ 1-4 ЗАВЕРШЕНЫ:**
|
|||
|
|
1. **FilePathManager.php** - универсальный класс для генерации путей
|
|||
|
|
2. **S3StorageService.php** - обновлен для поддержки универсальной структуры
|
|||
|
|
3. **SSE endpoint** - `/crm_extensions/file_storage/api/sse_events.php`
|
|||
|
|
4. **Webhook endpoint** - `/crm_extensions/file_storage/api/nextcloud_webhook.php`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 **ШАГ 5: НАСТРОЙКА UI ДЛЯ SSE**
|
|||
|
|
|
|||
|
|
### **1. Подключение JavaScript в CRM:**
|
|||
|
|
|
|||
|
|
Добавить в основной шаблон CRM (например, `layouts/v7/modules/Vtiger/Header.tpl`):
|
|||
|
|
|
|||
|
|
```html
|
|||
|
|
<!-- SSE для синхронизации файлов -->
|
|||
|
|
<script type="text/javascript" src="crm_extensions/file_storage/js/file_sync_sse.js"></script>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### **2. Проверка подключения:**
|
|||
|
|
|
|||
|
|
Откройте CRM в браузере → F12 (консоль разработчика) → проверьте:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
🔄 Инициализация SSE для синхронизации файлов...
|
|||
|
|
✅ SSE подключение установлено
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### **3. Индикатор статуса:**
|
|||
|
|
|
|||
|
|
В правом верхнем углу должен появиться индикатор:
|
|||
|
|
- 🟢 **"Файлы синхронизируются"** - все работает
|
|||
|
|
- 🟡 **"Переподключение..."** - временные проблемы
|
|||
|
|
- 🔴 **"Синхронизация недоступна"** - проблемы с подключением
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔗 **ШАГ 6: НАСТРОЙКА NEXTCLOUD WEBHOOK**
|
|||
|
|
|
|||
|
|
### **1. В Nextcloud Admin:**
|
|||
|
|
|
|||
|
|
1. Перейдите в **Settings** → **Administration** → **Webhooks**
|
|||
|
|
2. Добавьте новый webhook:
|
|||
|
|
- **URL**: `https://crm.clientright.ru/crm_extensions/file_storage/api/nextcloud_webhook.php`
|
|||
|
|
- **Events**: `file_created`, `file_updated`, `file_deleted`, `folder_renamed`, `folder_deleted`
|
|||
|
|
- **Secret**: (опционально, для безопасности)
|
|||
|
|
|
|||
|
|
### **2. Тестирование webhook:**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Тестовый запрос
|
|||
|
|
curl -X POST https://crm.clientright.ru/crm_extensions/file_storage/api/nextcloud_webhook.php \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{
|
|||
|
|
"action": "file_created",
|
|||
|
|
"file_path": "crm2/CRM_Active_Files/Documents/Project_123/test_file_456.pdf",
|
|||
|
|
"project_id": "123"
|
|||
|
|
}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🧪 **ТЕСТИРОВАНИЕ:**
|
|||
|
|
|
|||
|
|
### **1. Запуск тестов:**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /var/www/fastuser/data/www/crm.clientright.ru
|
|||
|
|
php crm_extensions/file_storage/test_sse_simple.php
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### **2. Проверка логов:**
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Логи webhook
|
|||
|
|
tail -f /var/log/crm_nextcloud_webhook.log
|
|||
|
|
|
|||
|
|
# SSE события
|
|||
|
|
tail -f /tmp/crm_sse_events.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### **3. Тестирование в браузере:**
|
|||
|
|
|
|||
|
|
1. Откройте CRM → проект с файлами
|
|||
|
|
2. Откройте консоль разработчика (F12)
|
|||
|
|
3. Добавьте файл в Nextcloud папку проекта
|
|||
|
|
4. Проверьте, что файл появился в CRM без перезагрузки
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📁 **СТРУКТУРА ФАЙЛОВ:**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
crm_extensions/file_storage/
|
|||
|
|
├── api/
|
|||
|
|
│ ├── sse_events.php # SSE endpoint
|
|||
|
|
│ └── nextcloud_webhook.php # Webhook endpoint
|
|||
|
|
├── js/
|
|||
|
|
│ └── file_sync_sse.js # JavaScript клиент
|
|||
|
|
├── FilePathManager.php # Универсальный менеджер путей
|
|||
|
|
├── test_sse_simple.php # Тестовый скрипт
|
|||
|
|
└── README_SSE_SETUP.md # Эта инструкция
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔄 **КАК РАБОТАЕТ:**
|
|||
|
|
|
|||
|
|
### **1. Файл добавлен в Nextcloud:**
|
|||
|
|
```
|
|||
|
|
Nextcloud → Webhook → CRM API → SSE → Браузер → UI обновляется
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### **2. Файл добавлен в CRM:**
|
|||
|
|
```
|
|||
|
|
CRM → S3 → Nextcloud → Webhook → SSE → UI обновляется
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### **3. Переименование папки:**
|
|||
|
|
```
|
|||
|
|
Nextcloud → Webhook → CRM обновляет БД → SSE → UI обновляется
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ **ВОЗМОЖНЫЕ ПРОБЛЕМЫ:**
|
|||
|
|
|
|||
|
|
### **1. SSE не подключается:**
|
|||
|
|
- Проверьте права доступа к файлам
|
|||
|
|
- Проверьте настройки PHP (timeout, memory)
|
|||
|
|
- Проверьте логи веб-сервера
|
|||
|
|
|
|||
|
|
### **2. Webhook не работает:**
|
|||
|
|
- Проверьте URL в Nextcloud
|
|||
|
|
- Проверьте логи: `/var/log/crm_nextcloud_webhook.log`
|
|||
|
|
- Проверьте права доступа к файлам
|
|||
|
|
|
|||
|
|
### **3. Файлы не синхронизируются:**
|
|||
|
|
- Проверьте подключение к S3
|
|||
|
|
- Проверьте права доступа к папкам
|
|||
|
|
- Проверьте логи FilePathManager
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🎯 **СЛЕДУЮЩИЕ ШАГИ:**
|
|||
|
|
|
|||
|
|
1. ✅ **Настроить UI** - добавить JavaScript в CRM
|
|||
|
|
2. ✅ **Настроить Nextcloud** - добавить webhook
|
|||
|
|
3. ✅ **Протестировать** - проверить синхронизацию
|
|||
|
|
4. ✅ **Мигрировать Contacts** - применить к другим модулям
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📞 **ПОДДЕРЖКА:**
|
|||
|
|
|
|||
|
|
При проблемах проверьте:
|
|||
|
|
- Логи: `/var/log/crm_nextcloud_webhook.log`
|
|||
|
|
- SSE события: `/tmp/crm_sse_events.json`
|
|||
|
|
- Консоль браузера: F12 → Console
|
|||
|
|
- Тестовый скрипт: `php crm_extensions/file_storage/test_sse_simple.php`
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|