docs: Opus — reuse main service upload logic for DrHider
Deploy contracts-flask / validate (push) Successful in 0s

This commit is contained in:
2026-06-29 18:00:12 +04:00
parent 6cedab89ae
commit 74c2bdfcb7
@@ -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`)?