# Тестирование сохранения в 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: "", fileType: "", key: "", url: , callbackUrl: "", 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 и отпишись о результатах!** 🚀