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