From 551ed8cf42b1c61dfeb59ce8b279f74f835b774f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 20 Aug 2026 07:25:02 +0300 Subject: [PATCH] =?UTF-8?q?v0.0.50:=20=D0=BB=D0=B8=D0=BC=D0=B8=D1=82=D1=8B?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20(>100?= =?UTF-8?q?=D0=9C=D0=91/=D1=84=D0=B0=D0=B9=D0=BB,=20>1=D0=93=D0=91=20?= =?UTF-8?q?=D1=81=D1=83=D0=BC=D0=BC=D0=B0)=20=E2=80=94=20=D0=BA=D1=80?= =?UTF-8?q?=D0=B0=D1=81=D0=BD=D0=B0=D1=8F=20=D0=BF=D0=BE=D0=B4=D1=81=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=BA=D0=B0=20=D0=B2=20=D1=82=D0=B0=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D1=86=D0=B5,=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=B7=20=D0=BE=D0=B1=D1=84?= =?UTF-8?q?=D1=83=D1=81=D0=BA=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- History/2026-08-20-upload-limits.md | 36 +++++++++++++ site/app.py | 2 +- site/templates/index.html | 80 ++++++++++++++++++++++------- 3 files changed, 99 insertions(+), 19 deletions(-) create mode 100644 History/2026-08-20-upload-limits.md diff --git a/History/2026-08-20-upload-limits.md b/History/2026-08-20-upload-limits.md new file mode 100644 index 0000000..fb24c3d --- /dev/null +++ b/History/2026-08-20-upload-limits.md @@ -0,0 +1,36 @@ +# 2026-08-20 — Лимиты загрузки + предупреждение в таблице (v0.0.50) + +## Проблема +Юзер грузил всё подряд (сотни МБ, включая >200МБ) → HTTP 413 / SSE-обрыв. +Требование: понятная политика лимитов, но файлы сверх лимита НЕ молча скрывать — +показывать в таблице, чтобы юзер не повторял загрузку в недоумении. + +## Решение (фронт, index.html) +Лимиты: +- 1 файл > 100 МБ → «не учитывается» +- сумма учитываемых > 1 ГБ → следующий файл тоже «не учитывается» + +Логика: +- `MAX_FILE_BYTES = 100МБ`, `MAX_SESSION_BYTES = 1ГБ` (константы). +- `addFileWithDedup`: файл сверх лимита добавляется в `sf` (виден в таблице), + но имя кладётся в `overNames` (Set). Учитываемость считаем по не-overNames. +- `rr()`: строки с `overNames` получают класс `row-over` (красный фон/текст), + статус «🔥 не учитывается»; счётчик: «N учитываются + M свыше лимита · СУММА». +- `uploadFiles()`: строит `toSend` ТОЛЬКО из учитываемых, `sendIdx` маппит + idx-отправленного → idx в `sf` (прогресс/таймеры/start/done пишут в верную строку). + Если все переборные → «Нет файлов для обфускации (все превышают лимит)». +- Шапка: добавлена строка «Ограничения: файл не более 100 МБ, суммарно не более + 1 ГБ. Файлы сверх лимита помечаются красным и не участвуют в обфускации.» +- CSS: `.row-over td { background: rgba(220,38,38,.10) !important; color:#c0392b; }`. +- `rm`/`resetAll` — чистят `overNames`. + +Бэк НЕ менялся (MAX_CONTENT_LENGTH=200МБ, MAX_SESSION_BYTES=500МБ остались как защита +на сервере). Внимание: бэк-лимит 200МБ/запрос и 500МБ/сессия всё ещё ниже фронтовых +1ГБ — для файлов 100МБ-200МБ фронт пустит, но одиночный запрос >200МБ упадёт 413. +Это можно согласовать позже, если нужно. + +## Проверка +- node --check секции