From 2a735e34f89e50df136d37bb8b85a111b38ca398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sun, 23 Aug 2026 07:04:48 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BF=D0=BB=D0=B0=D0=BD=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82-=D1=80=D0=B5=D0=B6=D0=B8=D0=BC=D0=B0=20'=D1=82?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83?= =?UTF-8?q?=D0=B7=D0=BA=D0=B0'=20(=3Fupload-only=3D1)=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D0=92?= =?UTF-8?q?=D0=9C-=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B1=D0=B5=D0=B7=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/2026-08-23-test-upload-only-plan.md | 106 ++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 History/2026-08-23-test-upload-only-plan.md diff --git a/History/2026-08-23-test-upload-only-plan.md b/History/2026-08-23-test-upload-only-plan.md new file mode 100644 index 0000000..323b593 --- /dev/null +++ b/History/2026-08-23-test-upload-only-plan.md @@ -0,0 +1,106 @@ +# ПЛАН: тест-режим «только загрузка» (для Флэша) + +_Дата: 2026-08-23. Цель: при нажатии «Обфусцировать» — только загрузить файлы +(браузер→ВМ→Flask), НЕ запускать обработку (SSE/LLM/обфускацию)._ + +## Суть + +Добавить флаг тест-режима в фронтенд. Когда он включён, `uploadFiles()` проходит +Фазу 1 полностью (PUT на ВМ + `POST /api/upload_refs` — pull в сессию), а потом +**останавливается до Фазы 2** (не открывает EventSource, не запускает обработку). + +Плюс опциональный отладочный endpoint на бэке — проверить, что файлы реально +легли в сессию с корректными размерами. + +--- + +## Изменение 1 — флаг (site/templates/index.html) + +В начало скрипта, рядом с `VM_UPLOAD_URL` (строка ~201), добавить: + +```js +// Тест-режим: открыть страницу с ?upload-only=1 → только загрузка, без обработки +const TEST_UPLOAD_ONLY = new URLSearchParams(location.search).get('upload-only') === '1'; +``` + +## Изменение 2 — ранний выход после загрузки (site/templates/index.html) + +В `uploadFiles()`, сразу ПОСЛЕ блока «Шаг 1b» (try/catch `POST /api/upload_refs`) +и ПЕРЕД комментарием `// Фаза 2: обработка (SSE — прогресс по каждому файлу)`. + +При этом в шаге 1b зафиксировать число загруженных файлов. Сейчас там: + +```js + const data = await resp.json(); + if (!data.ok) throw new Error(data.error || 'HTTP ' + resp.status); + currentSid = data.session; +``` + +Запомнить count: + +```js + const data = await resp.json(); + if (!data.ok) throw new Error(data.error || 'HTTP ' + resp.status); + currentSid = data.session; + uploadedCount = data.count || refs.length; // сколько реально легло в сессию +``` + +(объявить `let uploadedCount = 0;` рядом с `const refs = [];` в начале Фазы 1). + +Сразу после `catch` шага 1b вставить: + +```js + if (TEST_UPLOAD_ONLY) { + st.className = 'status done'; + st.textContent = '✅ Загружено ' + uploadedCount + ' файлов (тест: обработка пропущена). Сессия: ' + currentSid; + ub.disabled = false; + return; + } +``` + +То есть: показываем итог, снова включаем кнопку, выходим из функции. Фаза 2 не выполняется. + +## Изменение 3 (опционально, рекомендуется) — debug-endpoint (site/routes/api_bp.py) + +Чтобы проверить размеры файлов в сессии (не повредились ли при pull), добавить: + +```python +@api_bp.route("/session_files/", methods=["GET"]) +def session_files(sid): + """Отладка: список файлов сессии с размерами.""" + files = get_files(sid) + if files is None: + return jsonify({"ok": False, "error": "Session not found"}), 404 + return jsonify({ + "ok": True, "count": len(files), + "files": [{"name": n, "size": len(b)} for n, b in files], + }) +``` + +`get_files` уже импортирован в `api_bp.py`. Endpoint временный — убрать после теста. + +--- + +## Как тестировать + +1. Поднять сервис (локально `cd site && python app.py` или redeploy на Штурвале). +2. Открыть `https://drhider.pythonk8s.dev.nubes.ru/?upload-only=1` (или `http://127.0.0.1:5000/?upload-only=1`). +3. Выбрать файлы (в т.ч. большой >1МБ), нажать «Обфусцировать». +4. Ожидать: прогресс «Загрузка на ВМ…» по каждому файлу → «Передача ссылок…» → + «✅ Загружено N файлов (тест: обработка пропущена)». SSE НЕ открывается. +5. (Если сделан п.3) в консоли/curl: `curl /api/session_files/` → сверить `size` с оригиналом. +6. Проверить на ВМ: после pull файлы удалены (`ls /var/www/drhider-upload/` пусто). + +## Как вернуть обратно (после теста) + +- Флаг `TEST_UPLOAD_ONLY` без `?upload-only=1` даёт обычное поведение — **ничего выпиливать не надо**, + режим включается только query-параметром. +- Debug-endpoint (п.3) — убрать, когда тест завершён (или оставить под комментарием «отладка»). + +## Замечания + +- НЕ трогать бэк-логику pull (`/api/upload_refs`) — она уже работает (v0.0.58). +- НЕ менять Фазу 2 (SSE) — только добавить ранний `return` до неё. +- После правки: `python3 -c "import py_compile; py_compile.compile('site/routes/api_bp.py', doraise=True)"`, + JS проверить `node --check` (извлечь блок `