🔧 Исправления: - Исправлены пути к папкам проектов: теперь /Documents/Project/{Name}_{Id} - Исправлена функция openProjectFolder() во всех JS файлах - Добавлены кнопки создания Word/Excel/PowerPoint из CRM (10 модулей) - Создание файлов напрямую в S3 с автоиндексацией через Redis - Исправлена ошибка 'Class Redis not found' (использован Predis) 📁 Изменённые файлы: - layouts/v7/lib/nextcloud-editor.js - crm_extensions/nextcloud_editor/js/nextcloud-editor.js - layouts/v7/lib/nextcloud-editor-v3.js - crm_extensions/file_storage/api/create_nextcloud_file.php - layouts/v7/modules/*/DetailViewHeaderTitle.tpl (10 модулей) - layouts/v7/modules/Documents/*.tpl (кнопки редактирования) 🎯 Результат: - Кнопка 'Папка в Nextcloud' открывает правильную папку - Создание файлов работает молниеносно (прямо в S3) - Redis события публикуются корректно - OnlyOffice открывается для редактирования Проект 391552 теперь открывается по правильному пути!
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)
Статус: ✅ Работает