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

3.3 KiB
Raw Permalink Blame History

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-контракт.