fix: self-referencing path in Opus review
Deploy contracts-flask / validate (push) Successful in 0s

This commit is contained in:
2026-06-29 15:19:40 +04:00
parent 0654a41d29
commit 12416115ad
3 changed files with 101 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
# Запрос Opus — диагностика DrHider «Failed to fetch»
Дата: 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-команды для диагностики на каждом шаге.