38 lines
2.4 KiB
Markdown
38 lines
2.4 KiB
Markdown
# 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`)?
|