Files
upload-platform/HISTORY/2026-09-06-layer2-final-checkpoint.md
T

53 lines
3.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.
# 2026-09-06: Финальная фиксация состояния Слоя 2
## Репозиторий
- Проект: `upload-platform`.
- Основная ветка: `master`.
- Рабочее дерево на момент фиксации чистое.
- Основной коммит реализации: `112c84f`.
- Изменения отправлены в `origin/master`.
- Контрольное состояние сохранено в ветке `checkpoint-layer2-complete`, опубликованной в origin.
## Реализованное состояние
В `upload-platform` реализованы и изолированы два API-слоя:
1. **Слой 1: File Picker**
- Выбор файлов и папок.
- Клиентская распаковка ZIP и вложенных архивов.
- Дедупликация, фильтрация и лимиты.
- Контракт: `picker.getFiles()` возвращает плоский список объектов `{ path, name, size, file }`.
2. **Слой 2: Per-file Transit**
- Для каждого файла выполняется последовательность `PUT` в буфер ВМ -> `POST /api/upload_refs` -> исходящий потоковый `GET` в RAM сессии -> `DELETE` из буфера ВМ.
- Следующий файл начинает передаваться только после завершения текущего.
- В буфере ВМ одновременно находится не более одного файла.
- Файлы сессии хранятся только в оперативной памяти.
- URL буфера задаются конфигурацией через `vmUploadUrl` и `vmUploadPrefix`; боевые домены не зашиваются в интеграционный код.
- Входящие URL проходят SSRF-проверку, имена файлов санитизируются.
- Для будущего Слоя 3 предусмотрен callback `onFileReceived(sid, name, content)`.
## Автономный тестовый стенд
`site/app.py` содержит RAM-only mock WebDAV с операциями `PUT`, `GET`, `DELETE` и маршрутом статуса. Это позволяет тестировать полный транзит без внешней ВМ:
`browser -> mock buffer -> upload_refs -> RAM session -> Layer 3 callback`.
## Проверка
- `npm run build`: успешно.
- `npm test`: 9 тестов пройдены.
- `pytest tests/ -v`: 10 тестов пройдены.
- Итого: 19 тестов, все пройдены.
- Приложение `site/app.py` импортируется и регистрирует 11 маршрутов.
## Версия и документация
- Версия платформы: `0.2.0`.
- Обновлены `README.md` и `upload/README.md`.
- Техническое задание: `LAYER2-RESUME.md`.
- Подробный отчёт реализации: `HISTORY/2026-09-06-layer2-implementation-and-tests.md`.
Слой 3 в текущую реализацию не входит; он подключается потребляющим сервисом через API сессии и callback-контракт.