feat: OnlyOffice Document Server integration with auto-save
- Добавлен s3Path в callbackUrl для сохранения в оригинальный файл - Исправлено сохранение: теперь файлы обновляются в S3 автоматически - Отключена проверка SSL в OnlyOffice (rejectUnauthorized: false) - Разрешены callback на приватные IP адреса - Добавлено логирование callback в onlyoffice_callback.log - Восстановлены оптимальные настройки индексации Nextcloud - filesystem_check_changes = 0 для S3 External Storage - Redis event system работает для автоматической индексации Документация: - ИСПРАВЛЕНИЕ_СОХРАНЕНИЯ_ONLYOFFICE_01_11_2025.md - ИСПРАВЛЕНИЕ_SSL_ONLYOFFICE_01_11_2025.md - ВОССТАНОВЛЕНИЕ_ОПТИМИЗАЦИИ_01_11_2025.md - ONLYOFFICE_НАСТРОЙКИ.md - ТЕСТИРОВАНИЕ_СОХРАНЕНИЯ_ONLYOFFICE.md
This commit is contained in:
301
ТЕСТИРОВАНИЕ_СОХРАНЕНИЯ_ONLYOFFICE.md
Normal file
301
ТЕСТИРОВАНИЕ_СОХРАНЕНИЯ_ONLYOFFICE.md
Normal file
@@ -0,0 +1,301 @@
|
||||
# Тестирование сохранения в OnlyOffice
|
||||
|
||||
**Дата:** 1 ноября 2025
|
||||
**Цель:** Проверить что файлы сохраняются после редактирования
|
||||
|
||||
---
|
||||
|
||||
## ✅ Что уже сделано
|
||||
|
||||
### 1. OnlyOffice настроен:
|
||||
- ✅ SSL проверка отключена (`rejectUnauthorized: false`)
|
||||
- ✅ Разрешены callback на приватные IP
|
||||
- ✅ OnlyOffice запущен и работает
|
||||
- ✅ Healthcheck: `true`
|
||||
- ✅ API доступен
|
||||
|
||||
### 2. Скрипты обновлены:
|
||||
- ✅ `open_file_v2.php`: callbackUrl с параметром `s3Path`
|
||||
- ✅ `onlyoffice_callback.php`: сохранение в оригинальный файл
|
||||
- ✅ Permissions: `edit: true`
|
||||
- ✅ Mode: `edit`
|
||||
|
||||
### 3. Логирование включено:
|
||||
- ✅ Логи callback: `/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log`
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Как протестировать
|
||||
|
||||
### Шаг 1: Открой файл из CRM
|
||||
|
||||
**Пример URL:**
|
||||
```
|
||||
https://crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php?recordId=395695&fileName=https%3A%2F%2Fs3.twcstorage.ru%2Ff9825c87-4e3558f6-f9b6-405c-ad3d-d1535c49b61c%2Fcrm2%2FCRM_Active_Files%2FDocuments%2FProject%2F...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Шаг 2: Проверь кнопку "Сохранить"
|
||||
|
||||
**Что должно быть:**
|
||||
- ✅ Кнопка "Сохранить" **активна** (не серая)
|
||||
- ✅ Можно редактировать текст
|
||||
- ✅ В правом верхнем углу есть меню "Файл"
|
||||
|
||||
**Если кнопка НЕАКТИВНА:**
|
||||
1. Открой консоль браузера (F12)
|
||||
2. Посмотри на ошибки (красные строки)
|
||||
3. Сделай скриншот и покажи
|
||||
|
||||
---
|
||||
|
||||
### Шаг 3: Внеси изменения
|
||||
|
||||
1. **Добавь текст** в документ (например: "ТЕСТ 123")
|
||||
2. **Нажми Ctrl+S** или кнопку "Сохранить"
|
||||
3. **Подожди 2-3 секунды**
|
||||
|
||||
---
|
||||
|
||||
### Шаг 4: Проверь логи
|
||||
|
||||
```bash
|
||||
# Смотрим логи callback
|
||||
tail -f /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log
|
||||
```
|
||||
|
||||
**Что должно быть в логах:**
|
||||
```
|
||||
=== ONLYOFFICE CALLBACK ===
|
||||
Method: POST
|
||||
Body: {"status":2,"key":"...","url":"http://..."}
|
||||
Callback Status: 2, Key: ...
|
||||
File saved! Download URL: http://...
|
||||
Downloaded file: ... bytes
|
||||
Saving to original path: CRM_Active_Files/Documents/Project/.../file.docx
|
||||
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
|
||||
File saved to S3: CRM_Active_Files/Documents/Project/.../file.docx
|
||||
```
|
||||
|
||||
**Если логов НЕТ:**
|
||||
- OnlyOffice НЕ вызывает callback
|
||||
- Проблема с SSL или доступностью
|
||||
|
||||
---
|
||||
|
||||
### Шаг 5: Закрой файл и открой снова
|
||||
|
||||
1. **Закрой** вкладку с редактором
|
||||
2. **Открой тот же файл** из CRM заново
|
||||
3. **Проверь** - изменения должны быть видны! ✅
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Отладка
|
||||
|
||||
### Если кнопка "Сохранить" неактивна:
|
||||
|
||||
#### 1. Консоль браузера (F12):
|
||||
```javascript
|
||||
// Смотри на ошибки в консоли
|
||||
// Ищи красные строки с "error", "callback", "ssl"
|
||||
```
|
||||
|
||||
#### 2. Network tab (вкладка "Сеть"):
|
||||
```
|
||||
- Открой вкладку "Network" (Сеть)
|
||||
- Обнови страницу с файлом
|
||||
- Найди запрос к "api.js"
|
||||
- Посмотри статус (должен быть 200)
|
||||
```
|
||||
|
||||
#### 3. Проверь OnlyOffice логи:
|
||||
```bash
|
||||
docker logs --tail 50 onlyoffice-standalone 2>&1 | grep -i "error\|callback"
|
||||
```
|
||||
|
||||
#### 4. Проверь доступность callback из браузера:
|
||||
```bash
|
||||
curl -X POST "https://crm.clientright.ru/crm_extensions/file_storage/api/onlyoffice_callback.php?s3Path=test.docx" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"status":1,"key":"test"}'
|
||||
# Должен вернуть: {"error":0}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Если файл НЕ сохраняется:
|
||||
|
||||
#### 1. Проверь логи callback:
|
||||
```bash
|
||||
tail -100 /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log
|
||||
```
|
||||
|
||||
**Что искать:**
|
||||
- `=== ONLYOFFICE CALLBACK ===` - есть ли вызовы?
|
||||
- `Callback Status: 2` - статус сохранения
|
||||
- `Saving to original path:` - путь к файлу
|
||||
- `File saved to S3:` - успешное сохранение
|
||||
- `ERROR:` - ошибки
|
||||
|
||||
#### 2. Проверь S3 доступ:
|
||||
```bash
|
||||
# Проверяем что файл есть в S3
|
||||
grep "File saved to S3:" /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log | tail -1
|
||||
```
|
||||
|
||||
#### 3. Проверь размер файла:
|
||||
```bash
|
||||
# Если callback сработал, проверяем размер сохранённого файла
|
||||
grep "Downloaded file:" /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log | tail -1
|
||||
# Должен быть > 0 bytes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Статусы OnlyOffice callback
|
||||
|
||||
| Status | Что происходит | Callback вызывается? |
|
||||
|--------|----------------|----------------------|
|
||||
| 0 | Документ не готов | ❌ Нет |
|
||||
| 1 | Документ открыт для редактирования | ✅ Да (status=1) |
|
||||
| 2 | **Документ сохранён** | ✅ **Да (status=2)** |
|
||||
| 3 | Ошибка при сохранении | ✅ Да (с ошибкой) |
|
||||
| 4 | Документ закрыт без изменений | ✅ Да (status=4) |
|
||||
| 6 | Документ редактируется | ❌ Нет |
|
||||
| 7 | Форсированное сохранение | ✅ Да (status=7) |
|
||||
|
||||
**Важно:** Мы обрабатываем только **status=2** (документ сохранён)!
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Команды для проверки
|
||||
|
||||
### Проверка OnlyOffice:
|
||||
```bash
|
||||
# Статус
|
||||
docker ps | grep onlyoffice-standalone
|
||||
|
||||
# Healthcheck
|
||||
curl -s https://office.clientright.ru:9443/healthcheck
|
||||
|
||||
# Логи
|
||||
docker logs --tail 50 onlyoffice-standalone
|
||||
```
|
||||
|
||||
### Проверка callback:
|
||||
```bash
|
||||
# Логи callback
|
||||
tail -f /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log
|
||||
|
||||
# Тест callback
|
||||
curl -X POST "https://crm.clientright.ru/crm_extensions/file_storage/api/onlyoffice_callback.php?s3Path=test.docx" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"status":2,"key":"test123","url":"http://test.com/file.docx"}'
|
||||
```
|
||||
|
||||
### Очистка логов (если нужно):
|
||||
```bash
|
||||
# Очистить логи
|
||||
> /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log
|
||||
|
||||
# Проверить что пустой
|
||||
cat /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Что делать если НЕ работает
|
||||
|
||||
### Вариант 1: Проблема с SSL (наиболее вероятно)
|
||||
|
||||
```bash
|
||||
# Проверить конфиг OnlyOffice
|
||||
docker exec onlyoffice-standalone cat /etc/onlyoffice/documentserver/local-production-linux.json
|
||||
|
||||
# Должно быть:
|
||||
# "rejectUnauthorized": false
|
||||
|
||||
# Если нет - добавить:
|
||||
docker exec onlyoffice-standalone bash -c 'cat > /etc/onlyoffice/documentserver/local-production-linux.json << "EOF"
|
||||
{
|
||||
"services": {
|
||||
"CoAuthoring": {
|
||||
"utils": {
|
||||
"rejectUnauthorized": false
|
||||
},
|
||||
"request-filtering-agent": {
|
||||
"allowPrivateIPAddress": true,
|
||||
"allowMetaIPAddress": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
EOF
|
||||
'
|
||||
|
||||
# Перезапустить
|
||||
docker restart onlyoffice-standalone
|
||||
```
|
||||
|
||||
### Вариант 2: Использовать HTTP для callback (временно)
|
||||
|
||||
Изменить в `open_file_v2.php`:
|
||||
```php
|
||||
// Было:
|
||||
"callbackUrl": "https://crm.clientright.ru/..."
|
||||
|
||||
// Стало:
|
||||
"callbackUrl": "http://crm.clientright.ru/..."
|
||||
```
|
||||
|
||||
### Вариант 3: Добавить логирование в консоль браузера
|
||||
|
||||
Добавить в `open_file_v2.php` перед `new DocsAPI.DocEditor`:
|
||||
```javascript
|
||||
console.log('📋 OnlyOffice Config:', {
|
||||
documentType: "<?php echo $fileType; ?>",
|
||||
fileType: "<?php echo $ext; ?>",
|
||||
key: "<?php echo $documentKey; ?>",
|
||||
url: <?php echo json_encode($fileUrl); ?>,
|
||||
callbackUrl: "<?php echo $redirectUrl; ?>",
|
||||
mode: "edit",
|
||||
permissions: { edit: true }
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Успешный результат
|
||||
|
||||
**Если всё работает, ты увидишь:**
|
||||
|
||||
1. **Кнопка "Сохранить" активна** ✅
|
||||
2. **В консоли браузера:**
|
||||
```
|
||||
📁 Файл: Исковое_заявление_(проект)_395695.docx
|
||||
🔗 S3 URL: https://s3.twcstorage.ru/...
|
||||
🔑 Document Key (unique): abc123...
|
||||
✅ Standalone OnlyOffice (9443) + Direct S3 URL!
|
||||
✅ Editor ready!
|
||||
✅ Document loaded!
|
||||
```
|
||||
|
||||
3. **В логах callback:**
|
||||
```
|
||||
=== ONLYOFFICE CALLBACK ===
|
||||
Callback Status: 2
|
||||
File saved! Download URL: ...
|
||||
Saving to original path: CRM_Active_Files/...
|
||||
✅ File saved to S3
|
||||
```
|
||||
|
||||
4. **После повторного открытия:**
|
||||
- Изменения сохранены! ✅
|
||||
- Текст "ТЕСТ 123" виден!
|
||||
|
||||
---
|
||||
|
||||
**Начни с Шага 1 и отпишись о результатах!** 🚀
|
||||
|
||||
Reference in New Issue
Block a user