Add operator unified messenger MVP
This commit is contained in:
+119
-3
@@ -8,7 +8,7 @@
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@500;600;700;800&family=IBM+Plex+Sans:wght@400;500;600&display=swap" rel="stylesheet" />
|
||||
<link rel="stylesheet" href="/operator/assets/styles.css?v=track23-customer-profile-name-meta1" />
|
||||
<link rel="stylesheet" href="/operator/assets/styles.css?v=track24-messenger-mvp1" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="app-shell">
|
||||
@@ -31,8 +31,9 @@
|
||||
<div class="nav-group">
|
||||
<div class="nav-label">Страницы</div>
|
||||
<a class="nav-link active" data-operator-view-link="workspace" href="#workspace"><span class="nav-bullet"></span>Рабочий стол</a>
|
||||
<a class="nav-link" data-operator-view-link="messages" href="#messages"><span class="nav-bullet"></span>Сообщения</a>
|
||||
<a class="nav-link" data-operator-view-link="customers" href="#customers-page"><span class="nav-bullet"></span>Клиенты</a>
|
||||
<a class="nav-link" data-operator-view-link="telegram" href="#telegram-page"><span class="nav-bullet"></span>Telegram</a>
|
||||
<a class="nav-link" data-debug-channel="telegram" href="#telegram-page" hidden><span class="nav-bullet"></span>Telegram</a>
|
||||
<a class="nav-link" data-operator-view-link="whatsapp" data-feature="whatsapp" href="#whatsapp-page" hidden><span class="nav-bullet"></span>WhatsApp</a>
|
||||
<a class="nav-link" data-operator-view-link="calls" data-roles="admin,operator" href="#calls"><span class="nav-bullet"></span>Звонки</a>
|
||||
</div>
|
||||
@@ -176,6 +177,121 @@
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="messagesView" class="operator-view hidden" data-operator-view="messages">
|
||||
<article class="panel reveal panel-span-full messenger-panel" id="messengerWorkspace">
|
||||
<div class="messenger-layout">
|
||||
<aside class="messenger-list-pane">
|
||||
<div class="messenger-pane-head">
|
||||
<div>
|
||||
<p class="eyebrow">Unified messenger</p>
|
||||
<h2>Сообщения</h2>
|
||||
<p class="hint">Единое окно для Telegram сейчас и WhatsApp позже.</p>
|
||||
</div>
|
||||
<button id="messengerRefreshBtn" class="btn ghost" type="button">Повторить</button>
|
||||
</div>
|
||||
<div class="messenger-filters" aria-label="Фильтры сообщений">
|
||||
<button class="messenger-filter active" data-messenger-filter="all" type="button">Все</button>
|
||||
<button class="messenger-filter" data-messenger-filter="new" type="button">Новые</button>
|
||||
<button class="messenger-filter" data-messenger-filter="mine" type="button">Мои</button>
|
||||
<button class="messenger-filter" data-messenger-filter="ai" type="button">AI handoff</button>
|
||||
</div>
|
||||
<div id="messengerConversationList" class="messenger-conversation-list"></div>
|
||||
</aside>
|
||||
|
||||
<section class="messenger-chat-pane">
|
||||
<header class="messenger-chat-header">
|
||||
<div class="messenger-chat-identity">
|
||||
<div id="messengerConversationAvatar" class="telegram-thread-avatar">TG</div>
|
||||
<div class="messenger-chat-copy">
|
||||
<div id="messengerConversationTitle" class="messenger-chat-title">Выберите диалог</div>
|
||||
<div id="messengerConversationMeta" class="messenger-chat-meta">Выберите диалог слева.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="messenger-chat-actions">
|
||||
<span id="messengerChannelBadge" class="messenger-channel-badge">Telegram</span>
|
||||
<button id="messengerClaimBtn" class="btn ghost" type="button">Взять в работу</button>
|
||||
<button id="messengerCloseBtn" class="btn ghost" type="button">Закрыть</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section id="messengerAiSummaryCard" class="telegram-ai-summary messenger-ai-summary hidden">
|
||||
<div class="telegram-ai-summary-head">
|
||||
<div>
|
||||
<div class="telegram-ai-summary-title">AI summary</div>
|
||||
<div class="telegram-ai-summary-caption">Короткий контекст перед ручным ответом.</div>
|
||||
</div>
|
||||
<div class="telegram-ai-summary-side">
|
||||
<div id="messengerAiSummaryStatus"></div>
|
||||
<div id="messengerAiSummaryMeta" class="telegram-ai-summary-meta"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="messengerAiSummaryContent" class="telegram-ai-summary-grid"></div>
|
||||
</section>
|
||||
|
||||
<div id="messengerBackendError" class="messenger-error hidden">
|
||||
<span>Backend сообщений недоступен.</span>
|
||||
<button id="messengerRetryBtn" class="btn ghost" type="button">Повторить</button>
|
||||
</div>
|
||||
|
||||
<div class="messenger-chat-surface">
|
||||
<div id="messengerMessagesTimeline" class="telegram-message-timeline messenger-message-timeline"></div>
|
||||
</div>
|
||||
|
||||
<footer class="messenger-composer-wrap">
|
||||
<div class="telegram-composer-shell messenger-composer-shell">
|
||||
<textarea id="messengerReplyText" placeholder="Написать ответ клиенту..."></textarea>
|
||||
<button id="messengerSendReplyBtn" class="telegram-send-btn" type="button" aria-label="Отправить">
|
||||
<svg viewBox="0 0 24 24" aria-hidden="true">
|
||||
<path d="M21 3 3.9 10.09a1 1 0 0 0 .06 1.87l6.5 2.27 2.27 6.5a1 1 0 0 0 1.87.06L21 3Z" />
|
||||
<path d="M10.5 14.5 21 3" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<div id="messengerComposerHint" class="telegram-composer-hint">Ответ доступен после выбора и принятия диалога в работу.</div>
|
||||
</footer>
|
||||
</section>
|
||||
|
||||
<aside class="messenger-context-pane">
|
||||
<div class="messenger-context-card">
|
||||
<p class="eyebrow">Клиент</p>
|
||||
<h3 id="messengerContextName">Диалог не выбран</h3>
|
||||
<dl class="messenger-context-list">
|
||||
<div>
|
||||
<dt>Канал</dt>
|
||||
<dd id="messengerContextChannel">Telegram</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>Статус</dt>
|
||||
<dd id="messengerContextStatus">—</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>Клиент</dt>
|
||||
<dd id="messengerContextCustomer">—</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>Обращение</dt>
|
||||
<dd id="messengerContextInteraction">—</dd>
|
||||
</div>
|
||||
</dl>
|
||||
<button id="messengerOpenProfileBtn" class="btn" type="button">Открыть профиль</button>
|
||||
</div>
|
||||
<div class="messenger-context-card compact">
|
||||
<p class="eyebrow">Последнее сообщение</p>
|
||||
<p id="messengerContextPreview" class="messenger-context-preview">Выберите диалог слева.</p>
|
||||
</div>
|
||||
<div class="messenger-context-card compact">
|
||||
<p class="eyebrow">AI summary</p>
|
||||
<p id="messengerContextAiSummary" class="messenger-context-preview">Сводка появится после AI handoff.</p>
|
||||
</div>
|
||||
<div class="messenger-context-card compact">
|
||||
<p class="eyebrow">Быстрые действия</p>
|
||||
<button id="messengerContextOpenProfileBtn" class="btn ghost" type="button">Профиль клиента</button>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section id="customersView" class="operator-view hidden" data-operator-view="customers">
|
||||
<section class="page-hero reveal customers-page-hero">
|
||||
<h1>Список лидов</h1>
|
||||
@@ -640,6 +756,6 @@
|
||||
|
||||
<script src="/operator/assets/access-guards.js?v=track16-voice-transcript1"></script>
|
||||
<script src="/operator/assets/sip-0.21.2.min.js?v=track16-voice-transcript1"></script>
|
||||
<script src="/operator/assets/app.js?v=track42-customer-profile-name-meta1"></script>
|
||||
<script src="/operator/assets/app.js?v=track43-messenger-mvp1"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user