Appearance
Spark Grid
Назначение
Сервис медиа-хранилища платформы. Управляет метаданными медиафайлов (изображения, видео, аудио) в модели изолированных пространств (spaces). Не хранит сырые файлы — делегирует хранение в storage-сервис. Генерирует превью, извлекает обложки, управляет тегами.
Порты
- HTTP: 8087
- БД:
spark_grid
Ключевые возможности
- Загрузка медиафайлов (multipart/form-data) с валидацией MIME-типа и размера
- Автоматическая генерация превью: изображения >300px → 300px width, JPEG, quality 85, Lanczos
- Извлечение обложек из MP4/M4V/аудио (dhowden/tag)
- Опциональное извлечение первого кадра видео через ffmpeg (
EXTRACT_VIDEO_FRAMES=true) - Система тегов в рамках пространства (many-to-many: файл ↔ тег)
- Пространственная модель доступа (space-based ACL, авторизация через middleware)
- Soft delete (скрытие из списков) + hard delete (удаление из storage и БД)
- Поддержка HTTP Range-запросов для видео/аудио (Seek в браузере)
- Публикация NATS-событий:
media_file.uploaded,media_file.deleted,space_tag.deleted - Swagger UI, Health check (
GET /health), Readiness check (GET /ready)
NATS Events
| Subject | Триггер |
|---|---|
media_file.uploaded | Файл загружен |
media_file.deleted | Файл удалён |
space_tag.deleted | Тег удалён из пространства |
Конфигурация
| Переменная | По умолчанию | Описание |
|---|---|---|
PORT | 8087 | Порт сервера |
DB_* | — | PostgreSQL |
JWT_SECRET | — | Аутентификация |
MAX_FILE_SIZE | 104857600 (100MB) | Макс. размер файла |
EXTRACT_VIDEO_FRAMES | false | Извлечение первого кадра видео |
STORAGE_SERVICE_URL | http://storage-service:8080 | URL storage-сервиса |
STORAGE_MAX_SIZE | 524288000 (500MB) | Макс. размер для storage |
STORAGE_TIMEOUT | 30s | Timeout запросов к storage |
MESSAGING_URL | nats://localhost:4222 | NATS URL |
CLIENT_*_URL | — | URL других сервисов платформы |