3.2 KiB
3.2 KiB
Proposal
Why
Список альбомов пустой и безликий: карточки показывают заглушку 🖼️, а создание
альбома — постоянная inline-форма в заголовке. При этом бэкенд уже хранит
cover_photo_id и умеет его менять, но фронтенд нигде не отдаёт URL обложки и не
даёт её выбрать. Нужно довести UI до состояния, где альбомы узнаваемы по
обложкам, а создание не занимает место в шапке.
What Changes
- Кнопка «Создать» в списке альбомов превращается в компактную иконку с хинтом
(
title+aria-label). По клику открывается диалог с полем «Название»; отправка создаёт альбом через существующийPOST /albums. GET /albumsначинает возвращатьcover_url— presigned URL миниатюры обложки (илиnull), чтобы карточка списка могла показать изображение.- Карточки альбомов в списке показывают обложку; при её отсутствии — прежнюю заглушку.
- В настройках альбома появляется секция «Обложка»: сетка миниатюр фото
альбома, клик по фото применяет его обложкой (
PATCHсcover_photo_id), кнопка «Убрать» очищает (clear_cover). - Автоматическая обложка при загрузке фото ставится только если обложка ещё пустая, чтобы не затирать ручной выбор владельца.
Capabilities
New Capabilities
Нет.
Modified Capabilities
albums: создание альбома через иконку-кнопку и диалог;cover_urlв списке альбомов; выбор и очистка обложки в настройках; правило автоматической обложки (только при пустой).
Impact
- Frontend:
src/routes/+page.svelte(иконка, диалог, рендер обложки),src/routes/albums/[id]/settings/+page.svelte(секция «Обложка»),src/lib/types.ts(Album.cover_url), возможно новый переиспользуемый inline-SVG компонент иконки. - Backend:
internal/albums/store.goиinternal/albums/service.go(получение thumb-ключа обложки и presigncover_url),internal/photos/store.go(SetCoverтолько при пустой обложке). - API: ответ
GET /albumsрасширяется полемcover_url(аддитивно, обратносовместимо).PATCH /albums/:idуже поддерживаетcover_photo_idиclear_cover— изменений контракта не требуется. - Данные/миграции: не требуются.