45 lines
2.7 KiB
Markdown
45 lines
2.7 KiB
Markdown
# Фаза 88. Кнопка на панели
|
||
|
||
## Зависимости
|
||
|
||
- [Фаза 87](87-image-subject.md)
|
||
- [Фаза 86](86-rooms-rules.md)
|
||
|
||
## Зачем
|
||
|
||
То, что уже открыто глазом, получает ту же кнопку, что портрет: узел, одежда, fill. Гость
|
||
смотрит и рисует.
|
||
|
||
## Задачи
|
||
|
||
- [ ] Панель выбранной локации: «создать картинку» и «показать промпт», если узел может дать
|
||
непустой вклад (как 87). Нет вклада — кнопок нет. Открытие дерева не генерирует
|
||
- [ ] Строка одежды и ноши на карточке: кнопка, если у def есть `prompt`. Цвет из строки уходит
|
||
query. Износ в промпт кладёт сервер
|
||
- [ ] Строка предмета в секции «предметы» локации: то же для fill с прозой; молчаливый стул —
|
||
без кнопки
|
||
- [ ] Успех показывает PNG (как карточка человека). Ошибки Swarm — тот же текст, что портрет
|
||
- [ ] Гость видит и жмёт. Notice `generateImage` не менять (хозяин, человек)
|
||
- [ ] Строки через `t(...)`, обе локали. Сокет не бампить
|
||
|
||
## Тесты, без которых фаза не закрыта
|
||
|
||
- [ ] Vitest: у узла Classroom кнопка есть; у узла без prompt (лестница/этаж) — нет
|
||
- [ ] Vitest: у строки TShirt кнопка есть; у Chair в предметах — нет
|
||
- [ ] Vitest: гость не лишает кнопку disabled так, как notice
|
||
- [ ] Клиент зовёт POST узла/вещи, не `.../people/.../portrait?kind=scene`
|
||
- [ ] «Показать промпт» показывает тело GET `.../prompt`, не выдуманную строку на клиенте
|
||
- [ ] Открытие панели / вкладки одежды не вызывает POST
|
||
|
||
## Критерий готовности
|
||
|
||
- Клик по кабинету на дереве → панель → картинка класса
|
||
- Клик по белой футболке на карточке → PNG вещи
|
||
- Гость на чужой школе может то же
|
||
- `npm test` по затронутым `ui/*.test.ts` (tsc+vitest клиента, не весь раствор)
|
||
|
||
## Стоп
|
||
|
||
Не автоген утра. Не иконка на каждом ряду дерева. Не LLM. Не бумажная кукла. Не картинка
|
||
журнала и часов.
|