# Как проверить загрузку файлов в Contracts (для DevOps Nubes) Цель: воспроизвести «чистую» загрузку файла с клиента на сервер, без обработки, чтобы поймать обрыв на ингрессе/периметре (граница ~64 КБ, плавает по маршруту). ## 1. Какой инстанс / где смотреть - Деплой и домен: смотри `contracts-flask/deploy/` и `VM.md` (в этой репе). - Внешний путь: NSX Edge + AVI ALB → Kubernetes Ingress (nginx) → поды Flask. - Сервер отдаёт **именно загрузку файлов**: интерфейс = выбор файла в локали → клиент режет на чанки 50 КБ → POST `/chunk` → сервер копит и собирает файл. ## 2. Что важно знать (контекст из истории) - Проблема ингресса уже встречалась: прямой POST файла резался `client_max_body_size` (весной, PDF 153 КБ → «✗ Сеть»). - Сейчас обход — **чанковая загрузка по 50 КБ** (`file.slice(0,50KB)` → `/chunk`). Значит, «большой файл» для проверки = много чанков, а не один POST. - Для диагностики полезно проверить ОБА способа: а) обычная загрузка через UI (чанки); б) прямой большой POST = то, что ближе к «чистому» обрыву на шлюзе. ## 3. Как проверять (по шагам) ### Шаг 1. Поднять/найти инстанс - Определи, где сейчас развёрнут сервис (см. `deploy/`, `VM.md`). - Убедись, что сервис отвечает (лендинг/UI). ### Шаг 2. Чистая загрузка через UI (чанки) - В веб-интерфейсе выбери файл в локали (начни с 1–5 МБ). - Наблюдай прогресс: чанки должны идти последовательно. - Критерий сбоя: прогресс встаёт, «✗ Сеть», или не хватает чанков при сборе. ### Шаг 3. Прямой большой POST (обнажает границу шлюза) - Одним запросом отправь файл ~1–5 МБ на endpoint загрузки. - Ожидание: если проблема есть — запрос обрывается на ~середине, частичная передача, таймаут. - Сравни с малым файлом (~10 КБ): должен пройти мгновенно. ### Шаг 4. Серия размеров (найти границу) - Прогони один и тот же файл в размерах: ~10 КБ, ~50 КБ, ~64 КБ, ~100 КБ, ~1 МБ, ~5 МБ. - Зафиксируй порог, с которого начинаются сбои (у нас он плавает ~64 КБ). ### Шаг 5. Снять симптомы «глазами пользователя» - Что видит пользователь: прогресс%, код ошибки браузера, «Сеть»/таймаут. - Если есть доступ к подам: логи nginx-ингресса и пода на момент обрыва (хватит ли байт пришло). ## 4. Что сообщить DevOps по результатам - Размер, на котором воспроизводится обрыв (порог). - Это чанки или прямой POST. - Точное время и домен инстанса (у нас баг нестабилен — плавает по маршруту, поэтому важно поймать момент и передать «на горячем»). ## 5. Полезные ссылки из репо - `History/sessions/session-07-chunks.md` — вся история чанковой загрузки и обхода `client_max_body_size`. - `History/architecture-research-v2-2026-06-27.md` — поток Upload→Parse→…