- 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
41 lines
3.4 KiB
Markdown
41 lines
3.4 KiB
Markdown
# 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
|
||
<!-- Нет: поведение системы для клиента не меняется, API не расширяется; добавляется отдельный dev-инструмент. -->
|
||
|
||
## Impact
|
||
|
||
- Новый файл `scripts/seed.py`; новый раздел в `README.md` с запуском и параметрами.
|
||
- Backend, frontend, API и хранилище не меняются — используются только существующие эндпоинты.
|
||
- Опциональная внешняя зависимость Pillow (для JPEG+EXIF); ядро работает на стандартной
|
||
библиотеке. Требуется запущенный инстанс с существующим пользователем-владельцем.
|