--- манифест: Доковый ВебАпп — механизм статус: черновик v1 обновлено: 2026-08-31 страница: person-webapp-dock.html связано: [[chesuyka]] — поверхности целиком · [[iframe]] — рамка в Кобре --- # Доковый ВебАпп ## Что это **Инструмент выезжает панелью рядом с перепиской.** Оператор видит приложение сбоку от чата и не переключает окна: карточка клиента, дашборд, чек-лист подключения — всё под рукой. Канон объясняет метафорой штурмана: «капитан ведёт переговоры по рации — это ваш чат с клиентом. А справа, не мешая разговору, выдвигается штурманская панель». Разница с карманным простая: **джинна вызывают, штурман сидит рядом всегда.** ## Область Один чат. Панель всегда знает, про кого она: в подписи приезжают `chat{kind, id}` и `client{chat_id, customer_id, avito_id, crm_id, phone}`. Это и отличает её от полноэкранного входа через рейл, где ни `chat`, ни `client` нет — подробности в [iframe.md](manifest-iframe.md). ## Правила отображения Панель узкая — 360–420 пикселей. Отсюда всё остальное: 1. **Одно действие в один клик** — «отправить в чат», «вставить в ответ». Это главный экран для работы, а не для изучения. 2. **Никаких широких таблиц** и горизонтальной прокрутки. Не влезло — значит не туда положили. 3. **Не больше трёх экранов** внутри панели. 4. **Никаких модалок на весь экран** — они перекрывают переписку, ради которой панель и открыта. 5. **Вставка, а не отправка**: `insertText` кладёт текст в поле ввода, отправляет человек. Модуль не пишет клиенту от имени оператора. ## Типичное содержимое - карточка клиента из CRM с заказами и следующим шагом; - истории и каталог медиа Контент-Завода с кнопкой «отправить в чат»; - чек-лист подключения; - дашборд состояния — по правилу первого экрана из [iframe.md](manifest-iframe.md). ## Грабли 1. **Таблица на двенадцать колонок** — оператор скроллит вбок вместо того, чтобы работать. 2. **Поиск клиента по одному ключу** — на карточке Motorland это дало 7 попаданий из 17, а телефон давал 17 из 17. Нужен каскад ключей и нормализация номера. 3. **Пустая панель вместо объяснения** — если клиент не найден, честно сказать почему, а не «клиента нет в базе». ## Источники - Канон: `person-webapp-dock.html`, выпуск №8 - [chesuyka.md](manifest-chesuyka.md) · [iframe.md](manifest-iframe.md) --- _Источник: `cobra-components/webapp-dock.md` в репозитории audio-talks. Эта копия обновляется скриптом `sync-components.mjs` — правки вносить в источник, не здесь._