feat: scaffold files service

This commit is contained in:
Grendgi
2026-06-16 12:41:36 +03:00
commit cf92fda20e
25 changed files with 1665 additions and 0 deletions

34
README.md Normal file
View File

@@ -0,0 +1,34 @@
# Files Service
Единый сервис файлов Portal: папки, документы Office, Google-ссылки, PDF/медиа, доступы и временные ссылки.
## Что уже заложено
- `files_nodes` — дерево папок и файлов.
- `files_access` — прямой доступ `view/edit`, наследуется от родительских папок.
- `files_public_links` — временные ссылки на просмотр/скачивание.
- MinIO-хранилище для бинарных файлов.
- InternalAuth через Portal (`X-Internal-Key`, `X-User-Id`).
## Основные API
- `GET /api/nodes?scope=my|shared&parent_id=<uuid>`
- `POST /api/folders`
- `POST /api/files` multipart: `file`, `parent_id`, `title`
- `GET /api/nodes/{id}`
- `PATCH /api/nodes/{id}`
- `DELETE /api/nodes/{id}`
- `GET /api/nodes/{id}/download`
- `GET /api/nodes/{id}/access`
- `PUT /api/nodes/{id}/access`
- `POST /api/nodes/{id}/public-links`
- `GET /public/{token}`
- `GET /public/{token}/download`
## Миграционный путь
1. Подключить proxy Portal `/api/files-service/*` к этому сервису.
2. Сделать новый UI `Файлы`: `Мои файлы` и `Доступные мне`.
3. Перенести старые `office_documents` и `google_sheets` в `files_nodes`.
4. После проверки выключить старые `/api/office` и `/api/sheets`.