Skip to content

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Тег удалён из пространства

Конфигурация ​

ПеременнаяПо умолчаниюОписание
PORT8087Порт сервера
DB_*—PostgreSQL
JWT_SECRET—Аутентификация
MAX_FILE_SIZE10737418240 (10GB)Макс. размер файла
EXTRACT_VIDEO_FRAMEStrueИзвлечение первого кадра видео
STORAGE_SERVICE_URLhttp://storage-service:8080URL storage-сервиса
STORAGE_MAX_SIZE524288000 (500MB)Макс. размер для storage
STORAGE_TIMEOUT30sTimeout запросов к storage
MESSAGING_URLnats://localhost:4222NATS URL
CLIENT_*_URL—URL других сервисов платформы