Создавать недостающие уровни categoryPath в транзакции документа и повторно использовать существующие категории. Разрешить импорт новых путей в предпросмотре, обновить переводы и baseline. Исправить конфликт ширины кнопки создания метки со стилями меню. Выделить метки, заметку и план импорта в отдельные компоненты. Проверено: 13 backend-тестов, 7 frontend-тестов, сборка и браузерный предпросмотр файла из 66 документов.
Chatbolls — design baseline (SPEC-HUB-0031)
Два макета: чат сотрудника (роль EMPLOYEE) и оболочка владельца/админа (OWNER = ADMIN). Основания: SPEC-HUB-0031 (§3–6, §8.1, §9), ADR-HUB-0002/0003 (режимы диалога, перехват), ADR-HUB-0041/0043 (контакт-центр, группы, ответственный, видимость).
Как открыть
Любой *.dc.html открывается в браузере напрямую (нужен support.js рядом). Тема и акцент задаются через Tweaks (theme, accent) или правкой default в data-props.
Состав
Чат сотрудника Baseline.dc.html — EMPLOYEE: кадры H, A–G, S1–S2, M1–M2
Админ Baseline.dc.html — OWNER/ADMIN: кадры A1–A2
Настройки Baseline.dc.html — OWNER/ADMIN: кадры N1–N7, M
Профиль Baseline.dc.html — все роли: кадры P1–P2, M
Контакты Baseline.dc.html — OWNER/ADMIN: кадры K1–K5, S1
Агенты Baseline.dc.html — OWNER/ADMIN: кадры G1–G5, S1
Сотрудники Baseline.dc.html — OWNER/ADMIN: кадры E1–E10
Порталы Baseline.dc.html — OWNER/ADMIN: кадры PT1–PT8
_ds/ — токены дизайн-системы
assets/logo-mark.svg — знак
assets/av-1..4.png — аватары (Дмитрий Орлов · Анна Ким · Сергей Крылов · Елена Кузнецова)
support.js — рантайм макетов
Админ Baseline — карта кадров
- A1 Владелец · Чат — стартовый экран. Сайдбар: логотип + переключатель организации; навигация ровно 6 пунктов плоским списком (Чат с бейджем очереди · Контакты · Агенты · Сотрудники · Доска · Настройки); блок «Запуск» (3 шага, автоотметка, прогресс, primary на текущий шаг, «Скрыть»); профиль с ролью внизу. В списке диалогов заголовок — переключатель охвата (поповер: Все диалоги · Группы · Агенты · Ответственный) — дерево из сайдбара сотрудника у админа переезжает сюда, чтобы навигация осталась плоской (§4.1). Inline-
Hintпервого визита под вкладками. - A2 Админ · рабочий режим — «Запуск» завершён и скрыт, подсказка закрыта, охват «Операторы». От владельца отличается только подписью роли (§3).
Настройки Baseline — карта кадров
Оболочка та же (сайдбар 220, «Настройки» активен). Вместо сплошной ленты из девяти секций — субменю разделов 240px и один раздел на экране; ниже субменю — переходы на отдельные экраны «База знаний» и «Аудит действий». Контент 820px, табличные разделы — 1000px.
- N1 Организация — логотип (загрузить/убрать), название, часовой пояс, валюта; «Сохранить» с датой последнего сохранения.
- N2 Группы — строки: цветная точка · имя · состав · диалоги · изменить/удалить; создание — одно поле внизу списка. Состав группы — на карточке сотрудника.
- N3 AI-провайдер — таблица: название · секрет (маска) · конфиг (endpoint + модель) · статус · «Проверить» · ⋯. Primary «Добавить провайдера» в шапке раздела.
- N4 Интеграции — таблица: название (фирменная плитка) · агент · статус · действия. Ошибка почты — красный бейдж и точка-маркер у пункта субменю.
- N5 Голосовые и звонки — матрица точка входа × (Голосовые · Аудиозвонки · Видеозвонки), переключатели сохраняются сразу; почта — «недоступно», выключенная точка входа приглушена.
- N6 Хранилище файлов — сегмент «На диске установки / Внешнее S3», поля S3 (секреты маской), статус проверки/переноса, «Перенести · Проверить доступ · Сохранить».
- N7 Демо-данные — статус, счётчик записей, учётки демо-сотрудников (email/пароль моноширинно), «Удалить демо-данные» danger-outline.
- M — мобильный: список разделов ↔ раздел; поля 44px, primary в липком футере.
Решения по настройкам
- Профиль — не настройки. Тема, акцент, аватар, пароль, 2FA, сессии — отдельная страница «Профиль» из меню пользователя (
SidebarUserMenu). Из «Настроек» убран; SPEC-HUB-0031 §8.6 в части «Профиль» требует уточнения. - Субменю вместо ленты — отклонение от §8.6 («один экран с вертикальными секциями») по решению владельца: девять секций не помещаются на экран.
- OWNER == ADMIN (§3): макет один для обеих ролей, никаких
canManage-разветвлений в UI. - Порядок разделов и их состав — как в
features/settings/SettingsPage.tsx; таблицы —table-card/baseline-table, матрица —communication-matrix.
Профиль Baseline — карта кадров
Отдельная страница из меню пользователя (SidebarUserMenu → «Профиль»). Шапка: аватар 72 · имя + бейдж роли · email, дата вступления, группы · «Выйти». Две колонки: слева «кто я и как выглядит интерфейс» (Личные данные + Фото · Внешний вид · Уведомления в мессенджер), справа «безопасность» (Смена пароля · 2FA · Активные сессии).
- P1 Владелец — меню пользователя открыто (Уведомления · Профиль · Выйти), навигация видна; Telegram привязан с типами событий (ADR-0015), MAX — «Привязать бота»; TOTP включена; три сессии, текущая отмечена.
- P2 Сотрудник — сайдбар без навигации (§3): логотип, организация, профиль. Та же страница; TOTP выключена — жёлтое предупреждение.
- M — мобильный: личные данные и внешний вид сразу; уведомления, пароль, 2FA, сессии — список подэкранов.
Решения: тема — сегмент Светлая / Тёмная / Как в системе (§7.2); акцент — 4 пресета из shared/appearance.ts + HEX (§7.3); всё на странице принадлежит учётной записи, а не организации (ADR-0029) — владелец не меняет это у других. Поле «Роль» из формы убрано — роль показана бейджем в шапке.
Контакты Baseline — карта кадров
Источник — features/sales/clients и client-detail (раздел в коде всё ещё называется salesClients). Из текущей таблицы убраны колонка «Продукты» и фильтр по продуктам (ADR-0041, §8.2 «без коммерции»), добавлен фильтр по агенту. Из карточки убраны вкладка «Согласия» (заглушка в коде) и блок «Связанные продукты»; добавлены «Ответственный» и «Заметка» — те же поля, что в контекст-панели чата.
- K1 Список — колонки: Контакт (аватар · имя · CID) · Как связаться (телефон/email + логин) · Каналы (плитки-глифы) · Последний диалог (точка режима · кто ведёт · когда, сортируемая) · Открытые · ⋯. Фильтры: поиск, Каналы, Агенты, чип «С открытым диалогом»; «Экспорт CSV»; пагинация в футере карточки.
- K2 Список · фильтр — чип активен, счётчик «6 из 128», «Сбросить».
- K3 Карточка · Обзор — шапка (аватар 64 · имя · CID · карандаш · описание · телефон/email/компания/город с «копировать» · бейджи каналов · primary «Открыть диалог»);
UnderlineTabsОбзор · Диалоги · Идентификаторы · Аудит; сводка 4 числа · лента активности; справа — текущий диалог, ответственный, заметка. - K4 Карточка · Диалоги — тема + превью · агент · канал · группа · статус · дата; клик — в чат.
- K5 Карточка · Идентификаторы — идентичности по подключениям со статусом подтверждения; справа — «Возможный дубликат» с «Сравнить и объединить» (ручное объединение с причиной и аудитом, ADR-0006).
- S1 Пустой список — «Контакты появятся, когда клиенты напишут вашему агенту» + «Настроить подключения».
Мобильной версии нет — §9: админ-разделы с телефона в первой итерации не адаптируются. Вкладка «Аудит» — таблица Время · Действие · Объект · Актор · Результат как в коде, отдельно не перерисована.
Агенты Baseline — карта кадров
Источник — features/agents (AgentsPage, AgentDetailPage). Агент = канал + AI-конфигурация (ADR-0041 §4); изменения применяются сразу, без релизов (ADR-0023). Вертикальная лента секций из кода пересобрана в две колонки: слева «что он знает и как говорит» (Инструкции · Знания), справа «как работает» (Назначение · Модель · Подключения).
- G1 Список — агент (плитка-бот в цвете агента · имя · код) · группа · статус (AI отвечает / Без AI / Выключен) · модель · подключения (плитки с красным маркером ошибки) · открытые · ⋯. Колонка «Модель» добавлена к §8.3.
- G2 Создание — модалка одного шага: название + группа (§4.3).
- G3 Карточка · Консультант — рабочий агент. Шапка: плитка · имя · статус · группа · код · открытые · «Остановить AI». Инструкции — три поля (кто он · как говорит · правила). Знания — список с чипами «Выключено» / «Портал» и кнопкой «Выбрать». Подключения: привязанные со статусом и «Отвязать», свободные с «Привязать».
- G4 Карточка · Поддержка сайта — виджет привязан: блок «Код вставки виджета» с «Копировать» и подсказкой «вставьте перед » (§8.3); почта в ошибке.
- G5 Карточка · новый агент — blocker «провайдер не выбран» с переходом в настройки (ADR-0017), плейсхолдеры инструкций, строка «несохранённые изменения — применятся сразу», «Запустить AI».
- S1 Пустой список — «Агент отвечает клиентам первым. Создайте первого» + «Создать агента» (§5.2).
Решения: лимит дневной стоимости (dailyCostUsd, ADR-0023) вынесен в блок «Модель» — в коде поля нет, требует реализации. «Выключить агента» / «Удалить» — вторичные кнопки внизу карточки, как в коде.
Порталы Baseline — карта кадров
Источник — features/support-portals + SPEC-HUB-0028 (§1.1–1.3, §3, §6). Переделаны три больные точки: модалка настроек, публичная ссылка и редактор статьи с файлами.
- PT1 Список — таблица: портал (плитка-глобус · имя · язык/дата) · публичный адрес (моношрифт + «копировать» + бейдж «свой домен») · статус · материалы (разделы · статьи) · обновлён · ⋯. Меню строки открыто: Открыть материалы · Настройки портала · Копировать ссылку · Открыть портал · Перенести в архив. Архивный портал приглушён и уходит в конец. Поиск и фильтр статуса в шапке карточки, счётчик и пагинация в футере.
- PT2 Пусто — «Создайте первый портал поддержки» + «Создать портал» и «Как это выглядит у клиента»; создание доступно всегда (§1.1).
- PT3 Карточка · материалы — шапка: хлебные крошки, имя, статус, «6 разделов · 48 статей»; блок публичного адреса — глобус в цвете статуса, домен, бейдж «свой домен · подтверждён», кнопки «копировать» и «открыть», рядом резервный hosted-адрес. Действия: «Настройки» (переход на PT4, не модалка), primary «Новая статья», ⋯ (публикация/архив). Ниже — библиотека без вкладок: дерево разделов 260px с вложенностью и счётчиками + тулбар (поиск, язык, статус, «Импорт статей») + таблица Статья · Раздел · Язык · Редакция · Статус · Обновлено · ⋯ (скрепка = файлы в статье).
- PT4 Настройки · Основные — субменю 250px (Основные · Адрес и домен · Оформление · Веб-виджет · Публикация и архив), контент 820px: название, адрес на этой установке (поле
{portalKey}+ суффикс базового домена инсталляции), основной язык, карточка «Итоговая ссылка» с «Копировать/Открыть». - PT5 Настройки · Адрес и домен — поле домена + статус «Домен ведёт сюда · проверено», одна A-запись на IP установки с копированием, «Сохранить домен · Проверить DNS», «Отключить домен» danger-outline.
- PT6 Настройки · Оформление — две темы из каталога установки (
features/help-center/themes/:classic«Классическая»,ocean«Ocean») карточками с мини-превью на цветах ихmanifest.preview; сегмент схемы Светлая / Тёмная / Как в системе (manifest.schemes), «Предпросмотр портала», дата сохранения. Названия и описания тем в UI не придумываются — только из манифеста; отсутствующая в сборке тема показывается как недоступная. - PT7 Редактор статьи — полноэкранный, без модалок. Шапка: «Материалы» назад, крошки, бейдж «черновая редакция 8 · не опубликована», сегмент Текст / Вместе / Просмотр, «Сохранить черновик», primary «Опубликовать». Тело: слева заголовок-инпут + адрес + панель Markdown (H1/H2 · B/I/ссылка/код · списки/цитата/таблица · изображение/файл) + монополе текста + статусная строка (знаки, позиция курсора, автосохранение); в центре живой предпросмотр в теме портала («Как у посетителя»); справа рейка 300px: раздел, язык, краткое описание, файлы статьи (drop-зона + список с «вставить в текст» и «копировать Markdown»), версии (неизменяемые, опубликованная отмечена).
- PT8 Редактор · перетаскивание файла — drop-оверлей поверх текста: «Отпустите, чтобы вставить в текст», подпись про типы и лимит 25 МБ; в рейке новый файл с прогрессом загрузки.
Решения по порталам
- Настройки — страница, не модалка.
Modal width={960}с пятью секциями подряд заменён маршрутом/portals/{id}/settingsс субменю разделов; §1.2 в части «modal surface» требует уточнения. - Публичная ссылка — постоянный элемент шапки, а не текст
<code>в подзаголовке: копирование, открытие, статус домена и резервный hosted-адрес видны всегда, в том числе у черновика. - Редактор статьи — split-режим с предпросмотром GFM и панелью Markdown вместо
textarea rows={10}в карточке. Версии и файлы — в рейке, публикация редакции — из того же экрана. - Файлы статьи требуют API. В коде вложений у статей портала нет (есть только у
ai/knowledge): нужныportals/{id}/articles/{articleId}/attachments/с возвратом публичного URL для подстановки в Markdown. Импорт YAML остаётся отдельным действием «Импорт статей» в тулбаре. - Hosted-адрес — домен установки, не домен продукта. Продукт ставится на любой инфраструктуре, базовый домен берётся из
CHATBALLS_HELP_BASE_DOMAIN(support_portals/addressing.py,portal_views.py→address.baseDomain). В макете он показан как «адрес на этой установке» с примеромhelp.nord-crm.ru— в UI нельзя зашивать ниhelp.example.com, ни домен вендора; суффикс и итоговый URL всегда из ответа API. - Никакого подтверждения владения доменом. Продукт self-hosted: домен и установка у одного владельца — доказывать права самому себе нечего. Остаётся одна A-запись на IP установки и техническая проверка «ведёт ли домен сюда» (нужна для выписки TLS). TXT-запись
_chatballs.…,customDomainVerificationиcustomDomainVerifiedAtиз UI убраны — их стоит выключить и в коде либо оставить только для мультитенантного SaaS-режима с общим ingress. - Мобильной версии нет — §9: админ-разделы с телефона в первой итерации не адаптируются.
База знаний Baseline — карта кадров
Источник — features/ai/knowledge + SPEC-HUB-0026 §9 (иерархия категорий) и SPEC-HUB-0029 §7 (прикрепление к агенту). Раздел сверстан как карточка портала: та же шапка с состоянием, то же дерево слева, тот же split-редактор. Отделы упразднены ADR-HUB-0041, поэтому вместо visibility (ORGANIZATION/DEPARTMENTS) — состояние «участвует в ответах» и явный список агентов.
- KB1 Библиотека — шапка: «База знаний», бейдж «Индекс актуален», «9 категорий · 84 знания · 1 240 фрагментов», действия «Импорт YAML» и primary «Добавить знание». Ниже — дерево категорий 260px со счётчиками и вложенностью + тулбар (поиск, «В ответах», «Агент») + таблица: чекбокс · знание (иконка типа · заголовок · описание · скрепка вложений) · категория (с родителем) · фрагменты · агенты · в ответах · обновлено (кто) · ⋯. Меню строки: Открыть · Редактировать · Прикрепить к агенту · Переместить · Выключить в ответах · Переиндексировать · Удалить.
- KB2 Массовый выбор — тёмная панель операций по центру снизу: «Выбрано 3» + Прикрепить к агенту (primary) · Переместить · Включить · Выключить · Удалить · снять выделение. Выбранные строки подсвечены акцентом.
- KB3 Прикрепить к агенту — диалог 560px: сегмент Прикрепить / Открепить, выбор одного агента (радио, у агента без AI — статус «без AI»), предупреждение «2 из 3 будут пропущены» с причиной по каждому, примечание про атомарность и
ai.manage, primary «Прикрепить 1». - KB4 Карточка знания — шапка как у портала: крошки «База знаний / Регламенты / Пошив», заголовок, бейдж «В ответах агента», чипы «12 фрагментов · переиндексировано» и «3 агента», автор правки; действия «Прикрепить к агенту», primary «Редактировать», ⋯. Тело: рендер содержимого (≤720px) + рейка 320px: категория, тумблер «Участвует в ответах», вложения с копированием публичной ссылки, агенты со статусами, блок «Индексация» с «Переиндексировать».
- KB5 Редактор знания — тот же полноэкранный split, что PT7: слева заголовок + панель Markdown + монополе + статусная строка (знаки, ≈фрагменты, автосохранение); в центре предпросмотр «внутренний материал» и «Как ответит агент»; справа рейка 300px: категория, краткое описание, тумблер ответов, вложения (drop-зона + список), агенты (только чтение). Primary — «Сохранить и переиндексировать».
- KB6 Редактор · перетаскивание файла — drop-оверлей «Отпустите, чтобы приложить к знанию» (файл = вложение + ссылка в тексте), в рейке загрузка с прогрессом, в шапке бейдж «Есть несохранённые правки».
- KB7 Категории — дерево строками с ручкой перетаскивания, счётчиками, инлайн-переименованием, «+ вложенная»; удаление недоступно у системной и непустой категории (тайтл объясняет причину), справа карточка правил и предупреждение о непустой категории.
- KB8 Импорт YAML — разбор до применения: файл, сводка «создать 5 / обновить 2», таблица документ ·
categoryPath· действие · замечание; недостающие уровни категорий создаются автоматически с пояснением в замечании; primary «Импортировать 7 документов». - KB9 Пустая категория — «В категории «Обучение» пока нет знаний» + «Добавить знание» / «Импорт YAML»; счётчики не подменяются нулями из другой категории.
Решения по базе знаний
- Раздел вынесен в сайдбар — пункт «База знаний» сразу после «Порталов»: внутренние материалы и публичные порталы — соседние сущности, а не вложенность в «Агентов».
visibilityзаменена состоянием «участвует в ответах» — после ADR-0041 отделов нет, скрывать знание от части организации нечем. Доступность = прикреплённые агенты + флаг участия; в UI это одна колонка и один тумблер вместо матрицы отделов.- Фрагменты показываются как цифра, а не абстракция — в строке и карточке видно число фрагментов и состояние пересборки: это единственный способ объяснить, почему агент отвечает старым текстом.
- Прикрепление — только массовым действием (SPEC-0029 §6: операция атомарна и журналируется). В карточке и редакторе список агентов — только чтение, изменение уходит в диалог KB3, который честно показывает пропуски.
- Импорт разбирается до применения. Спецификация запрещает неявное создание категорий, поэтому ошибка пути должна быть видна до записи — таблица предпросмотра с построчным действием.
- Вложения знания уже есть в API (
ai/knowledgeattachments), в отличие от статей портала — поэтому drop-зона в редакторе знания реализуема без новых эндпоинтов.
Сайдбар — актуально по коду (layout/Sidebar.tsx)
Во всех макетах обновлено 2026-09-06:
- Знак Chatballs — инлайн-SVG из
shared/icons.tsx(LogoIcon): два круга и перемычка с вырезами сверху и снизу, 26px,currentColorпо--c-n1, без подложки. Файлassets/logo-mark.svgбольше не используется. - Пункты — Чат (badge очереди) · Контакты · Агенты · Сотрудники · Порталы · База знаний · Настройки. Пункт «Доска» из ранних макетов — ошибка: в коде это
supportPortalsс иконкойglobe. - Иконки — ровно из
Icon:message·user·robot·team·globe·settings, stroke-width 1.8. - Ширина тянется —
pane-resizerна правом краю: невидимая полоса 6px, подсветка акцентом 2px при наведении и перетаскивании; 180–320px, по умолчанию 220, запоминается в браузере; двойной клик — сброс. На ≤1024px ручка скрыта. - Шапка — 56px: знак + переключатель организации (32px, имя + шеврон).
- Рейка 60px — только ≤1024px: знак · чат · «развернуть» · аватар; полный сайдбар выезжает поверх контента (кадр E7).
- Блок «Запуск» — три шага с автоотметкой, прогресс, primary текущего шага, «×» — скрыть (localStorage).
- Меню пользователя — аватар · имя + email · точка непрочитанных + ⋯ (Уведомления · Профиль · Выйти).
- У сотрудника вместо навигации — дерево «Диалоги» (Все · Группы · Агенты); на странице «Профиль» сайдбар без навигации вообще (кадр P2).
Сотрудники Baseline — карта кадров
Источник — features/employees. Роли: OWNER = ADMIN по правам, EMPLOYEE — только чат; группа задаёт только видимость диалогов (ADR-0043).
- E1 Список — таблица сотрудник · роль · должность · группы · доступ · статус · последний вход; фильтры поиск/роль/группа, «Добавить сотрудника»; в футере счётчик и напоминание про группы. Здесь же показан сайдбар целиком: блок «Запуск» и подсвеченная ручка ширины.
- E2 Список · меню строки — фильтр «Администратор»; действия: карточка · завершить сессии · сбросить пароль · заблокировать. Передачи владения в меню нет.
- E3 Карточка сотрудника — Основные данные · Должность и группы · Системная роль (три варианта, владелец замкнут) · Статус и безопасность · Опасная зона (блокировка); справа Учётная запись и Аудит.
- E4 Карточка владельца — «Только просмотр», баннер про правило роли, все роли замкнуты; единственное опасное действие — Передача владения в опасной зоне.
- E5 Новый сотрудник — выезжающая панель 520px, четыре шага: учётные данные · роль (Сотрудник / Администратор) · должность и группы · пароль первичного доступа: отправить на рабочую почту (по умолчанию) либо сгенерировать и показать.
- E6 Новый сотрудник · пароль показать — выбран второй вариант (на случай проблем с почтой); подпись футера меняется на «Пароль покажем сразу после создания».
- E7 Пароль показан — диалог после создания: пароль моноширинно, «Копировать», маскирование глазом, «Отправить на почту вместо этого», предупреждение о единственном показе, «Скопировал, закрыть». Действие в аудите.
- E8 Сброс пароля — тот же диалог для сброса владельцем или админом (из карточки сотрудника или меню строки): сессии завершены, при первом входе сотрудник задаёт свой пароль.
- E9 Передача владения — открывается только из опасной зоны карточки владельца. Кандидаты — только активные администраторы (чтобы передать сотруднику, его сначала делают админом): выбор, стрелка перехода, новая роль прежнего владельца, предупреждение, чекбокс подтверждения.
- E10 Сайдбар · рейка 1024 — состояние ≤1024px.
Решение по паролю: сервер отдаёт пароль в ответе один раз и в открытом виде не хранит; UI показывает его в диалоге с копированием. Требует поддержки в API (employees/{id}/reset-password/ и создание сотрудника должны возвращать сгенерированный пароль при выборе режима «показать»).
Чат сотрудника — карта кадров
- A — рабочий экран, диалог ведёт AI. Композер активен; подсказка над полем: отправка перехватит диалог. Primary «Взять диалог» в строке действий.
- B — диалог ждёт человека (AI передал). Фильтр «Ждут человека» активен, системное событие в ленте, подсказка над композером.
- C — ведёте вы. Строка действий: «Вернуть AI» · ⋯. Меню ⋯ открыто: Вернуть в очередь · Закрыть диалог · Пометить как спам · Удалить диалог.
- D — ведёт другой сотрудник. Композер заблокирован (замок, кто ведёт), вторичное действие «Взять диалог».
- E — закрытый диалог. Вкладка «Мои», звонки в карточке и ⋯ скрыты, композер заменён сообщением о закрытии.
- F — контекст-панель, вкладка «История»: диалоги контакта, текущий выделен.
- G — фильтр по группе: в сайдбаре выбрана «Поддержка», список отфильтрован. В контекст-панели открыто меню переноса в группу.
- H (первый кадр) — голосовые: в списке превью «Голосовое сообщение · 0:14» с микрофоном; в ленте плеер (play 30 · волна 2px · длительность) и три состояния расшифровки под волной: текст + «Расшифровка AI · Скрыть» · «Расшифровываем…» · кнопка «Расшифровать». Расшифровка доступна и для своих голосовых. Композер в режиме записи: корзина · красный таймер · живая волна · пауза · Отправить (Esc — отмена, Enter — отправить).
- S1 — пустой список: «Диалоги появятся, когда клиенты напишут вашему агенту», без кнопки (сотрудник).
- S2 — ширина 1024: сайдбар сворачивается в рейку 60px, контекст-панель — выезжающая, открывается кнопкой «Контакт» в шапке ленты.
- M1 / M2 — мобильный: список ↔ диалог. Контакт — по кнопке в шапке.
Зафиксированные решения
- Сайдбар 220px с деревом «Диалоги». У сотрудника нет разделов (§3), поэтому сайдбар — это фильтр списка: Все диалоги · Группы (с цветной точкой и счётчиком) · Агенты. Внизу — профиль. Верхней панели нет. На 1024 сворачивается в рейку.
- Одно действие взятия. «Взять диалог» одинаково для очереди и AI — атомарный перехват (ADR-0003). Композер активен всегда: первое отправленное сообщение выполняет тот же перехват; над полем — одна строка-предупреждение.
- Фильтры. Статусы —
UnderlineTabsнад списком (Все · Мои · Ждут оператора; закрытые попадают в Все/Мои); Группа и Агент — пункты дерева в сайдбаре (v1 чипы под поиском убраны). Заголовок списка = выбранный пункт дерева. - Строка диалога (ориентир — Chatwoot): иконка канала (Telegram/MAX — фирменные глифы из
shared/icons.tsx, Email/Web — линейные) + имя агента в одну строку серым (--c-n4) · индикатор приоритета справа → имя · время → превью (↩ если последнее сообщение наше) · непрочитанные → бейджи: таймер ожидания (иконка + время, без слова «ждёт»), группа, метки. Активная строка — фон--c-n9, без акцентной полосы. 4a. Сообщения: у клиента (слева) аватара нет — он в шапке; фон входящих--c-msg-in(светлее/темнее подложки по теме), без обводки. Исходящие справа: аватар AI/сотрудника (в диалоге по очереди могут отвечать AI и разные люди), фон — акцент 22% на подложке ленты, AI —--c-ai16%. - Карточка контакта: аватар 64 · канал · имя + карандаш · описание · поля с иконками и «копировать» (мессенджер/почта, телефон, компания, город). Кнопки «Позвонить» · «Видеозвонок» — в карточке контакта под полями (не в шапке ленты). Блок «Диалог»: Ответственный, Группа, Приоритет (Высокий/Средний/Низкий/Не задан, индикатор-столбики) — полноширинные селекты, Агент и Режим — read-only в две колонки, Метки — чипы с «+ Добавить», Начат. Заметка — жёлтая карточка.
- Метки и Приоритет диалога — по образцу конкурентов; в SPEC-HUB-0031 этих полей нет. Требует решения: добавить в модель или убрать из макета. 6a. Агент везде подписан иконкой бота в цвете агента (Консультант — фиолетовый, Поддержка сайта — бирюзовый). Скроллбары скрыты.
- Ссылка «Открыть профиль контакта» сотруднику не показывается — раздела «Контакты» у него нет.
- Подсказки
Hintсотруднику не показываются (§6). - Композер: поле сверху, строка инструментов снизу (эмодзи · вложение · голосовое · Шаблоны «/») и кнопка отправки с ⏎.
Технические примечания
- Инлайн-стили поверх переменных темы
--c-*, задаваемых на корне из Tweaks: Тема (light/dark) и Акцент (синий · индиго · бирюзовый · оранжевый). Полутона (фон акцента, предупреждений, AI) считаются черезcolor-mix, поэтому одинаково работают в обеих темах. Данные — нейтральные примеры («Ателье Норд»). - Статусные цвета режимов: AI
--ai, ждёт--warning, человек--primary, закрыт--n-5— как в текущемconversations/data.ts.