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_SIZE104857600 (100MB)Макс. размер файла
EXTRACT_VIDEO_FRAMESfalseИзвлечение первого кадра видео
STORAGE_SERVICE_URLhttp://storage-service:8080URL storage-сервиса
STORAGE_MAX_SIZE524288000 (500MB)Макс. размер для storage
STORAGE_TIMEOUT30sTimeout запросов к storage
MESSAGING_URLnats://localhost:4222NATS URL
CLIENT_*_URLURL других сервисов платформы