Files
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

41 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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); ядро работает на стандартной
библиотеке. Требуется запущенный инстанс с существующим пользователем-владельцем.