Files
drhider/History/2026-07-13-sonnet-query-architecture.md
T

2.5 KiB
Raw Blame History

Запрос к Соннету — архитектура пофайловой обработки с одним 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'ы (распаковывал/перепаковывал) — это убрали, всё должно быть на бэкенде.