✅ ЧТО СДЕЛАНО: - Поднят новый standalone OnlyOffice Document Server (порт 8083) - Настроен Nginx для доступа через office.clientright.ru:9443 - Создан open_file_v3_standalone.php для работы с новым OnlyOffice - Реализована поддержка прямых S3 URL (bucket публичный) - Добавлен s3_proxy.php с поддержкой Range requests - Создан onlyoffice_callback.php для сохранения (базовая версия) - Файлы успешно открываются и загружаются! ⚠️ TODO (на завтра): - Доработать onlyoffice_callback.php для сохранения обратно в ОРИГИНАЛЬНЫЙ путь в S3 - Добавить Redis маппинг documentKey → S3 path - Обновить CRM JS для использования open_file_v3_standalone.php - Протестировать сохранение файлов - Удалить тестовые файлы 📊 РЕЗУЛЬТАТ: - OnlyOffice Standalone РАБОТАЕТ! ✅ - Файлы открываются напрямую из S3 ✅ - Редактор загружается БЫСТРО ✅ - Автосохранение настроено ✅ (но нужна доработка callback)
4.3 KiB
4.3 KiB
Исправление открытия файлов из CRM
Дата: 31 октября 2025
Проблема: Файлы не открывались из CRM для редактирования в Nextcloud
🔍 Диагностика
Проблема 1: 7,295 старых файлов в корне Documents
Симптомы: Папка Documents очень долго открывается
Причина: В корне папки Documents находилось 7,295 старых файлов/папок (структура до миграции)
SELECT
CASE
WHEN path LIKE '%Project/%' THEN 'В Project (OK)'
WHEN path LIKE '%Contacts/%' THEN 'В Contacts (OK)'
WHEN path LIKE '%Accounts/%' THEN 'В Accounts (OK)'
WHEN path LIKE '%HelpDesk/%' THEN 'В HelpDesk (OK)'
WHEN path LIKE '%Invoice/%' THEN 'В Invoice (OK)'
ELSE 'В корне Documents (ПЛОХО!)'
END as location,
COUNT(*) as count
FROM oc_filecache
WHERE storage = 4
AND path LIKE 'crm2/CRM_Active_Files/Documents/%'
GROUP BY location;
Результат:
- Project: 11,547 файлов ✅
- Contacts: 2,323 файлов ✅
- Accounts: 155 файлов ✅
- HelpDesk: 71 файлов ✅
- Invoice: 38 файлов ✅
- В корне Documents: 7,295 файлов ❌
Решение: Рекомендуется не открывать корень Documents, а работать напрямую с подпапками:
Documents/Project/Documents/Contacts/Documents/Accounts/
Проблема 2: Неправильный редирект в open_file_v2.php
Симптомы: Файлы не открывались из CRM после редиректа
Причина: URL содержал лишний параметр dir=/:
// ❌ БЫЛО:
$redirectUrl = $nextcloudUrl . '/apps/files/files/' . $fileId . '?dir=/&editing=true&openfile=true';
// ✅ СТАЛО:
$redirectUrl = $nextcloudUrl . '/apps/files/files/' . $fileId . '?editing=true&openfile=true';
Файл: /var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php
Изменение: Удалён параметр dir=/ из редиректа
✅ Проверка работоспособности
Тест скрипта локально:
php -r "
\$_GET['fileName'] = 'https://s3.twcstorage.ru/.../Исковое_заявление_(проект)_395695.docx';
\$_GET['recordId'] = '395695';
require '/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php';
"
Результат:
Nextcloud Editor: PROPFIND -> https://office.clientright.ru:8443/remote.php/dav/files/admin/crm/...
Nextcloud Editor: HTTP код: 207
Nextcloud Editor: Получен fileId: 86323
Nextcloud Editor: Redirect to https://office.clientright.ru:8443/apps/files/files/86323?editing=true&openfile=true
✅ Работает!
Тест редиректа:
curl -I "https://office.clientright.ru:8443/apps/files/files/86323?editing=true&openfile=true" --user admin:office
Результат: HTTP/2 200 ✅
📋 Осталось сделать
Опционально (не срочно):
- Очистить старые файлы из корня Documents - переместить их в архив или удалить
- Настроить автоматическую очистку при миграции файлов
- Скрыть корень Documents в интерфейсе, если он не используется
Текущее состояние:
- ✅ Файлы открываются из CRM
- ✅ Редактирование работает
- ✅ Collabora Online подключён
- ⚠️ Корень Documents открывается медленно (7,295 объектов)
- ✅ Подпапки открываются быстро
🎯 Итог
Главное исправление: Удалён лишний параметр dir=/ из URL редиректа
Файл изменён:
/var/www/fastuser/data/www/crm.clientright.ru/crm_extensions/file_storage/api/open_file_v2.php(строка 102)
Статус: ✅ Работает