{{ error }} ✕
{{ notice }} ✕
🔇
Браузер не даёт включить звук, пока вы не щёлкнули по странице.
Щёлкните в любом месте (или нажмите 🔔 в шапке) — сигнал заработает.
Диалоги
требуют внимания: {{ attentionCount() }}Пока пусто. Нажми «+ Тест-диалог» и напиши боту как клиент — увидишь весь сценарий подбора.
{{ ownerLabel(d.owner) }}
{{ d.client_name || d.client_phone }}
{{ d.last_message }}
{{ stateRu[d.state] || d.state }}
{{ thread.client.full_name || thread.client.phone }}
{{ thread.client.phone }}
Заявка
{{ v }}
⚠
Интернет-поиск не смог подтвердить эту машину — клиент предупреждён и передан вам, подберите вручную.
⚠
Фото не прочиталось из-за сбоя на нашей стороне (снимок может быть нормальным) — посмотрите его сами в переписке ниже. Если снимка там нет, его тоже не удалось скачать — попросите клиента прислать заново. Клиенту сказали честно и передали вам.
🔕
Клиент когда-то отписался от сообщений («СТОП»). Покупку он зарегистрировал и согласие дал,
но напоминания о бесплатных проверках ему по закону НЕ уходят. Если он хочет их получать —
скажите ему написать нам об этом.
📷 Что видно на фото (подсказки — проверьте):
• Полярность по виду: {{ visualPolRu(thread.slots._photo_visual.visual_polarity) }} — уверенность {{ confRu(thread.slots._photo_visual.visual_polarity_conf) }}
• Клеммы (высота): {{ recessedRu(thread.slots._photo_visual.terminals_recessed) }} — уверенность {{ confRu(thread.slots._photo_visual.terminals_recessed_conf) }}
• Клеммы (толщина): {{ gaugeRu(thread.slots._photo_visual.terminal_gauge) }} — уверенность {{ confRu(thread.slots._photo_visual.terminal_gauge_conf) }}
⚠ Этикетка: {{ polarityRu([thread.slots._photo_visual.label_polarity]) }}, а по виду плюс с другой стороны ({{ polarityRu([thread.slots._photo_visual.visual_polarity]) }}). Проверьте полярность!
★ Бот подобрал — проверьте и отправьте клиенту
📌
Прямой запрос клиента: {{ directReq().requested_brand }} {{ directReq().requested_capacity }} {{ polRu(directReq().requested_polarity) }}. Найдено: {{ matchRu(directReq().match_type) }}.
🌐 Эту машину бот не знал — нашёл в интернете. Проверьте внимательно!
{{ thread.trace.payload.vehicle_resolution.notes }}
Источники:
[{{ i+1 }}]
📷 АКБ распознан по фото клиента. Проверьте по снимку!
Распознано: {{ thread.trace.payload.vehicle_resolution.brand }},
{{ thread.trace.payload.vehicle_resolution.capacity_ah }} Ач,
{{ polarityRu([thread.trace.payload.vehicle_resolution.polarity]) }}, {{ thread.trace.payload.vehicle_resolution.tech }}
📷 Клиент прислал фото — сверьте с подбором по машине
Этикетка: {{ thread.slots._photo.brand }}, {{ thread.slots._photo.capacity_ah }} Ач, {{
polarityRu([thread.slots._photo.polarity]) }}, корпус {{ thread.slots._photo.case_code }}
Этикетку прочитать не удалось — посмотрите снимок.
⚠ Фото расходится с данными по машине: {{ photoCarConflicts().join('; ') }}. Проверьте!
⚠
Данные по этой машине — ориентир (не из паспорта). Проверьте корпус/полярность перед отправкой.
⚠
Обратите внимание: {{ (thread.trace.risk_flags||[]).map(f => riskRu(f)).join('; ') }}
Что распознал
{{ qualityRu(thread.trace.match_quality) }}
Нужен аккумулятор
корпус {{ (thread.trace.payload.requirement.cases||[]).join('/') }} ·
{{ polarityRu(thread.trace.payload.requirement.polarities) }}
{{ thread.trace.payload.requirement.capacity_min }}–{{ thread.trace.payload.requirement.capacity_max }} Ач
{{ thread.trace.payload.requirement.capacity_min }}–{{ thread.trace.payload.requirement.capacity_max }} Ач
По складу
смотрел {{ thread.trace.payload.stock_items_considered }} шт.
не подошли: {{ rejectedRu(thread.trace.payload.stock_items_rejected) }}
не подошли: {{ rejectedRu(thread.trace.payload.stock_items_rejected) }}
{{ c.tier }}
{{ c.name }}
{{ fmt(c.price) }}
{{ whyFor(i) }}
Исправление требования (поколение)
Введите ВСЕ валидные варианты АКБ для этого поколения (заменит текущие строки базы).
⏳
Окно WhatsApp закрыто: свободный текст не дойдёт.
Клиент не писал больше 24 часов — достучаться можно только одобренным шаблоном.
Но этот клиент отписался («СТОП») —
слать ему шаблон нельзя.
Шаблон отправлен — ждём ответа
Ответ консультанта
🧪 Тест-режим
Написать боту от имени клиента — для проверки. Уберём, когда закончим тесты.
💬
Выберите заявку слева
Нажмите строку в списке — здесь откроется переписка с клиентом.
Найдено
{{ items.length }}
📦
Загрузка остатков
↻
Строк: {{ importReport.rows_total }} · обновлено: {{ importReport.matched }} ·
новых (в диффы): {{ importReport.new_diffs }} · пропало: {{ importReport.missing }} ·
переименовано: {{ importReport.renamed }}
📦
Диффы импорта
{{ diffs.length }}⚠
Строки из файла, которые бот не сопоставил автоматически — решите по каждой.
| Строка из файла | Тип | Кол-во | Действия |
|---|---|---|---|
| {{ d.name_1c }} {{ d.code_1c }} |
{{ {new:'новый',renamed:'переименование',missing:'пропал'}[d.kind] }} | {{ d.qty }} |
📦
Каталог
| Товар | Остаток | Цена | Параметры |
|---|---|---|---|
| {{ i.name_1c }}
проверить
{{ i.code_1c }} |
{{ i.qty }} | {{ fmt(i.price) }} | {{ [i.capacity_ah && i.capacity_ah+' Ач', i.polarity && i.polarity+'+', i.case_code, i.tech].filter(Boolean).join(' · ') }} |
✏️
{{ itemEdit.name_1c }}
проверить
⚠
{{ itemEdit.review_note }}
Бренд
Ёмкость, Ач
CCA, А
Полярность
Корпус
Технология
Страна
Kaspi URL
Найдено
{{ clients.length }}
👥
Клиенты
| Телефон | Имя | Источник |
|---|---|---|
| {{ c.phone }} | {{ c.full_name }} | {{ c.source }} |
👥
Новый клиент
Телефон
Имя
{{ clientCard.full_name || clientCard.phone }}
🇰🇿 казахский
Телефон
{{ clientCard.phone }}
Язык
{{ clientCard.lang || '—' }}
Машин в карточке
{{ clientCard.vehicles.length }}
Автомобили
| Авто | Топливо |
|---|---|
| {{ v.brand }} {{ v.model }} {{ v.year }} | {{ v.fuel }} |
Заказы
| # | Статус | Дата |
|---|---|---|
| #{{ o.id }} | {{ statusRu[o.status] || o.status }} | {{ dts(o.created_at) }} |
Заказов нет
Показано
{{ orders.length }}
Оплачено
{{ ordersPaidCount }} ждут выдачи
{{ enrollFilterRu[enrollFilter] }}
{{ pendingEnroll.length }} офлайн-продаж
🧾
Заказы
| # | Статус | Сумма | Создан | |
|---|---|---|---|---|
| {{ o.id }} | {{ statusRu[o.status] }} | {{ fmt(o.total) }} | {{ dts(o.created_at) }} |
📲
Продажи с прилавка
ℹ
Продажи с прилавка, покупатель пока не зарегистрирован. Покажите QR клиенту
с монитора: он отсканирует, напишет боту — и попадёт в базу с напоминаниями
о бесплатных гарантийных проверках.
ℹ
Покупатель отсканировал QR и получает напоминания о бесплатных проверках.
«Осмотры» — отметить состоявшийся визит, иначе напоминания по нему продолжат приходить.
При возврате товара — «Отменить продажу»: напоминания клиенту прекратятся.
Здесь пусто.
| Товар | Цена | Дата продажи | Код | Статус | Клиент | |||
|---|---|---|---|---|---|---|---|---|
| {{ saleItemName(s) }}
{{ s.item.code_1c }}
⚠ {{ s.warnings.join("; ") }} |
{{ fmt(s.price) }} | {{ dOnly(s.sold_at) }} | {{ s.token }}
не завершена
⚠ код просрочен — бот по нему уже не регистрирует |
{{ saleStatusRu[s.status] || s.status }} | {{ s.client.full_name || '' }} {{ s.client.phone }} — | |||
|
Гарантийные осмотры
Осмотров по этой покупке нет.
|
📲
Офлайн-продажа
ℹ
Товар (поиск по имени, бренду или коду 1С)
Клиента вводить не нужно — он сам представится боту, отсканировав QR.
{{ i.name_1c }} — {{ fmt(i.price) }} (ост. {{ i.qty }})
Выбрано
Цена, ₸
Дата продажи
Дальше появится QR — поверните монитор к клиенту.
📲
Покажите QR клиенту
↔
Поверните монитор к клиенту. Пусть наведёт камеру телефона —
откроется WhatsApp с готовым сообщением, останется нажать «отправить».
⚠
{{ offlineSale.warnings.join("; ") }}
⚠
QR не загрузился. Клиент может просто написать нам код вручную.
{{ offlineSale.token }}
Не сканируется — пусть напишет нам на {{ waNumber(offlineSale) }} код
{{ offlineSale.token }}
Продажа уже сохранена — QR можно открыть позже
из списка «Ожидают сканирования».
Заказ #{{ orderDetail.id }}
{{ statusRu[orderDetail.status] }}
Клиент
{{ orderDetail.client.full_name || '' }} {{ orderDetail.client.phone }}
Тип
{{ {pickup:'Самовывоз', manual_invoice:'Счёт + доставка', kaspi_link:'Kaspi-ссылка'}[orderDetail.kind] }}
Зона
{{ orderDetail.zone.name }} +{{ fmt(orderDetail.zone.fee) }}
—
{{ orderDetail.address }}
{{ orderDetail.address }}
| Товар | Кол-во | Цена | Сумма |
|---|---|---|---|
| {{ i.name_1c }} | {{ i.qty }} | {{ fmt(i.price) }} | {{ fmt(i.sum) }} |
| Доставка: {{ orderDetail.zone.name }} | {{ fmt(orderDetail.zone.fee) }} | ||
Итого: {{ fmt(orderDetail.total) }}
↺
Отмечено как вынужденная замена — эта покупка не пойдёт в обучение подбора.
Сменить статус
Гарантийные осмотры
| Осмотр | Месяц | Статус | |
|---|---|---|---|
| {{ ins.kind=='first' ? 'первичный' : 'квартальный' }} | {{ ins.due_month.slice(0,7) }} | {{ inspRu[ins.status] || ins.status }} |
🧾
Клиент (поиск по телефону/имени)
Новый заказ
{{ c.phone }} {{ c.full_name }}
{{ i.name_1c }} — {{ fmt(i.price) }} (ост. {{ i.qty }})
| {{ it.name }} |
Тип
Зона доставки
Адрес
Выучено
{{ learned.length }}
Из продаж
{{ learnedSaleCount }}
Из интернета / правок
{{ learnedOtherCount }}
🎓
Что выучил бот
ℹ
Строки подбора, которые бот добавил сам (из продаж, из интернета,
из правок консультанта). Проверьте и удалите неверные — курируемый каталог не затрагивается.
Удалённое ложится в корзину и восстанавливается.
Пока ничего не выучено.
| Марка | Модель | Годы | Корпус | Поляр. | Откуда | Подтв. | |
|---|---|---|---|---|---|---|---|
| {{ r.brand }} | {{ r.model }} | {{ r.year_from || '' }}–{{ r.year_to || '' }} | {{ r.case_standard }} {{ r.case_code }} | {{ polarityRu([r.polarity]) }} | {{ learnSrcRu[r.source] || r.source }} | {{ r.confirmed_count }} |
🗑
Корзина
⚠
Удалённые выученные строки. «Восстановить» вернёт строку в подбор.
«Удалить навсегда» стирает без возможности отката.
Корзина пуста.
| Марка | Модель | Годы | Корпус | Поляр. | Откуда | Удалено | |
|---|---|---|---|---|---|---|---|
| {{ r.brand }} | {{ r.model }} | {{ r.year_from || '' }}–{{ r.year_to || '' }} | {{ r.case_standard }} {{ r.case_code }} | {{ polarityRu([r.polarity]) }} | {{ learnSrcRu[r.source] || r.source }} | {{ dts(r.deleted_at) }} |
Тексты бота
Все реплики, которые бот отправляет клиентам. Русский и казахский — рядом.
Русский
{{ texts.length }} реплик
Казахский
{{ txKkFilled }} из {{ txKkTotal }} заполнено
Разделов
{{ TEXT_GROUPS.length }} по смыслу
{{ g.title }}{{ g.items.length }}
{{ t.key }}
казахский не нужен
✓ казахский есть
нужен казахский
{{ t.description }}
Подстановки (не переводить, оставить как есть):
{{ tok }}
Русский
Қазақша
Ничего не найдено по запросу.