Files
image-platform/docs/data-model.md
S.Gromov 37592c8b81 chore: добавить каркас image-platform
- добавлен базовый pnpm workspace для будущих приложений

- добавлена dev-инфраструктура PostgreSQL и MinIO

- добавлены env-пример и базовые правила репозитория

- зафиксированы архитектура, data model и API-контракт

- описан контракт с внешним imgproxy
2026-05-04 22:53:55 +03:00

1.6 KiB
Raw Blame History

Черновик Data Model

Это черновик для будущих миграций PostgreSQL. Реальные таблицы добавим вместе с API.

allowed_image_hosts

id
hostname
enabled
description nullable
created_at
updated_at

Правила normalization:

  • lowercase;
  • без protocol;
  • без path;
  • без trailing slash;
  • без wildcard на первом этапе;
  • source URL должен быть http или https;
  • запрещены localhost, private IP, loopback, link-local.

image_assets

id
source_url
source_host
source_hash
original_s3_key nullable
status
width nullable
height nullable
content_type nullable
size_bytes nullable
created_at
updated_at

image_variants

id
asset_id
preset
variant_hash
format
width
height nullable
quality
s3_key
status: pending | processing | ready | failed
size_bytes nullable
error nullable
created_at
updated_at
last_accessed_at nullable

Unique constraints

allowed_image_hosts(hostname)
image_assets(source_hash)
image_variants(asset_id, variant_hash, format)

S3 layout

originals/{assetId}/source
variants/{assetId}/{variantHash}.{format}

Presets

Клиент не должен передавать произвольные трансформации. Сначала нужны ограниченные presets.

Пример:

avatar:
  widths: 128, 256, 512
  formats: avif, webp, jpg
  quality: 80
  resize: fill

card:
  widths: 320, 640, 960
  formats: avif, webp, jpg
  quality: 80
  resize: fit

hero:
  widths: 1280, 1920
  formats: avif, webp, jpg
  quality: 80
  resize: fit