2.6 KiB
2.6 KiB
Opus — анализ: переиспользовать логику загрузки Сверки для DrHider
Файл: /home/naeel/nubes/contracts/contracts-flask/History/opus-drhider-reuse-analysis-2026-06-29.md
29.06.2026
Ключевые выводы
1. JS: копировать паттерн, не 1:1
Основная загрузка в /home/naeel/nubes/contracts/contracts-flask/deploy/files.js:
XMLHttpRequest+FormData+xhr.upload.onprogress- Один файл, ждёт JSON с
doc_id - Умеет
.doc → /convert-doc
Для DrHider адаптировать:
files.forEach(f => fd.append('files', f, f.name))— много файловxhr.responseType = 'blob'— ждём ZIPonload→ скачивание ZIP- POST на
VM_API + '/api/drhider' - Drag&drop оставить из текущего drhider.html
2. parse_multipart — для ОДНОГО файла
/home/naeel/nubes/contracts/contracts-flask/deploy/services/upload.py:parse_multipart берёт fs["files"], если список — item[0]. Только первый файл.
Нужен мульти-парсер той же техникой: cgi.FieldStorage + пройти по всем элементам fs["files"].
3. _handle_drhider: заменить JSON/base64 на multipart
Локальная правка ~15 строк:
content_type = self.headers.get("Content-Type")cl = Content-Length,raw = self.rfile.read(cl)- Мульти-парс →
files - Остальное не трогать:
obfuscate_files(files, llm_client=_VMLLM())+ отправка ZIP
4. Nginx: нужен CORS + timeout
Текущий /api/ — 30s timeout, без CORS для OPTIONS.
Для /api/drhider:
client_max_body_size 100mproxy_read_timeout 300s- CORS: preflight OPTIONS +
Access-Control-Allow-Origin
5. Рассинхрон бэкендов
drhider.html шлёт на относительный /api/drhider → managed Flask.
Нужно: слать на https://contracts.kube5s.ru/api/drhider (VM напрямую).
Flask-обработчик убрать.
План правок
/home/naeel/nubes/contracts/contracts-flask/site/templates/drhider.html— JS: XHR+FormData вместо fetch+JSON, URL на VM/home/naeel/nubes/contracts/contracts-flask/deploy/convert_server.py—_handle_drhider: multipart вместо JSON/etc/nginx/sites-enabled/nginx-contracts.conf— CORS для/api/drhider/home/naeel/nubes/contracts/contracts-flask/site/app.py— убрать/api/drhider