Files
contracts-flask/History/opus-drhider-debug-2026-06-29.md
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

54 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
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.
# Запрос 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-команды для диагностики на каждом шаге.