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)
This commit is contained in:
Fedor
2025-11-01 01:02:03 +03:00
parent d7941ac862
commit 269c7ea216
4383 changed files with 282112 additions and 7731 deletions

View File

@@ -0,0 +1,116 @@
# Исправление открытия файлов из CRM
**Дата:** 31 октября 2025
**Проблема:** Файлы не открывались из CRM для редактирования в Nextcloud
## 🔍 Диагностика
### Проблема 1: 7,295 старых файлов в корне Documents
**Симптомы:** Папка Documents очень долго открывается
**Причина:** В корне папки Documents находилось 7,295 старых файлов/папок (структура до миграции)
```sql
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=/`:
```php
// ❌ БЫЛО:
$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=/` из редиректа
---
## ✅ Проверка работоспособности
### Тест скрипта локально:
```bash
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
```
**Работает!**
### Тест редиректа:
```bash
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)
**Статус:** ✅ Работает