3.0 KiB
3.0 KiB
Фаза 67. Картинка с уведомления
Зависимости
Зачем
Событие может предложить нарисовать человека из факта. Кнопка использует тот же сборщик, что карточка, включая сцену.
Задачи
EventDef.action:none|generateImage.generateImageбезpersonIdнаNotice— не рисовать, не 500- Ваниль
GenerationFailed: error, pause,generateImage. Эмит из сервиса портретов при неуспехе Swarm (тот же personId и kind). Утро и звонок остаютсяnone - UI: на модале/тосте с action — кнопка; вызов существующего портретного HTTP (или узкого
POST .../notices/{id}/generate, если так проще связать права). Kind по умолчаниюfull. Строки черезt(...) - Хозяин только. Гость кнопку не активирует. Успех не снимает паузу сам — нужен dismiss
protocol.md— HTTP действия, тем же коммитом. Сокет не бампить повторно, если кадр 64 уже несёт action/personId; иначе добавить поля в том же смысле, что 64, без лишнего +1 если укладка уже есть
Тесты, без которых фаза не закрыта
- Каталог:
GenerationFailedсgenerateImage;DayStartedбез кнопки - Неуспех генерации ставит pausing notice с personId; успех — не ставит
- Хостовый: хозяин с кнопки получает PNG (или тот же outcome, что карточка); гость 403
- Промпт этой генерации содержит сцену узла человека (как 66), не пустой коридор без людей
- Notice без personId и с
generateImageне дергает Swarm - Клиентский: кнопка есть только при action; info-тост дня кнопки не имеет
Критерий готовности
- Сломать/отменить Swarm на портрете: ошибка паузит школу, кнопка перерисовывает того же
- Утро по-прежнему тост без кнопки
- Гость видит модал и не запускает GPU
Стоп
Не автогенерация утром всем. Не арт локации без человека. Не LLM. Не снимать паузу успехом картинки. Не третью колонку.