Files
crm.clientright.ru/ИСПРАВЛЕНИЕ_ОТКРЫТИЯ_ФАЙЛОВ_ИЗ_CRM.md
Fedor 269c7ea216 feat: OnlyOffice Standalone integration with S3 direct URLs
 ЧТО СДЕЛАНО:
- Поднят новый 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)
2025-11-01 01:02:03 +03:00

4.3 KiB
Raw Blame History

Исправление открытия файлов из 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


📋 Осталось сделать

Опционально (не срочно):

  1. Очистить старые файлы из корня Documents - переместить их в архив или удалить
  2. Настроить автоматическую очистку при миграции файлов
  3. Скрыть корень 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)

Статус: Работает