Docs: how-to-test-upload-devops; ignore llm.key
This commit is contained in:
@@ -4,3 +4,4 @@ dogovora/
|
||||
testgen/out/
|
||||
testgen/out_100files/
|
||||
contracts-flask/hz/
|
||||
llm.key
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
# Как проверить загрузку файлов в 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→…
|
||||
Reference in New Issue
Block a user