Files
contracts-flask/History/2026-08-26-cleanup-legacy-upload.md
T

42 lines
2.3 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.
# Чистка: удалён мёртвый 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` — переписан на реальный путь (`PUT` на ВМ → `POST /api/upload_refs`).