Files
wiki/tasks/image-gen/TEST_CASES.md
2026-05-24 21:10:02 +03:00

247 lines
8.9 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.
# Тест-кейсы: Скилл `image-gen`
---
created: 2026-05-24
---
## TC-01: Базовая генерация — один объект, дефолтная модель
**Запрос пользователя:** «сгенерируй фото блондинки»
**Ожидаемое поведение:**
1. Агент матчит шаблон `blonde_woman`
2. Промпт = `base(blonde_woman)` + качественные усилители из шаблона
3. Модель: `recraft/recraft-v4.1-pro` (дефолт)
4. Aspect ratio: 9:16 (дефолт)
5. Negative prompt из `params/models.md`
6. Картинка отправлена в TG с подписью: `🎨 Model: recraft/recraft-v4.1-pro | 📝 Блондинка`
7. Агент спрашивает: «Сохранить в избранное?»
**Проверка:** картинка в Telegram, вертикальная ✅
---
## TC-02: Объект + локация
**Запрос:** «сгенерируй фото блондинки в парке»
**Ожидаемое поведение:**
1. Матчит: `blonde_woman` + `park`
2. Промпт = `base(blonde_woman)` + `base(park)` + merged контекст
3. Дефолтная модель, 9:16
**Проверка:** на фото — блондинка на фоне парка ✅
---
## TC-03: Объект + локация + стиль
**Запрос:** «сгенерируй портрет блондинки в парке»
**Ожидаемое поведение:**
1. Матчит: `blonde_woman` + `park` + стиль `portrait`
2. Промпт = `base(blonde_woman)` + `base(park)` + `style(portrait)`
3. Aspect ratio: остаётся 9:16 (портрет вертикальный — ок)
**Проверка:** мягкий боке, 85mm-look, блондинка в парке ✅
---
## TC-04: Явное указание модели
**Запрос:** «сгенерируй фото блондинки через recraft-v4»
**Ожидаемое поведение:**
1. Модель: `recraft/recraft-v4` (явно указана)
2. Остальное — дефолты
**Проверка:** подпись содержит `recraft-v4`, не `recraft-v4.1-pro`
---
## TC-05: Мульти-модель — группа v4.1
**Запрос:** «сгенерируй блондинку через все модели v4.1»
**Ожидаемое поведение:**
1. `--model group:all_v4.1` → разворачивается в 4 модели
2. Один и тот же промпт отправляется в каждую модель
3. В TG приходят 4 картинки, каждая с подписью своей модели
**Проверка:** 4 фото в TG с разными моделями в подписи ✅
---
## TC-06: Мульти-модель — все recraft
**Запрос:** «сгенерируй через все модели recraft»
**Ожидаемое поведение:**
1. `--model group:all` → 7 моделей
2. 7 картинок в TG
**Проверка:** 7 фото, все с разными моделями ✅
---
## TC-07: Несколько вариантов от одной модели
**Запрос:** «сгенерируй 3 варианта фото блондинки»
**Ожидаемое поведение:**
1. `--count 3`, дефолтная модель
2. 3 картинки с одного промпта (разный seed)
3. Каждая отправлена отдельно в TG
**Проверка:** 3 фото в TG, одна и та же модель в подписи ✅
---
## TC-08: Нестандартные детали без шаблона
**Запрос:** «сгенерируй фото гор на закате»
**Ожидаемое поведение:**
1. Нет шаблона для "горы" — агент использует детали из запроса напрямую
2. Промпт = перевод запроса на английский + quality enhancers
3. Не падает с ошибкой
**Проверка:** горы на закате, нет артефактов ✅
---
## TC-09: Горизонтальный формат
**Запрос:** «сгенерируй горизонтальное фото пляжа»
**Ожидаемое поведение:**
1. Слово "горизонтальное" → aspect ratio `16:9`
2. Промпт матчит шаблон `beach`
**Проверка:** фото горизонтальное (landscape) ✅
---
## TC-10: Квадратный формат
**Запрос:** «сгенерируй квадратное фото кафе»
**Ожидаемое поведение:**
1. "квадратное" → aspect ratio `1:1`
2. Шаблон `cafe`
**Проверка:** квадратное фото ✅
---
## TC-11: Сохранение в избранное
**Запрос:** «сгенерируй блондинку в лесу»
→ Картинка отправлена
→ Агент: «Сохранить в избранное?»
**Ответ:** «да»
**Ожидаемое поведение:**
1. В `params/favorites.md` добавлена запись:
- дата, краткое описание, модель, полный промпт, negative prompt
**Проверка:** запись появилась в `params/favorites.md`
---
## TC-12: Negative prompt работает
**Запрос:** «сгенерируй фото девушки в полный рост»
**Ожидаемое поведение:**
1. Negative prompt включён: `deformed limbs, distorted hands, extra fingers...`
2. Руки и ноги выглядят нормально
**Проверка:** нет деформаций рук/ног ✅ (субъективная оценка)
---
## TC-13: A2E.ai провайдер
**Запрос:** «сгенерируй фото блондинки через a2e»
**Ожидаемое поведение:**
1. `--provider a2e`
2. Вызывается A2E API (не OpenRouter)
3. Картинка сохранена и отправлена в TG
**Проверка:** картинка пришла, в подписи видно что это A2E ✅
---
## TC-14: Кинематографический стиль
**Запрос:** «сгенерируй кинематографическое фото города ночью»
**Ожидаемое поведение:**
1. Стиль `cinematic` + шаблон `city` + детали "ночью" (night)
2. Промпт: `cinematic shot, dramatic lighting, city at night...`
**Проверка:** ночной город, кинематографический вид ✅
---
## TC-15: Несуществующий шаблон + несуществующий стиль
**Запрос:** «сгенерируй фото дракона в стиле акварели»
**Ожидаемое поведение:**
1. Нет шаблона "дракон", нет стиля "акварель"
2. Агент переводит запрос на английский напрямую: `dragon, watercolor style...`
3. Не падает, генерирует
**Проверка:** фото дракона в акварельном стиле ✅
---
## TC-16: Граничный случай — очень короткий запрос
**Запрос:** «сгенерируй»
**Ожидаемое поведение:**
1. Агент уточняет: «Что именно сгенерировать?»
2. Не вызывает скрипт с пустым промптом
**Проверка:** агент задал уточняющий вопрос ✅
---
## TC-17: Граничный случай — запрос на английском
**Запрос:** «generate photo of blonde in a park»
**Ожидаемое поведение:**
1. Скилл триггерится на английский запрос тоже
2. Матчит `blonde_woman` + `park`
**Проверка:** сгенерировано нормально ✅
---
## Чеклист для финальной приёмки
| TC | Описание | Статус |
|----|----------|--------|
| TC-01 | Базовая генерация | ⬜ |
| TC-02 | Объект + локация | ⬜ |
| TC-03 | Объект + локация + стиль | ⬜ |
| TC-04 | Явная модель | ⬜ |
| TC-05 | Группа all_v4.1 | ⬜ |
| TC-06 | Все модели | ⬜ |
| TC-07 | 3 варианта | ⬜ |
| TC-08 | Без шаблона | ⬜ |
| TC-09 | Горизонтальный | ⬜ |
| TC-10 | Квадратный | ⬜ |
| TC-11 | Избранное | ⬜ |
| TC-12 | Negative prompt | ⬜ |
| TC-13 | A2E провайдер | ⬜ |
| TC-14 | Кино стиль | ⬜ |
| TC-15 | Нет шаблона/стиля | ⬜ |
| TC-16 | Пустой запрос | ⬜ |
| TC-17 | Запрос на английском | ⬜ |