Files
ds-galo/openspec/changes/archive/2026-10-11-add-seed-data-script/proposal.md
T
iu 36e96cd519 feat(seed): add API test-data seeding script and make testdata target
- scripts/seed.py: stdlib HTTP client, JPEG+EXIF via optional Pillow (PNG fallback), additive-only, dry-run
- Makefile: testdata target with ALBUMS/PHOTOS/SEED/TIMEOUT and boolean flags
- README: usage section; new dev-seed-data capability spec
2026-10-11 13:27:21 +03:00

3.4 KiB
Raw Blame History

Proposal

Why

Наполнить приложение тестовыми данными можно только вручную: сейчас в локальной базе один пользователь, один альбом и 15 фото, появившихся через UI. Чтобы проверять сетку, лайтбокс, cursor-пагинацию, асинхронную генерацию трёх превью, извлечение EXIF, share-ссылки и SSE-события, нужны повторяемые объёмы данных. Нужен dev-инструмент, который наполняет систему через публичный API, не трогая БД и хранилище напрямую.

What Changes

  • Новый standalone-скрипт scripts/seed.py на Python: ввод через переменные окружения (базовый URL, email, пароль владельца) и параметры командной строки.
  • Создание заданного числа альбомов и фотографий от одной учётки-владельца через существующие эндпоинты (POST /api/albums, POST /api/albums/:id/photos).
  • Изображения генерируются на лету: при доступной Pillow — JPEG с EXIF (DateTimeOriginal, опционально GPS); при отсутствии Pillow — PNG без EXIF на stdlib.
  • HTTP-клиент — только стандартная библиотека (urllib), без обязательных pip-зависимостей.
  • Опциональные сопутствующие сущности (по флагам, по умолчанию выключены): теги, комментарии, лайки, share-ссылки, инвайты.
  • Опциональное ожидание генерации вариантов (опрос GET /api/photos/:id до thumb_url).
  • Режим только-добавления: скрипт ничего не удаляет и не изменяет; повторные запуски добавляют данные, различимые по метке прогона в названии альбома. Есть --dry-run.
  • Секреты читаются только из окружения и не принимаются аргументами и не логируются.

Capabilities

New Capabilities

  • dev-seed-data: dev-инструмент наполнения приложения тестовыми данными через публичный API.

Modified Capabilities

Impact

  • Новый файл scripts/seed.py; новый раздел в README.md с запуском и параметрами.
  • Backend, frontend, API и хранилище не меняются — используются только существующие эндпоинты.
  • Опциональная внешняя зависимость Pillow (для JPEG+EXIF); ядро работает на стандартной библиотеке. Требуется запущенный инстанс с существующим пользователем-владельцем.