docs: History — чистка legacy-upload + сводка сессии 2026-08-26
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Чистка: удалён мёртвый legacy-код загрузки напрямую (2026-08-26)
|
||||
|
||||
## Контекст
|
||||
|
||||
При разборе стресс-тестов выяснилось: я (AI) гонял HTTP-стресс через `POST /upload`
|
||||
(прямой multipart), тогда как реальная загрузка в проде идёт через **ВМ-буфер**
|
||||
(`PUT` на ВМ WebDAV → `POST /api/upload_refs` → `contracts_upload_sink`).
|
||||
Прямой `/upload` — мёртвый legacy-эндпоинт, который фронт не вызывает.
|
||||
|
||||
## Что удалено (коммит `aa58522`, −176 строк)
|
||||
|
||||
- `site/routes/upload_bp.py`:
|
||||
- эндпоинты `POST /upload` и `POST /unzip-upload`;
|
||||
- функции `_check_ext`, `_unzip`, константа `ALLOWED`;
|
||||
- пустой blueprint `upload_bp`.
|
||||
- `site/routes/__init__.py`: регистрация `upload_bp`.
|
||||
- `site/static/app.js`: мёртвые константы `UPLOAD_URL`, `CONVERT_URL`, `UNZIP_URL`.
|
||||
- `tests/test_upload_security.py` — целиком (тестировал удалённые `_check_ext`/`_unzip`).
|
||||
- `tests/test_routes.py`: классы `TestUpload`, `TestUnzipUpload`.
|
||||
|
||||
## Что оставлено (рабочее)
|
||||
|
||||
- `contracts_upload_sink` + `_store_and_parse` + `_convert` — sink для `/api/upload_refs` (VM-буфер).
|
||||
- `pages_bp /upload/<path:filename>` — отдача ES-модулей `upload/frontend` (клиентский ZIP).
|
||||
|
||||
## Почему ревью Sonnet не заметило
|
||||
|
||||
Ревью искало сломанное (трассировки ошибок), а не мёртвый код. `/upload`/`/unzip-upload`
|
||||
не падали и не давали 500 — просто не вызывались. Обнаруживаются только аудитом
|
||||
«какие эндпоинты фронт реально дёргает».
|
||||
|
||||
## Проверки
|
||||
|
||||
- `py_compile` + `node -c app.js` — OK.
|
||||
- `import app` — OK, 24 роута; `/upload` (POST) и `/unzip-upload` отсутствуют,
|
||||
`/api/upload_refs` и `/upload/<path>` на месте.
|
||||
- Юнит-тесты: 92 passed (было 102).
|
||||
|
||||
## Хвост
|
||||
|
||||
`tests/load/stress_http.py` всё ещё бьёт по удалённому `/upload` — нужен
|
||||
переписывание на `/api/upload_refs` (PUT на ВМ → refs).
|
||||
Reference in New Issue
Block a user