Files
drhider/History/ux-frontend/2026-08-20-upload-limits.md
T

37 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 секции <script> index.html — OK.
- py_compile app.py — OK.
- Лог-тест лимитов через node: 120МБ→перебор, 13 учитываемых ~995МБ, >1ГБ→перебор — верно.
- VERSION поднята до 0.0.50.