Document slice 11: notices, scene prompt contributions, and a Krea-only catalog.
Agents can implement toasts, pausing warnings, and bounded object prompts without bringing SDXL back into new schools. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
# Фаза 64. События и info-тост
|
||||
|
||||
## Зависимости
|
||||
|
||||
- [Фаза 16](../04-schedule/16-timetable-in-school.md) (звонок на урок)
|
||||
- [Фаза 34](../07-inventory/34-wear-home.md) (рабочее утро как край)
|
||||
- [Фаза 39](../08-session/39-school-owners.md) (гость уже есть; dismiss pausing — фаза 65)
|
||||
|
||||
## Зачем
|
||||
|
||||
Игрок видит, что начался день или урок. Это тост, не колонка и не пауза.
|
||||
|
||||
## Задачи
|
||||
|
||||
- [ ] `EventDef`: id, `severity` (`info` / `warning` / `error`), `pause`, `ttlMs` (0 = не гаснуть),
|
||||
`trigger` (`dayStart` / `lessonStart` / `generationFailed`), `action` (`none` в этой фазе).
|
||||
Локаль как у других def. Валидатор каталога
|
||||
- [ ] Ваниль `DayStarted` и `LessonStarted`: info, без паузы, TTL 8000, `action` none
|
||||
- [ ] Симуляция на крае рабочего утра и на звонке (смена периода урока, один факт на школу)
|
||||
отдаёт факт, без UI. Работник сопоставляет def и кладёт info-`Notice`
|
||||
- [ ] Новый кадр S→C (уведомление: id, defName, severity, pause, ttlMs, optional personId = 0).
|
||||
Новый кадр C→S dismiss по id. `ProtocolCodec.cs`, `protocol.ts`, [`protocol.md`](../../protocol.md)
|
||||
в одном коммите. Версия протокола +1
|
||||
- [ ] Клиент: тост поверх школы, текст из каталога/`t` по defName, клик шлёт dismiss, TTL
|
||||
гасит локально. Строки через `t(...)`. Не колонка «События»
|
||||
- [ ] Info не писать в сейв. Открытие школы info не повторяет. Гость тост видит
|
||||
- [ ] `generationFailed` в каталоге можно завести, но не эмитить — фаза 67 / 65
|
||||
|
||||
## Тесты, без которых фаза не закрыта
|
||||
|
||||
- [ ] Каталог грузит `DayStarted` / `LessonStarted`; неизвестный trigger — ошибка загрузки
|
||||
- [ ] Переход через край рабочего утра даёт один факт `dayStart`; повторный тик в ту же минуту — нет
|
||||
- [ ] Смена периода на урок даёт один `lessonStart` на школу, не по числу классов
|
||||
- [ ] Круглый трип и байтовая раскладка кадра уведомления и dismiss — на обеих сторонах
|
||||
- [ ] Клиентский тест: тост показывает локализованный текст, клик вызывает dismiss, без монтирования колонки
|
||||
- [ ] Хостовый: открытая школа после утра получает кадр; после Close/Open info-тост не висит из сейва
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
- Запустить часы до начала уроков: тост «начало дня», затем «начало урока», оба сами гаснут
|
||||
- Клик по тосту убирает его сразу
|
||||
- Гость той же школы тост видит
|
||||
- Старый клиент отваливается Hello из‑за версии
|
||||
|
||||
## Стоп
|
||||
|
||||
Не паузить. Не писать sticky в сейв. Не вклад сцены. Не кнопку картинки. Не колонку событий.
|
||||
Не эмитить по классу. Не бампить протокол отдельно от трёх файлов.
|
||||
Reference in New Issue
Block a user