sdelay-mne-tz-na-kafe-pravil/design-system/docs/ARCHETYPES.md

10 KiB
Raw Blame History

Архетипы экрана KT AI

Архетип — это форма главной рабочей области под задачу процесса. Набор открыт: archetypes/registry.json — это каталог-данные, а не зашитый список. Добавление архетипа = запись в реестр + рендерер + пример, без правки валидатора и ядра. Неизвестный или ещё не реализованный архетип безопасно деградирует в queue.

Это прямой ответ на вопрос «а если архетипов больше?»: система относится к архетипам как к данным. Реестр растёт; контракт (product.schema.json) общий; валидатор (scripts/validate_product.py) читает реестр и не меняется; рантайм (templates/kt-ai-app-shell.html) подбирает рендерер по id с фолбэком.

Галерея

Все архетипы живьём в одном экране: examples/gallery.html (табы, генерируется scripts/build_gallery.py после пересборки прототипов). У каждого stable-архетипа есть отгружаемый пример.

Контракт записи реестра

{
  "id": "compare",                      // lowercase id, = значение product.archetype
  "title": "Сверка источников",
  "whenToUse": "когда применять (1 фраза)",
  "requires": ["table", "compare"],     // блоки контракта, без которых архетип не имеет смысла → ERROR
  "recommends": ["scenario", "drawer"],  // желательные блоки → WARN, если их нет
  "forbids": [],                         // блоки, которых быть не должно → ERROR
  "renderer": "renderCompare",           // имя функции-рендерера в app-shell (null, если ещё нет)
  "runtimes": ["html", "kit"],           // где архетип РЕАЛЬНО реализован
  "status": "stable"                     // stable – рендерится; planned – пока деградирует в fallback
}

runtimes — обязательное поле, и его держит в согласии с кодом гейт 21. status: stable говорит только о том, что архетип рендерится; в каком рантайме — не говорит. Пока поля не было, реестр объявлял stable все пятнадцать архетипов, а React-кит рисовал шесть: продукт на Next выбирал inbox, получал деградацию в queue и узнавал об этом, увидев не тот экран. Ни реестр, ни валидатор, ни гейт не произносили ни слова.

Теперь валидатор пишет об этом заметкой при проверке конфига, а гейт 21 сверяет реестр с тем, что действительно реализовано в kt-ai-screen.tsx. Реализовали архетип в ките — допишите kit в runtimes, иначе сборка ДС покраснеет.

В ките сегодня: queue, dashboard, cockpit, compare, conversational, custom. Остальные девять — только HTML-рантайм.

Валидатор по этой записи проверяет конфиг автоматически — для любого числа архетипов код не меняется.

Реализованные (stable)

id Когда Главная область Референс
queue 5+ записей со статусом/сроком/суммой; проверить и закрыть (дефолт) таблица + drawer —
dashboard управление метрикой процесса KPI-табы → большой чарт периода + разборы (top/share/cards) + «требует внимания» ElevenLabs dashboard (Mobbin)
cockpit один фокусный объект с сигналами + решение карточка решения + очередь сбоку ElevenLabs TTS playground (рабочая область + тихая панель)
compare попарная сверка двух источников/версий две панели, расхождения подсвечены —
conversational чат как главная область, человек вне построчной очереди центрированный чат, орб-аватар, prompt-bar ElevenLabs Conversational AI
custom экран не подходит ни под один архетип (запасной) центрированная колонка секций-карточек ElevenLabs settings-detail
document документоцентричный процесс: вычитка одного документа (договор, письмо, ТЗ) документ с diff-правками агента по фрагментам, принять/отклонить каждую Harvey, «договоры/письма Lotus»
copilot агент производит файл/документ/слайды в диалоге чат слева + живой предпросмотр артефакта справа ChatGPT Canvas, Claude Artifacts
wizard пошаговая подача заявки/оформление с автозаполнением агентом степпер + поля с бейджем «заполнил агент», Назад/Далее госуслуги, Typeform
kanban поток работ по стадиям, важно распределение колонки = statuses, карточки = table.rows (без новых блоков) Trello, Linear board
inbox входящие с длинным текстом (обращения, письма) список слева + постоянная панель чтения с разбором агента почтовые клиенты, Front
analytics главная ценность — анализ и выводы, не построчная работа сводка агента + чарты (bar/line/donut, чистый SVG) + «Выводы агента» Amplitude, Metabase
calendar работа привязана к датам и слотам события по дням, тон-подсветка конфликтов календарь-агенда
map объекты распределены в пространстве (станции, площадки) SVG-схема с точками-статусами и связями; не геокарта с тайлами схемы линий метро
timeline разбор одного дела/инцидента во времени вертикальная лента: время, событие, актор (шаги агента помечены) audit log, Intercom timeline

Заявленные (planned)

— нет. Все архетипы реестра реализованы.

Когда экран не подходит ни под один архетип

Это штатная ситуация, не ошибка. Два пути:

  1. Явно — поставить archetype: "custom" и описать contract.sections (заголовок + опц. описание/текст/поля). Рендерится колонкой карточек в духе ElevenLabs detail-страниц.
  2. Автоматически — если архетип неизвестен или не реализован, mainByLayout подбирает форму по данным: есть sections → custom; есть таблица с рядами → queue; иначе → custom (пустой с подсказкой). Экран никогда не падает и не показывает пустую таблицу не к месту.

Набор открыт

Реестр прямо перечисляет очевидных кандидатов (open_set_examples): gantt, gallery, editor, org. Это не обещания — маркер того, что список не закрыт. До появления их рендереров такие экраны делает custom.

Как добавить архетип

По «правилу двух продуктов» (DESIGN.md): архетип появляется, когда он нужен второму продукту, не раньше.

  1. Реестр. Добавить запись в archetypes/registry.json (status:"planned", renderer:null — на этом шаге уже можно валидировать контракт).
  2. Рендерер. Написать renderXxx() в templates/kt-ai-app-shell.html и ветку в mainByLayout(); перевести запись в status:"stable", renderer:"renderXxx". Главную оболочку (sidebar/topbar/тема/орб Төре) не трогать — меняется только главная область.
  3. Контракт. Если архетипу нужен новый блок данных (как compare), добавить его в product.schema.json.
  4. Пример. Положить эталонный конфиг в examples/ и прогнать scripts/validate_product.py.
  5. Док. Дописать строку в таблицу выше.

Деградация

  • Неизвестный archetype → WARN + рендерится queue.
  • status:"planned" → WARN + рендерится fallback (queue).
  • compare без compare.pairs → WARN + рендерится queue.

Прототип никогда не падает из-за архетипа — в худшем случае показывает надёжную таблицу-очередь.