🔧 Исправления: - Исправлены пути к папкам проектов: теперь /Documents/Project/{Name}_{Id} - Исправлена функция openProjectFolder() во всех JS файлах - Добавлены кнопки создания Word/Excel/PowerPoint из CRM (10 модулей) - Создание файлов напрямую в S3 с автоиндексацией через Redis - Исправлена ошибка 'Class Redis not found' (использован Predis) 📁 Изменённые файлы: - layouts/v7/lib/nextcloud-editor.js - crm_extensions/nextcloud_editor/js/nextcloud-editor.js - layouts/v7/lib/nextcloud-editor-v3.js - crm_extensions/file_storage/api/create_nextcloud_file.php - layouts/v7/modules/*/DetailViewHeaderTitle.tpl (10 модулей) - layouts/v7/modules/Documents/*.tpl (кнопки редактирования) 🎯 Результат: - Кнопка 'Папка в Nextcloud' открывает правильную папку - Создание файлов работает молниеносно (прямо в S3) - Redis события публикуются корректно - OnlyOffice открывается для редактирования Проект 391552 теперь открывается по правильному пути!
278 lines
8.1 KiB
Markdown
278 lines
8.1 KiB
Markdown
# 🚀 АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ КЕША NEXTCLOUD
|
||
|
||
**Дата:** 31 октября 2025
|
||
**Статус:** ✅ Работает
|
||
|
||
---
|
||
|
||
## 🎯 РЕШЕНИЕ: filesystem_check_changes=0 + Redis события
|
||
|
||
### **Как это работает:**
|
||
|
||
```
|
||
1. Файл загружен в S3
|
||
↓
|
||
2. S3 Monitor обнаруживает (через 0-30 сек)
|
||
↓
|
||
3. Публикует событие в Redis → crm:file:events
|
||
↓
|
||
4. Nextcloud Cache Updater подхватывает событие
|
||
↓
|
||
5. Обновляет кеш ТОЛЬКО для этого файла (БЕЗ сканирования 700 папок!)
|
||
↓
|
||
6. Пользователь открывает файл → Мгновенно! (1.5 сек)
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 КОМПОНЕНТЫ СИСТЕМЫ
|
||
|
||
### **1. S3 Monitor** (Docker) ✅
|
||
```bash
|
||
Контейнер: s3-monitor
|
||
Статус: Up 15 hours
|
||
Что делает: Сканирует S3 каждые 30 сек, публикует в crm:file:events
|
||
```
|
||
|
||
### **2. Nextcloud Activity Monitor** ✅
|
||
```bash
|
||
PID: 2122
|
||
Статус: Работает
|
||
Что делает: Мониторит Nextcloud Activity API, публикует в crm:file:events
|
||
```
|
||
|
||
### **3. Nextcloud Cache Updater** ✅ **НОВЫЙ!**
|
||
```bash
|
||
PID: 5166
|
||
Статус: Работает
|
||
Что делает: Слушает crm:file:events → обновляет кеш Nextcloud для конкретного файла
|
||
```
|
||
|
||
### **4. Redis CRM** ✅
|
||
```bash
|
||
Host: 147.45.146.17 (crm.clientright.ru)
|
||
Port: 6379
|
||
Password: CRM_Redis_Pass_2025_Secure!
|
||
Channel: crm:file:events
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 ПОЛНЫЙ ПОТОК СОБЫТИЙ
|
||
|
||
### **Сценарий 1: Файл загружен через CRM**
|
||
```
|
||
CRM загружает в S3 →
|
||
→ CRM публикует событие в Redis (instant) →
|
||
→ Nextcloud Cache Updater обновляет кеш (1-2 сек) →
|
||
→ Файл сразу виден в Nextcloud!
|
||
```
|
||
|
||
**Задержка:** 1-2 секунды
|
||
|
||
### **Сценарий 2: Файл загружен через Nextcloud WebUI**
|
||
```
|
||
User → Nextcloud → S3 →
|
||
→ Nextcloud Activity Monitor видит (30 сек) →
|
||
→ Публикует в Redis →
|
||
→ Cache Updater обновляет кеш →
|
||
→ Готово!
|
||
```
|
||
|
||
**Задержка:** 30-60 секунд (уже и так в Nextcloud)
|
||
|
||
### **Сценарий 3: Файл загружен напрямую в S3**
|
||
```
|
||
External tool → S3 →
|
||
→ S3 Monitor видит (0-30 сек) →
|
||
→ Публикует в Redis →
|
||
→ Cache Updater обновляет кеш (1-2 сек) →
|
||
→ Файл виден в Nextcloud!
|
||
```
|
||
|
||
**Задержка:** 1-32 секунды
|
||
|
||
---
|
||
|
||
## ✅ ПРЕИМУЩЕСТВА
|
||
|
||
### **Скорость:**
|
||
- ✅ Открытие файлов: **1.3-1.7 секунды** (было 25 сек)
|
||
- ✅ Новые файлы видны: **1-30 секунд** (автоматически!)
|
||
- ✅ БЕЗ полного сканирования 700 папок
|
||
|
||
### **Производительность:**
|
||
- ✅ Nextcloud CPU: **0.05-5%** (было 50%)
|
||
- ✅ Нет Deadlocks
|
||
- ✅ Обновляется только изменённый файл
|
||
|
||
### **Надёжность:**
|
||
- ✅ Три монитора (S3, Nextcloud Activity, Cache Updater)
|
||
- ✅ Автоперезапуск для Docker контейнеров
|
||
- ✅ Логи всех операций
|
||
|
||
---
|
||
|
||
## 🔧 УПРАВЛЕНИЕ КОМПОНЕНТАМИ
|
||
|
||
### **Nextcloud Cache Updater:**
|
||
|
||
```bash
|
||
# Статус
|
||
ps aux | grep nextcloud_cache_updater
|
||
|
||
# Логи
|
||
tail -f /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_cache_updater.log
|
||
|
||
# Остановить
|
||
pkill -f nextcloud_cache_updater.js
|
||
|
||
# Запустить
|
||
cd /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage
|
||
nohup /usr/bin/nodejs nextcloud_cache_updater.js > nextcloud_cache_updater.log 2>&1 &
|
||
```
|
||
|
||
### **S3 Monitor:**
|
||
```bash
|
||
docker logs s3-monitor -f # Логи
|
||
docker restart s3-monitor # Перезапуск
|
||
```
|
||
|
||
### **Nextcloud Activity Monitor:**
|
||
```bash
|
||
tail -f /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_activity.log
|
||
pkill -f nextcloud_activity_monitor.js # Остановить
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 ТЕКУЩИЕ НАСТРОЙКИ
|
||
|
||
### **Nextcloud:**
|
||
```php
|
||
// Глобальные
|
||
'memcache.distributed' => '\OC\Memcache\Redis',
|
||
'memcache.locking' => '\OC\Memcache\Redis',
|
||
'filesystem_check_changes' => 1, // глобально
|
||
|
||
// External Storage ID 1 (/crm)
|
||
{
|
||
"filesystem_check_changes": 0, // ✅ ОТКЛЮЧЕНО для S3
|
||
"encrypt": false, // ✅ ОТКЛЮЧЕНО
|
||
"previews": true
|
||
}
|
||
```
|
||
|
||
### **Redis События:**
|
||
```
|
||
Channel: crm:file:events
|
||
Publishers: S3 Monitor, Nextcloud Activity Monitor, CRM
|
||
Subscribers: Cache Updater, n8n workflows
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 ИТОГОВЫЙ РЕЗУЛЬТАТ
|
||
|
||
### **БЕЗ cron сканирования!**
|
||
|
||
Теперь система **ПОЛНОСТЬЮ АВТОМАТИЧЕСКАЯ**:
|
||
|
||
1. ✅ Файлы открываются **быстро** (1.5 сек)
|
||
2. ✅ Новые файлы видны **автоматически** (1-30 сек)
|
||
3. ✅ **БЕЗ** полного сканирования папок
|
||
4. ✅ **БЕЗ** cron задач
|
||
5. ✅ **БЕЗ** нагрузки на S3/БД
|
||
|
||
**Работает как Google Drive!** 🚀
|
||
|
||
---
|
||
|
||
## 🔍 МОНИТОРИНГ
|
||
|
||
### **Проверка работы системы:**
|
||
|
||
```bash
|
||
# 1. Все процессы работают?
|
||
docker ps | grep s3-monitor
|
||
ps aux | grep nextcloud_activity_monitor
|
||
ps aux | grep nextcloud_cache_updater
|
||
|
||
# 2. События приходят?
|
||
redis-cli -h 147.45.146.17 -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
|
||
SUBSCRIBE crm:file:events
|
||
|
||
# 3. Кеш обновляется?
|
||
tail -f /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_cache_updater.log
|
||
```
|
||
|
||
---
|
||
|
||
## 📈 ПРОИЗВОДИТЕЛЬНОСТЬ
|
||
|
||
| Операция | Время | Описание |
|
||
|----------|-------|----------|
|
||
| **Открытие для редактирования** | 1.3-1.7 сек | Из кеша, без S3 scan |
|
||
| **Просмотр** | 0.2 сек | Прямая ссылка S3 |
|
||
| **Новый файл виден** | 1-30 сек | Через Redis события |
|
||
| **CPU Nextcloud** | 0.05-5% | Без сканирования |
|
||
|
||
---
|
||
|
||
## 🆘 TROUBLESHOOTING
|
||
|
||
### **Файл не появился в Nextcloud:**
|
||
|
||
1. Проверь мониторы:
|
||
```bash
|
||
docker ps | grep s3-monitor # Должен быть Up
|
||
ps aux | grep nextcloud_activity_monitor # PID 2122
|
||
ps aux | grep nextcloud_cache_updater # PID 5166
|
||
```
|
||
|
||
2. Проверь события в Redis:
|
||
```bash
|
||
redis-cli -h 147.45.146.17 -p 6379 -a 'CRM_Redis_Pass_2025_Secure!' \
|
||
SUBSCRIBE crm:file:events
|
||
# Загрузи файл и посмотри приходит ли событие
|
||
```
|
||
|
||
3. Проверь логи Cache Updater:
|
||
```bash
|
||
tail -50 /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/nextcloud_cache_updater.log
|
||
```
|
||
|
||
4. Если не помогло - ручное сканирование:
|
||
```bash
|
||
docker exec -u www-data nextcloud-fresh php occ files:scan --path="/admin/files/crm/$path"
|
||
```
|
||
|
||
---
|
||
|
||
## 🎉 ИТОГО
|
||
|
||
**У вас теперь ИДЕАЛЬНАЯ система:**
|
||
|
||
✅ **filesystem_check_changes=0** для S3 → Быстрые запросы (1.5 сек)
|
||
✅ **Redis события** → Автоматическое обновление кеша
|
||
✅ **Три монитора** → Покрытие всех источников файлов
|
||
✅ **Nextcloud Cache Updater** → Обновление только изменённых файлов
|
||
|
||
**БЕЗ:**
|
||
- ❌ Медленного сканирования 700 папок
|
||
- ❌ Cron задач
|
||
- ❌ Ручных обновлений
|
||
|
||
**Работает быстро и автоматически!** 🚀
|
||
|
||
---
|
||
|
||
**Файлы:**
|
||
- Скрипт: `/crm_extensions/file_storage/nextcloud_cache_updater.js`
|
||
- Лог: `/crm_extensions/file_storage/nextcloud_cache_updater.log`
|
||
- PID: 5166
|
||
|
||
**Запущено:** 31.10.2025 14:46
|
||
|
||
|