diff --git a/History/opus-drhider-reuse-logic-2026-06-29.md b/History/opus-drhider-reuse-logic-2026-06-29.md new file mode 100644 index 0000000..830f2c3 --- /dev/null +++ b/History/opus-drhider-reuse-logic-2026-06-29.md @@ -0,0 +1,37 @@ +# Opus — DrHider: использовать логику основного сервиса + +Файл: `/home/naeel/nubes/contracts/contracts-flask/History/opus-drhider-reuse-logic-2026-06-29.md` + +29.06.2026 + +## Проблема + +DrHider с нуля изобрёл загрузку файлов (JSON+base64, чанки), хотя основной сервис Сверки УЖЕ делает загрузку корректно через multipart/form-data напрямую на VM. Это привело к багам (переполнение аргументов JS, битый base64, HTTP/2 глюки). + +## Что нужно + +Использовать ту же логику загрузки что в основном сервисе: + +1. JS: `FormData` + `fetch` → POST multipart на VM (`contracts.kube5s.ru/api/drhider`) +2. VM (`convert_server.py`): принимать multipart, парсить (как в `handle_upload`), отдавать ZIP + +Не JSON. Не base64. Как в Сверке. + +## Файлы для анализа + +Основной сервис (рабочая загрузка): +- `/home/naeel/nubes/contracts/contracts-flask/site/templates/index.html` — JS загрузки (FormData, fetch, drag&drop) +- `/home/naeel/nubes/contracts/contracts-flask/deploy/convert_server.py` — `handle_upload` (multipart приём, `parse_multipart`) +- `/home/naeel/nubes/contracts/contracts-flask/deploy/services/upload.py` — `parse_multipart`, `store_document` + +DrHider (что есть сейчас): +- `/home/naeel/nubes/contracts/contracts-flask/site/templates/drhider.html` — JS с JSON+base64 (кривое) +- `/home/naeel/nubes/contracts/contracts-flask/deploy/convert_server.py` — `_handle_drhider` (JSON приём) +- `/home/naeel/nubes/contracts/contracts-flask/deploy/services/drhider.py` — ядро (ок) + +## Вопросы + +1. Можно ли скопировать JS-логику загрузки из index.html в drhider.html 1:1? FormData, fetch на VM, progress? +2. Можно ли в `_handle_drhider` использовать `parse_multipart` из `services/upload.py` как в `handle_upload`? +3. Как совместить приём multipart + вызов `obfuscate_files()` + отдача ZIP — минимальными изменениями? +4. Нужно ли добавлять отдельный nginx location для `/api/drhider` с `client_max_body_size` (как для `/upload`)?