Files
crm.clientright.ru/ТЕСТИРОВАНИЕ_СОХРАНЕНИЯ_ONLYOFFICE.md
Fedor 3a1635ec4d 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
2025-11-01 10:32:51 +03:00

9.4 KiB
Raw Permalink Blame History

Тестирование сохранения в 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: Проверь логи

# Смотрим логи 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):

// Смотри на ошибки в консоли
// Ищи красные строки с "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 }
});

Успешный результат

Если всё работает, ты увидишь:

  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 и отпишись о результатах! 🚀