Files
crm.clientright.ru/analyze_folder_button.php
Fedor 01c4fe80b5 chore: snapshot current working tree changes
Save all currently accumulated repository changes as a backup snapshot for Gitea so no local work is lost.
2026-03-26 14:19:01 +03:00

134 lines
8.5 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Анализ работы кнопки "Папка в Nextcloud"
*/
error_reporting(E_ALL);
ini_set('display_errors', 1);
echo "════════════════════════════════════════════════════════════════════════════════\n";
echo "🔍 АНАЛИЗ КНОПКИ 'ПАПКА В NEXTCLOUD'\n";
echo "════════════════════════════════════════════════════════════════════════════════\n\n";
// 1. Как работает кнопка
echo "1КАК РАБОТАЕТ КНОПКА:\n";
echo "────────────────────────────────────────────────────────────────────────────\n";
echo " 📋 JavaScript функция: openProjectFolder() или openRecordFolder()\n";
echo " 📍 Файл: layouts/v7/lib/nextcloud-editor.js (строка 9)\n\n";
echo " 🔗 Формируемый URL:\n";
echo " https://office.clientright.ru:8443/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/Project/ИмяПроекта_123\n\n";
echo " ⚙️ Что происходит:\n";
echo " 1. JavaScript формирует URL с параметром dir=\n";
echo " 2. window.open() открывает этот URL в новом окне\n";
echo " 3. Nextcloud веб-интерфейс загружается\n";
echo " 4. Nextcloud делает запросы для получения списка файлов\n\n";
// 2. Что делает Nextcloud при открытии этого URL
echo "2⃣ ЧТО ДЕЛАЕТ NEXTCLOUD ПРИ ОТКРЫТИИ:\n";
echo "────────────────────────────────────────────────────────────────────────────\n";
echo " 📊 Nextcloud веб-интерфейс использует СВОЙ внутренний API:\n\n";
echo " 🔍 Возможные запросы:\n";
echo " 1. /index.php/apps/files/ajax/list.php?dir=...\n";
echo " - Получение списка файлов\n";
echo " - Может делать PROPFIND к S3\n";
echo " - Проверяет кеш (oc_filecache)\n\n";
echo " 2. /index.php/apps/files/api/v1/files?dir=...\n";
echo " - REST API для списка файлов\n";
echo " - Возвращает JSON\n\n";
echo " 3. Дополнительные запросы:\n";
echo " - Метаданные файлов\n";
echo " - Права доступа\n";
echo " - Превью (если включены)\n";
echo " - Теги и комментарии\n\n";
// 3. Почему это медленно
echo "3⃣ ПОЧЕМУ ЭТО МЕДЛЕННО:\n";
echo "────────────────────────────────────────────────────────────────────────────\n";
echo " ❌ ПРОБЛЕМА 1: Nextcloud проверяет кеш (oc_filecache)\n";
echo " - Если кеш устарел → сканирует S3\n";
echo " - filesystem_check_changes=0 должно помочь, но...\n";
echo " - При открытии через веб-интерфейс все равно проверяет!\n\n";
echo " ❌ ПРОБЛЕМА 2: Множественные запросы\n";
echo " - Не один запрос, а несколько\n";
echo " - Каждый запрос = задержка\n";
echo " - Особенно если файлов много\n\n";
echo " ❌ ПРОБЛЕМА 3: JavaScript загружает данные постепенно\n";
echo " - Сначала структура\n";
echo " - Потом метаданные\n";
echo " - Потом превью\n";
echo " - Каждый этап = задержка\n\n";
echo " ❌ ПРОБЛЕМА 4: Nextcloud может сканировать всю папку\n";
echo " - Даже если нужно показать только один уровень\n";
echo " - Проверяет все подпапки\n";
echo " - Особенно при filesystem_check_changes=1\n\n";
// 4. Проверяем реальный URL
echo "4⃣ ПРОВЕРКА РЕАЛЬНОГО URL:\n";
echo "────────────────────────────────────────────────────────────────────────────\n";
$testUrl = 'https://office.clientright.ru:8443/apps/files/?dir=/crm/crm2/CRM_Active_Files/Documents/Project';
echo " 🔗 Тестовый URL: $testUrl\n\n";
echo " ⚠️ Этот URL открывает ВЕБ-ИНТЕРФЕЙС Nextcloud\n";
echo " - Загружается весь JavaScript\n";
echo " - Делаются запросы к внутреннему API\n";
echo " - Рендерится интерфейс\n";
echo " - Это НЕ прямой WebDAV запрос!\n\n";
// 5. Разница с n8n
echo "5⃣ РАЗНИЦА С n8n:\n";
echo "────────────────────────────────────────────────────────────────────────────\n";
echo " ✅ n8n использует:\n";
echo " /remote.php/dav/files/admin/crm/.../Project/...\n";
echo " - Прямой WebDAV PROPFIND запрос\n";
echo " - Один запрос = один ответ\n";
echo " - Быстро! ⚡\n\n";
echo " ❌ Кнопка использует:\n";
echo " /apps/files/?dir=/crm/.../Project/...\n";
echo " - Веб-интерфейс Nextcloud\n";
echo " - Множественные запросы\n";
echo " - Медленно! 🐌\n\n";
// 6. Решение
echo "6⃣ РЕШЕНИЕ:\n";
echo "────────────────────────────────────────────────────────────────────────────\n";
echo " 💡 ВАРИАНТ 1: Использовать прямой WebDAV URL (как n8n)\n";
echo " Вместо: /apps/files/?dir=...\n";
echo " Использовать: /remote.php/dav/files/admin/...\n";
echo " Но это откроет XML, а не красивый интерфейс\n\n";
echo " 💡 ВАРИАНТ 2: Создать свой endpoint в CRM\n";
echo " - Делает PROPFIND запрос (как n8n)\n";
echo " - Парсит XML\n";
echo " - Возвращает JSON\n";
echo " - Показывает свой интерфейс (быстро!)\n\n";
echo " 💡 ВАРИАНТ 3: Использовать fileId из Redis\n";
echo " - Берем fileId папки из Redis индекса\n";
echo " - Открываем через: /apps/files/files/{fileId}\n";
echo " - Это может быть быстрее, чем через dir=\n\n";
echo " 💡 ВАРИАНТ 4: Кешировать результаты в Redis\n";
echo " - При открытии папки проверяем кеш\n";
echo " - Если есть - показываем сразу\n";
echo " - Если нет - делаем запрос, кешируем\n\n";
echo "════════════════════════════════════════════════════════════════════════════════\n";
echo "✅ ИТОГ: Кнопка открывает веб-интерфейс, который делает много запросов\n";
echo "💡 Решение: Использовать прямой WebDAV API или создать свой endpoint\n";
echo "════════════════════════════════════════════════════════════════════════════════\n";