- 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
3.4 KiB
3.4 KiB
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); ядро работает на стандартной библиотеке. Требуется запущенный инстанс с существующим пользователем-владельцем.