Files
crm.clientright.ru/АВТОМАТИЧЕСКОЕ_ОБНОВЛЕНИЕ_КЕША_NEXTCLOUD.md
Fedor 7e3f0dcede Исправление путей к папкам проектов в Nextcloud + создание файлов из CRM
🔧 Исправления:
- Исправлены пути к папкам проектов: теперь /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 теперь открывается по правильному пути!
2025-11-01 12:22:12 +03:00

278 lines
8.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 АВТОМАТИЧЕСКОЕ ОБНОВЛЕНИЕ КЕША 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