- Добавлен 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
302 lines
9.4 KiB
Markdown
302 lines
9.4 KiB
Markdown
# Тестирование сохранения в 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 и отпишись о результатах!** 🚀
|
||
|