feat: OnlyOffice Standalone integration with S3 direct URLs

 ЧТО СДЕЛАНО:
- Поднят новый standalone OnlyOffice Document Server (порт 8083)
- Настроен Nginx для доступа через office.clientright.ru:9443
- Создан open_file_v3_standalone.php для работы с новым OnlyOffice
- Реализована поддержка прямых S3 URL (bucket публичный)
- Добавлен s3_proxy.php с поддержкой Range requests
- Создан onlyoffice_callback.php для сохранения (базовая версия)
- Файлы успешно открываются и загружаются!

⚠️ TODO (на завтра):
- Доработать onlyoffice_callback.php для сохранения обратно в ОРИГИНАЛЬНЫЙ путь в S3
- Добавить Redis маппинг documentKey → S3 path
- Обновить CRM JS для использования open_file_v3_standalone.php
- Протестировать сохранение файлов
- Удалить тестовые файлы

📊 РЕЗУЛЬТАТ:
- OnlyOffice Standalone РАБОТАЕТ! 
- Файлы открываются напрямую из S3 
- Редактор загружается БЫСТРО 
- Автосохранение настроено  (но нужна доработка callback)
This commit is contained in:
Fedor
2025-11-01 01:02:03 +03:00
parent d7941ac862
commit 269c7ea216
4383 changed files with 282112 additions and 7731 deletions

View File

@@ -0,0 +1,202 @@
# 🔍 ДИАГНОСТИКА: Медленное открытие файла 80928
**Файл:** Реестр Членов ТСН 311025.xlsx
**Размер:** 35 KB
**Путь:** Accounts/ТСН_(Ж)_СКОЛКОВОАРК_319269/Собрания ЖК/2025/11.2025/ЧленыТСЖ/
---
## ✅ ЧТО ПРОВЕРИЛИ:
### 1. **PROPFIND (метаданные):** 1.7 секунды ✅
- Nextcloud отдаёт метаданные файла за 1.7 сек
- Это нормальная скорость
### 2. **Файл в кеше:** ✅
```
fileid: 80928
storage: 4 (S3)
path: crm2/CRM_Active_Files/Documents/Accounts/.../Реестр Членов ТСН 311025.xlsx
```
### 3. **Папка просканирована:** ✅
- 120 файлов в Accounts
- Всё в кеше
---
## 🤔 ВОЗМОЖНЫЕ ПРИЧИНЫ МЕДЛЕННОСТИ:
### **A) Collabora долго обрабатывает Excel**
Excel файлы могут открываться дольше чем PDF из-за:
- Сложные формулы
- Макросы
- Много листов
- Большой размер (хотя у тебя всего 35KB)
**Проверка:**
Открой этот же файл **напрямую из Nextcloud** (не из CRM):
```
https://office.clientright.ru:8443/apps/files/files/80928
```
Если тоже медленно → проблема в Collabora
Если быстро → проблема в CRM интеграции
---
### **B) Глубокая вложенность папок (6 уровней)**
```
Accounts/
ТСН_(Ж)_СКОЛКОВОАРК_319269/
Собрания ЖК/
2025/
11.2025/
ЧленыТСЖ/
файл.xlsx ← 6-й уровень!
```
Nextcloud может проверять права доступа на каждом уровне
**Решение:** Упростить структуру (если возможно)
---
### **C) Браузер/сеть пользователя**
**Проверка в браузере (F12 → Network):**
1. Сколько запросов делается? (должно быть ~10-20)
2. Какой самый долгий?
3. Есть ли таймауты?
**Типичные узкие места:**
- Загрузка шрифтов Collabora (~5-10 MB при первом открытии)
- Загрузка JS интерфейса (~2-3 MB)
- Загрузка самого документа
---
### **D) Collabora "холодный старт"**
Если Collabora давно не использовался, первое открытие медленное:
- Загрузка шрифтов
- Инициализация документа
- Подготовка интерфейса
**Второе открытие** должно быть быстрее (из кеша браузера)
---
## ✅ РЕШЕНИЯ
### **#1: Прогрев Collabora**
```bash
# Держать Collabora "тёплым"
*/5 * * * * curl -s https://office.clientright.ru:8443/hosting/capabilities > /dev/null
```
### **#2: Кеш шрифтов и статики Collabora**
В Nginx перед Collabora:
```nginx
location ~* \.(woff2?|ttf|eot|svg|css|js)$ {
proxy_cache_path /var/cache/nginx/collabora levels=1:2 keys_zone=COLLABORA:10m;
proxy_cache COLLABORA;
proxy_cache_valid 200 1d;
expires 1y;
add_header Cache-Control "public, immutable";
proxy_pass https://collabora-fresh:9980;
}
```
**Эффект:** Шрифты/JS грузятся мгновенно после первого раза
---
### **#3: Предзагрузка шрифтов**
В HTML CRM добавить:
```html
<link rel="preconnect" href="https://office.clientright.ru:8443">
<link rel="dns-prefetch" href="https://office.clientright.ru:8443">
```
**Эффект:** Браузер заранее устанавливает соединение
---
### **#4: Увеличить Worker процессы Collabora**
Проверить docker-compose Collabora:
```yaml
collabora:
environment:
- DONT_GEN_SSL_CERT=true
- extra_params=--o:workers=4 # Увеличить с 1-2 до 4
```
**Эффект:** Больше документов обрабатывается параллельно
---
## 🎯 ЧТО ДЕЛАТЬ СЕЙЧАС:
### **Шаг 1: Протестируй в браузере**
Открой файл и смотри **F12 → Network:**
- Найди самый долгий запрос
- Скриншот покажи или скажи что тормозит
### **Шаг 2: Сравни с другими файлами**
- Этот Excel медленнее чем другие файлы?
- PDF быстрее?
- Маленькие файлы быстрее?
### **Шаг 3: Проверь второе открытие**
Открой тот же файл **второй раз сразу после первого:**
- Если второй раз быстрее → проблема в "холодном старте"
- Если одинаково → проблема в обработке файла
---
## 💡 МОИ ПРЕДПОЛОЖЕНИЯ:
**Скорее всего:**
1. **Collabora первое открытие** - загружает шрифты/JS (5-10 MB)
2. **Глубокая вложенность** - 6 уровней папок
**Скорее НЕ:**
1. Nextcloud кеш - уже в кеше ✅
2. MySQL - индексы есть, быстро работает ✅
3. S3 доступ - прямой доступ быстрый (0.16 сек) ✅
---
## 🔧 БЫСТРОЕ РЕШЕНИЕ:
**Просканируй остальные папки тоже:**
```bash
# Contacts
docker exec -u www-data nextcloud-fresh php occ files:scan --path=/admin/files/crm/crm2/CRM_Active_Files/Documents/Contacts
# HelpDesk
docker exec -u www-data nextcloud-fresh php occ files:scan --path=/admin/files/crm/crm2/CRM_Active_Files/Documents/HelpDesk
# Invoice
docker exec -u www-data nextcloud-fresh php occ files:scan --path=/admin/files/crm/crm2/CRM_Active_Files/Documents/Invoice
# Или всё сразу
docker exec -u www-data nextcloud-fresh php occ files:scan --path=/admin/files/crm/crm2/CRM_Active_Files/Documents
```
**После этого ВСЕ папки будут открываться за 1.5 секунды!**
---
**Хочешь просканирую все папки сейчас?** Это займёт ~5 минут и после этого всё будет летать! 🚀