3.3 KiB
3.3 KiB
Proposal
Why
Сетка миниатюр часто отображает изображение крупнее, чем единственный вариант thumb (200px),
потому что между миниатюрой 200px и превью 1200px нет промежуточного размера. При увеличении
плиток (малое число колонок) и на экранах с высокой плотностью пикселей фото расплывается;
обложки альбомов в обзоре и вовсе отдают только 200px.
What Changes
- Добавить четвёртый вариант
medium— квадратный кроп 800×800, WebP — и рольmediumв журнале объектов.thumbперевести на квадратный кроп 200×200;previewостаётся вписанным 1200×1200 для просмотрщика. - API фото SHALL отдавать
medium_urlрядом сthumb_url/preview_url; данные обложки альбома SHALL отдавать URL более крупного варианта обложки. - Сетка фото и обзор альбомов SHALL выбирать вариант под фактический размер плитки через
srcset(200/800/1200) иsizes, а не всегда тянуть 200px. - Миграция расширяет ограничение роли
photo_objectsзначениемmedium(Postgres и SQLite) и ставит в очередь перегенерацию вариантов для уже загруженных фото. - Из-за смены кропа у
thumbсуществующие миниатюры перегенерируются (квадратными) вместе с добавлениемmedium.
Capabilities
New Capabilities
Нет.
Modified Capabilities
photos: требование «Варианты изображений» — четыре варианта, квадратный кроп grid-вариантов.media-objects: требование «Журнал объектов» — рольmediumв наборе ролей.albums: требование «Отображение обложки альбома» — URL обложки крупнее миниатюры.ui-workspace: новое требование — сетка и обзор альбомов подбирают вариант изображения под размер плитки.
Impact
- Backend:
photos/{pipeline,worker,objects,models,service,store,sqlite_store}.go,albums/{models,store,sqlite_store,service}.go, миграции Postgres и SQLite, бэкфиллvariant_jobs, контрактные тестыrepo/contract. - Frontend:
PhotoGrid.svelteи обзор альбомов ((app)/+page.svelte). - API: новые поля
medium_url(фото) и URL medium-обложки (альбом); существующие клиенты продолжают работать (аддитивно). - Хранилище: +1 производный объект (800px WebP) на фото; preview у существующих фото перегенерируется впустую и удаляется сборщиком мусора по ссылкам.