2.5 KiB
2.5 KiB
Запрос к Соннету — архитектура пофайловой обработки с одним ZIP (2026-07-13)
Задача
DrHider (Flask + waitress). Ограничения:
- Фронтенд должен слать файлы по одному (сеть не пропускает большие multipart)
- Бэкенд должен обрабатывать по одному (без параллельных LLM-запросов)
- Результат: один ZIP со всеми обфусцированными .md + один общий mapping.csv
- Никакой обработки данных в JS — фронтенд только кнопки и скачивание
Варианты
А. Upload → Process
POST /api/upload— один файл →{session:"abc"}- Фронтенд циклом шлёт все, получает session
POST /api/process/abc— бэкенд обрабатывает всё → ZIP- Фронтенд скачивает ZIP
Б. Один запрос, все файлы
- Фронтенд: один POST, все файлы в FormData
- Бэкенд: получил все → обработал по одному → ZIP
- Waitress держит долгое соединение, таймаут 600с
В. SSE с прогрессом
POST /api/start→{session:"abc"}POST /api/upload/abc— по одному файлуGET /api/process/abc— SSE стримит прогресс каждого файла и в конце ZIP
Вопросы
- Какой вариант правильный для Flask + waitress?
- Вариант Б — пройдёт ли большой multipart через ingress (6 файлов × 30-60 KB)?
- Если А — как чистить сессии? (пользователь закрыл вкладку, файлы остались в памяти)
- Нужен ли SSE или достаточно простого XHR с таймером?
- mapping.csv — генерировать на лету (по мере обработки) или после всех файлов?
Сейчас работает (но сломано)
Сейчас: фронтенд шлёт по одному файлу, каждый получает отдельный ZIP. Пользователь хочет один ZIP в конце. JS обрабатывал ZIP'ы (распаковывал/перепаковывал) — это убрали, всё должно быть на бэкенде.