Files
crm.clientright.ru/crm_extensions/file_storage/README_SSE_SETUP.md

169 lines
5.5 KiB
Markdown
Raw Normal View History

# 🚀 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`