- Добавлен 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
9.4 KiB
9.4 KiB
Тестирование сохранения в 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: Проверь кнопку "Сохранить"
Что должно быть:
- ✅ Кнопка "Сохранить" активна (не серая)
- ✅ Можно редактировать текст
- ✅ В правом верхнем углу есть меню "Файл"
Если кнопка НЕАКТИВНА:
- Открой консоль браузера (F12)
- Посмотри на ошибки (красные строки)
- Сделай скриншот и покажи
Шаг 3: Внеси изменения
- Добавь текст в документ (например: "ТЕСТ 123")
- Нажми Ctrl+S или кнопку "Сохранить"
- Подожди 2-3 секунды
Шаг 4: Проверь логи
# Смотрим логи 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: Закрой файл и открой снова
- Закрой вкладку с редактором
- Открой тот же файл из CRM заново
- Проверь - изменения должны быть видны! ✅
🔍 Отладка
Если кнопка "Сохранить" неактивна:
1. Консоль браузера (F12):
// Смотри на ошибки в консоли
// Ищи красные строки с "error", "callback", "ssl"
2. Network tab (вкладка "Сеть"):
- Открой вкладку "Network" (Сеть)
- Обнови страницу с файлом
- Найди запрос к "api.js"
- Посмотри статус (должен быть 200)
3. Проверь OnlyOffice логи:
docker logs --tail 50 onlyoffice-standalone 2>&1 | grep -i "error\|callback"
4. Проверь доступность 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":1,"key":"test"}'
# Должен вернуть: {"error":0}
Если файл НЕ сохраняется:
1. Проверь логи callback:
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 доступ:
# Проверяем что файл есть в S3
grep "File saved to S3:" /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/onlyoffice_callback.log | tail -1
3. Проверь размер файла:
# Если 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:
# Статус
docker ps | grep onlyoffice-standalone
# Healthcheck
curl -s https://office.clientright.ru:9443/healthcheck
# Логи
docker logs --tail 50 onlyoffice-standalone
Проверка callback:
# Логи 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"}'
Очистка логов (если нужно):
# Очистить логи
> /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 (наиболее вероятно)
# Проверить конфиг 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:
// Было:
"callbackUrl": "https://crm.clientright.ru/..."
// Стало:
"callbackUrl": "http://crm.clientright.ru/..."
Вариант 3: Добавить логирование в консоль браузера
Добавить в open_file_v2.php перед new DocsAPI.DocEditor:
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 }
});
✅ Успешный результат
Если всё работает, ты увидишь:
-
Кнопка "Сохранить" активна ✅
-
В консоли браузера:
📁 Файл: Исковое_заявление_(проект)_395695.docx 🔗 S3 URL: https://s3.twcstorage.ru/... 🔑 Document Key (unique): abc123... ✅ Standalone OnlyOffice (9443) + Direct S3 URL! ✅ Editor ready! ✅ Document loaded! -
В логах callback:
=== ONLYOFFICE CALLBACK === Callback Status: 2 File saved! Download URL: ... Saving to original path: CRM_Active_Files/... ✅ File saved to S3 -
После повторного открытия:
- Изменения сохранены! ✅
- Текст "ТЕСТ 123" виден!
Начни с Шага 1 и отпишись о результатах! 🚀