From 8df4d22cfb6eda4de89ccfb8e0d3c300130a4f05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 5 Sep 2026 12:58:47 +0300 Subject: [PATCH] Update picker documentation --- README.md | 44 +++++++++++++++++++++++--------------------- upload/README.md | 27 +++++++++++++++++++++------ 2 files changed, 44 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 8889c99..4434561 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,17 @@ # Upload Platform -Переиспользуемый сервис загрузки файлов через ВМ-буфер. Выносит два слоя — -**выбор файлов** (фронт) и **закачку через ВМ** (фронт + бэк) — в отдельный -проект, который копируется в любой другой проект. - -Паттерн: браузер → `PUT` на ВМ-буфер → Flask `POST /api/upload_refs` (egress pull) → сессия. +Переиспользуемый browser-only file-picker. Модуль выбирает отдельные файлы, +папки и ZIP, строит сворачиваемое дерево и возвращает исходные browser `File` +objects с полными путями. Файлы не отправляются на VM и не загружаются через +backend. ## Слои | Слой | Ответственность | |---|---| -| 0. Конфиг | `vmUploadUrl`, `allowedExt`, лимиты, ретраи | -| 1. Выбор файлов | таблица, дедуп, раскрытие ZIP, рекурсивный обход папки | -| 2. Закачка через ВМ | PUT на ВМ → pull в сессию | -| 3. Логика приложения | здесь — стаб-заглушка (в каждом проекте своя) | +| Конфиг | `allowedExt` | +| Picker | таблица, дедупликация, ZIP, рекурсивный обход папки | +| Интегрирующее приложение | получает leaf-файлы через `getFiles()` | ## Структура @@ -24,13 +22,10 @@ upload-platform/ ├── upload/ # ← переиспользуемый модуль (копируется в любой проект) │ ├── README.md # инструкция интеграции │ ├── config.example.json -│ ├── frontend/ # слои 1+2 (vanilla JS, ES-модули) +│ ├── frontend/ # picker (vanilla JS, ES-модули) │ │ ├── zip/ │ │ ├── table/ -│ │ └── upload/ -│ └── backend/ # слой 2 (Python) -│ ├── upload_refs/ -│ └── session/ +│ └── backend/ # LEGACY: VM upload/session remnants └── site/ # демо-обёртка (не переиспользуется) ├── app.py ├── routes/ @@ -53,15 +48,22 @@ python site/app.py - Маршрут `/health` → `200` (иначе liveness-проба платформы убивает под). - Без `site/__init__.py` и factory pattern. -## Как интегрировать слои в другой проект +## Как интегрировать picker в другой проект 1. Скопировать папку `upload/` в свой проект. -2. Задать свой конфиг (по образцу `upload/config.example.json`). -3. Фронт: подключить ES-модули из `upload/frontend/` через `