- 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
4.4 KiB
4.4 KiB
Tasks
1. Каркас CLI и HTTP-клиент
- 1.1 Создать
scripts/seed.pyс разбором аргументов (--albums,--photos-per-album,--seed,--tags,--comments,--likes,--share-links,--invites,--wait-variants,--timeout,--dry-run) и чтением env (GALO_BASE_URL,GALO_EMAIL,GALO_PASSWORD); проверка —python3 scripts/seed.py --helpработает без сторонних пакетов. - 1.2 Реализовать HTTP-клиент на
urllib(JSON, multipart, Bearer, разбор{error:{code,message}}); проверка — обработка ошибочного ответа и сборка multipart-тела проверены на мок-данных. - 1.3 Реализовать вход через
POST /api/auth/loginи обработку ошибок (401, сеть) с ненулевым кодом; проверка — запуск с неверным паролем завершается ошибкой и не создаёт данных.
2. Генерация изображений
- 2.1 Генерировать JPEG с EXIF (время съёмки, опционально GPS) через Pillow; проверка — в ответе
GET /api/photos/:idвexifприсутствуетDateTimeOriginal. - 2.2 Добавить фолбэк PNG на стандартной библиотеке (
zlib+struct) при отсутствии Pillow; проверка — при недоступной Pillow скрипт загружает PNG и фото появляется в списке.
3. Наполнение данными
- 3.1 Создавать альбомы (
POST /api/albums) и загружать фото (POST /api/albums/:id/photos, multipart) с меткой прогона; проверка — данные видны вGET /api/albumsиGET /api/albums/:id/photos. - 3.2 Реализовать ожидание вариантов (
--wait-variants): опросGET /api/photos/:idдо появленияthumb_urlс таймаутом; проверка — при работающем воркере ожидание завершается, при остановленном — сообщает таймаут без зависания. - 3.3 Реализовать опциональные сущности по флагам: теги (
POST /photos/:id/tags), комментарии (POST /photos/:id/comments), лайки (POST /photos/:id/likes), share-ссылки (POST /albums/:id/share), инвайты (POST /albums/:id/invites); проверка — без флагов ничего лишнего не создаётся, с флагами сущности создаются. - 3.4 Добавить итоговый отчёт и режим
--dry-run; проверка — сухой прогон не отправляет изменяющих запросов, а отчёт печатает фактическое число созданных сущностей.
4. Документация и интеграционная проверка
- 4.1 Описать запуск, переменные окружения и параметры в
README.md; проверка — задокументированный запуск наполняет локальный инстанс. - 4.2 Интеграционная проверка: прогнать скрипт с флагами против локального инстанса и убедиться в наличии альбомов, фото и вариантов, а также в сохранности существующих данных (только-добавление).
5. Make-цель
- 5.1 Добавить цель
testdataвMakefile, передающую параметры (ALBUMS,PHOTOS,SEED,TIMEOUT, булевыTAGS/COMMENTS/LIKES/SHARE/INVITES/WAIT/DRY, а такжеARGS) в скрипт; проверка —make -n testdata ALBUMS=3 PHOTOS=4 TAGS=1показывает ожидаемые флаги,make testdata DRY=1печатает план без запросов, аmake testdata ALBUMS=1 PHOTOS=1создаёт данные. - 5.2 Описать
make testdataвREADME.md; проверка — задокументированный запуск наполняет локальный инстанс.