From 0dc5d8673dfc1f8a9c6bb2ad803af6facea40ffe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Mon, 24 Aug 2026 08:22:54 +0300 Subject: [PATCH] =?UTF-8?q?v0.0.62:=20=D0=BB=D0=B8=D0=BC=D0=B8=D1=82=D1=8B?= =?UTF-8?q?=2050=D0=9C=D0=91/=D1=84=D0=B0=D0=B9=D0=BB,=20500=D0=9C=D0=91/?= =?UTF-8?q?=D1=81=D0=B5=D1=81=D1=81=D0=B8=D1=8F=20(=D1=84=D1=80=D0=BE?= =?UTF-8?q?=D0=BD=D1=82+=D0=B1=D1=8D=D0=BA),=20=D0=BB=D0=B8=D0=BC=D0=B8?= =?UTF-8?q?=D1=82=D1=8B=20=D0=B2=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/2026-08-24-upload-limits.md | 36 +++++++++++++++++++++++++++++ site/app.py | 4 ++-- site/routes/api_bp.py | 24 ++++++++++++++++++- site/session.py | 5 ++-- site/templates/index.html | 11 +++++---- 5 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 History/2026-08-24-upload-limits.md diff --git a/History/2026-08-24-upload-limits.md b/History/2026-08-24-upload-limits.md new file mode 100644 index 0000000..149906f --- /dev/null +++ b/History/2026-08-24-upload-limits.md @@ -0,0 +1,36 @@ +# 2026-08-24 — Лимиты: 50 МБ на файл, 500 МБ на сессию (v0.0.62) + +## Контекст +- После переезда на naeel-test-3 ресурсы инстанса уменьшены до 1 CPU / 2048 MiB + (Штурвал, подтверждено kubectl: requests=limits 1CPU/2Gi). +- При 2Gi памяти лимит 1ГБ/сессия (фронт) + отсутствие лимита на файл стали опасны + (OOM-риск, сессии in-memory и теряются при рестарте). +- Пользователь: вернуть лимит — один файл 50 МБ, всего 500 МБ, и показывать лимиты во фронте. + +## Изменения +Фронт (site/templates/index.html): +- `MAX_FILE_BYTES = 50МБ`, `MAX_SESSION_BYTES = 500МБ` (было 1ГБ, лимит на файл был убран). +- `addFileWithDedup`: файл сверх 50 МБ → `overNames` («не учитывается», красный, не обфусцируется); + суммарный лимит 500 МБ — как раньше. +- Шапка: «Ограничения: один файл не более 50 МБ, суммарно не более 500 МБ...». + +Бэк: +- `site/session.py`: добавлен `MAX_FILE_BYTES = 50МБ` (рядом с `MAX_SESSION_BYTES = 500МБ`). +- `site/routes/api_bp.py` (защита): + - `POST /api/upload`: файл >50 МБ пропускается (log, continue). + - `POST /api/upload_refs`: ref с size>50МБ пропускается + DELETE с ВМ; + после pull проверяется фактический len(content)>50МБ → пропуск + DELETE. +- `site/app.py`: `MAX_CONTENT_LENGTH` 200МБ → 50МБ (защита памяти, согласовано с лимитом файла). + +Версия: 0.0.61 → 0.0.62. + +## Проверка +- py_compile app.py / session.py / api_bp.py — OK. +- node --check (извлечённый