Files
contracts-flask/History/opus-drhider-debug-2026-06-29.md
T
naeel ac8b325896
Deploy contracts-flask / validate (push) Successful in 0s
fix: full paths in all Opus History files
2026-06-29 16:54:44 +04:00

3.6 KiB
Raw Blame History

Запрос Opus — диагностика DrHider «Failed to fetch»

Файл: /home/naeel/nubes/contracts/contracts-flask/History/opus-drhider-debug-2026-06-29.md

Дата: 29.06.2026

Ситуация

Сервис DrHider развёрнут по архитектуре: Managed Flask (прокси) → VM (обработка).

Пользователь заходит на https://contractor.pythonk8s.services.ngcloud.ru/DrHider, выбирает файл, жмёт «Обфусцировать» → получает ❌ Ошибка: Failed to fetch.

«Failed to fetch» — это браузерная ошибка, значит JS-запрос POST /api/drhider не дошёл до сервера или ответ не получен.

Архитектура

Браузер → Managed Flask (contractor.pythonk8s...) → VM (contracts.kube5s.ru:8766)
         /DrHider        отдаёт HTML
         POST /api/drhider   проксирует файлы на VM → /api/drhider
                              VM делает обфускацию с LLM → возвращает ZIP

Что проверено

  1. VM: convert_server.py перезапущен, curl http://127.0.0.1:8766/health → 200 OK. Роут /api/drhider добавлен в do_POST.
  2. Модуль: services/drhider.py скопирован на VM в ~/contracts/services/drhider.py.
  3. Git: все изменения запушены.

Что НЕ проверено / неизвестно

  1. Managed Flask редеплоился ли? Код запушен, но редеплой ручной через Nubes UI. Если редеплоя не было — роута /api/drhider не существует → Flask возвращает 404 → браузер показывает «Failed to fetch» (не JSON, не ZIP).

  2. LLM env vars на VM. LLM_API_KEY установлен? Если нет — HttpxLLMClient создастся, но вызов llm.complete() упадёт.

  3. parse_multipart на VM. Файлы с managed Flask приходят как multipart/form-data. services/upload.py:parse_multipart() ожидает определённый формат. Совместим ли он с тем что шлёт managed Flask?

  4. Таймаут. Managed Flask → VM: httpx.Client(timeout=300). Но сама обфускация с LLM-NER для 100+ файлов может занять минуты. Не оборвётся ли соединение?

  5. CORS. Managed Flask делает запрос к VM. Это сервер-сервер, CORS не нужен. Но браузер делает запрос к managed Flask — тут CORS в порядке (same origin).

  6. nginx на VM. Проксирует ли nginx POST /api/drhider на порт 8766? Или роут не прописан в nginx-contracts.conf?

Что нужно проверить Опуса

Скажи КАК диагностировать каждый пункт и в каком порядке:

  1. Проверить что managed Flask действительно задеплоен с новым кодом (GET /DrHider возвращает НОВЫЙ HTML, не старую страницу)
  2. Проверить что POST /api/drhider на managed Flask отвечает (curl с файлом)
  3. Проверить что nginx на VM проксирует /api/drhider
  4. Проверить что LLM_API_KEY есть на VM
  5. Проверить полный цикл: curl managed Flask → VM → ответ

Конкретные curl-команды для диагностики на каждом шаге.