From 833d2dcd4443ffefd1f13b8b656a9a49ce106603 Mon Sep 17 00:00:00 2001 From: Hermes Date: Tue, 15 Sep 2026 18:02:22 +0200 Subject: [PATCH] =?UTF-8?q?fix(autocall):=20=D0=B2=20=D0=BF=D1=80=D0=B5?= =?UTF-8?q?=D0=B7=D0=B5=D0=BD=D1=82=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D1=85=D0=BE=D0=B4=D0=B8=D1=82=20=D0=BF=D0=BE=20=D0=BE?= =?UTF-8?q?=D0=B1=D0=BC=D0=B5=D0=BD=D1=83=20=D1=81=201=D0=A1,=20=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=BE=D1=82=D0=BC=D0=B5=D1=82=D0=BA=D0=BE=D0=B9?= =?UTF-8?q?=20=D0=BC=D0=B5=D0=BD=D0=B5=D0=B4=D0=B6=D0=B5=D1=80=D0=B0;=20PD?= =?UTF-8?q?F=20=D0=B8=20HTML=20=D1=81=D0=BE=D0=B1=D0=B8=D1=80=D0=B0=D1=8E?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D0=B8=D0=B7=20=D0=BE=D0=B4=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20=D1=81=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D1=80=D0=B6=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/autocall/autocall-how-it-works.html | 2 +- docs/autocall/autocall-how-it-works.pdf | Bin 92099 -> 92594 bytes docs/autocall/deck_content.py | 5 +- docs/autocall/how-it-works.py | 559 +++++++---------------- 4 files changed, 175 insertions(+), 391 deletions(-) diff --git a/docs/autocall/autocall-how-it-works.html b/docs/autocall/autocall-how-it-works.html index 4da8b3b..8526bda 100644 --- a/docs/autocall/autocall-how-it-works.html +++ b/docs/autocall/autocall-how-it-works.html @@ -83,6 +83,6 @@ -
СУПЕР САМ · ДОСТАВКА И САМОВЫВОЗ

Автодозвон: как это работает

Робот звонит клиенту, согласует день и половину дня — без участия оператора

Что описано: правила звонка, паузы, поведение в нештатных случаях (не дозвонились,

сбросили трубку, не нажали цифру), где что настраивается и что видит менеджер.

 

Основано на текущем коде и настройках боевой системы, без обещаний и продажи.

Автодозвон SuperSam · как это работает1

Что делает робот

Коротко: он не продаёт и не консультирует — только согласует день и половину дня

Три задачи

  • Дозвониться, когда заказ готов и клиент не подтвердил день по ссылке из SMS
  • Предложить конкретные дни голосом и получить выбор цифрой
  • Записать выбор в заказ — дату, половину дня и признак «согласовано роботом»

Чего он не делает

  • Не соединяет с живым менеджером — такой цифры в диалоге нет
  • Не спорит и не уговаривает: нет ответа — повторит по расписанию
  • Не предлагает нерабочие дни и не звонит вне рабочего времени

Как это выглядит для клиента

  • Звонок с одного номера, голос один и тот же: «Ваш заказ готов. Выберите день и время»
  • Клиент нажимает цифру дня и цифру половины дня — робот подтверждает выбор вслух
  • После подтверждения даёт возможность изменить выбор (нажатием цифры 2)
Автодозвон SuperSam · как это работает2

Путь заказа до звонка

Когда именно звучит звонок

1. Заказ готовменеджер отмечаетготовность в системе
›
2. SMS со ссылкойклиент может выбратьдень сам, без звонка
›
3. Пауза 90 минутнастройка админки:столько ждём ответа
›
4. Звонок роботаесли клиент неподтвердил по ссылке
›
5. Результат в заказдата и половина дняв самом заказе

Важно

  • Если клиент подтвердил день по ссылке сам — звонка не будет: заказ уже согласован
  • Звонок идёт только в рабочее время и только в рабочие дни (настройки кампании)
Автодозвон SuperSam · как это работает3

Откуда берутся дни и время

Админка → Расписание → Рабочие дни: один источник правды

Что настраивается

  • Рабочие дни склада (самовывоз) и рабочие дни доставки
  • Часы: открытие и закрытие склада, часы доставки
  • «Первая половина — до» — граница между половинами дня
  • «Сегодня предлагаем до» — до какого времени предлагать сегодняшний день

Как это работает в коде

  • Окно звонка считается рабочими днями: выходные не сокращают окно, а пропускаются
  • Робот называет реальные дни голосом: «сегодня», «в понедельник», «во вторник»
  • Клиентская ссылка использует те же дни — расхождений между звонком и ссылкой нет

Текущие значения в системе

  • Склад: пн–пт, 09:00–17:30, половина дня до 13:00, «сегодня» предлагаем до 15:30
  • Доставка: пн–пт (суббота — выходной) 09:00–21:00, половина дня до 15:00
  • Утро и вечер: до 13:00 робот спросит, какая половина дня удобнее; после 13:00 — сразу зафиксирует вторую
Автодозвон SuperSam · как это работает4

Самовывоз: какие дни предлагает

Окно — «день готовности + два рабочих дня», выходные пропускаются

Заказ готовЧто предложит роботПочему так
в понедельникпн, вт, сртри рабочих дня подряд
в пятницупт, пн, втсуббота и воскресенье — выходные склада
в субботупн, вт, срсам выходной не предлагаем
в пятницу после 15:30пн, вт«сегодня» больше не предлагаем (настройка)
в понедельник после 13:00пн, вт, срполовину дня не спрашиваем — сразу вторая
неделю назадзвонка нетокно прошло — звонить не о чем

Две настройки, которые это двигают

  • «Сегодня предлагаем до» (сейчас 15:30) — позже этого времени сегодняшний день исчезает из звонка и из ссылки
  • «Первая половина — до» (сейчас 13:00) — после неё робот не спрашивает половину дня, сразу пишет вторую
Автодозвон SuperSam · как это работает5

Доставка: не в день готовности

Нужен запас времени, чтобы собрать маршрут — поэтому начинаем со следующего дня

Заказ готовЧто предложит робот
в понедельниквторник и среда
в пятницупонедельник и вторник (в субботу не возим)
в субботупонедельник и вторник
в четверг, звонок в пятницупятница и понедельник
в пятницу, звонок в понедельникпонедельник и вторник

Ключевое отличие от самовывоза

  • В день готовности доставку не предлагаем никогда — только следующие рабочие дни
  • Суббота и воскресенье в графике доставки — выходные, их робот не назовёт
  • Время доставки — половина дня: до 15:00 или после (границу задаёт админка)
Автодозвон SuperSam · как это работает6

Как проходит разговор

Робот задаёт вопрос и ждёт цифру; молчание не считается согласием

ШагЧто говорит роботЧто делает клиентСколько ждёт
Приветствие«Ваш заказ готов. Выберите день и время доставки»слушает—
День«Нажмите один, чтобы доставить. В понедельник. Нажмите два…»нажимает 1 или 29 секунд
Половина дня«Первая половина дня или вторая?»нажимает 1 или 29 секунд
Подтверждение«Первая половина дня» — озвучивает выборслушает—
Изменить?подсказка про кнопку 2 — один разнажимает 2, чтобы переделать6 секунд

Что делает при ошибке ввода

  • Не понял цифру — повторяет тот же вопрос один раз
  • Снова не понял или молчит — завершает: «Вы не выбрали время. С вами свяжется менеджер»
  • Клиент нажимает 2 — диалог начинается заново («день и время»), прежний слот при этом не теряется
Автодозвон SuperSam · как это работает7

Что можно нажать

Всего несколько цифр — и одна из них «больше не звоните»

ЦифраЗначениеЧто происходит
1первый предложенный деньробот переходит к выбору половины дня
2второй предложенный деньробот переходит к выбору половины дня
3третий день (только самовывоз)робот переходит к выбору половины дня
1 / 2половина дняпервая половина / вторая половина
9отказ от звонковробот больше не позвонит; в карточке — «отказ от звонков»
0 и прочиене принимаютсявопрос повторяется; соединения с оператором нет

Отдельно про «0»

  • Раньше в диалоге была попытка «позвать менеджера», но она никогда не срабатывала (нажатие не отличалось от тишины)
  • Эту ветку убрали: живого соединения с оператором у робота нет, менеджер подключается только задачей из системы
Автодозвон SuperSam · как это работает8

Если не дозвонились

Робот различает «не взял трубку» и «вместо человека ответил автоответчик/оператор»

Как понимает, что трубку не взяли

  • Никто не ответил за 45 секунд — попытка считается неудачной
  • Трубку подняли, но гудки шли больше 20 секунд и ни одной цифры не нажали — это объявление оператора, а не человек: пишем «не взял трубку»
  • Живой человек почти всегда берёт трубку раньше, поэтому правило надёжно отделяет автоответчик

Что происходит дальше

  • Повторный звонок — не раньше чем через 120 минут (настройка)
  • Всего не больше 5 попыток на заказ (настройка)
  • Звонит только в рабочие часы кампании: 09:00–20:00, дни — по настройке
  • Исчерпали попытки — заказ уходит менеджеру, автозвонок по нему останавливается

Для менеджера это видно в карточке

  • Каждая попытка — отдельная строка истории: время, результат, длительность разговора
  • Статус заказа меняется на «нужен менеджер» — с комментарием «не дозвонились / не нажал»
  • Отдельно красным предупреждаем, если заявка «Позвонить сейчас» висит больше 15 минут
Автодозвон SuperSam · как это работает9

Если сбросили трубку в середине разговора

Робот запоминает то, что успел услышать, и не портит уже согласованный слот

Когда положили трубкуЧто запишет роботЧто увидит менеджер
до выбора дняответил, ничего не нажал«взял, не нажал (день)» — попытка зачтена
день выбрал, время не успелдень выбран, время нет«взял, не нажал (время)»
выбор подтвердил и сбросилслот согласовандата и половина дня в заказе, статус «согласовано»
начал менять выбор и сбросилостаётся прежний слот«правка не доведена» — прежнее согласование в силе

Почему так

  • Слот становится согласованным только после двух ответов: день и половина дня — это защита от «услышал половину фразы»
  • Обрыв не считается согласием: если клиент не подтвердил, робот перезвонит по расписанию или отдаст заказ менеджеру
  • Если клиент уже согласовал слот, а потом начал менять и бросил трубку — прежний выбор сохраняется, ничего не теряется
Автодозвон SuperSam · как это работает10

Когда подключается менеджер

Робот доводит дело до конца сам, но в трёх случаях передаёт человеку

Не нажал цифру 2 раза

  • Робот писал «взял, но не нажал» дважды
  • Заказ помечается «нужен менеджер», комментарий «не дозвонились / не нажал»
  • Порог «не нажал × N» настраивается в админке автодозвона

Исчерпаны 5 попыток

  • Каждый звонок — отдельная попытка
  • Когда попытки закончились, автозвонок прекращается
  • Заказ остаётся в списке у менеджера

Отказ или неверный номер

  • Цифра 9 — клиент просит больше не звонить: ставим запрет автоматически
  • Неверный номер — задача менеджеру
  • Отказ клиента действует и на другие заказы: он в списке «не звонить»

Что видит менеджер в карточке заказа

  • Единый статус автодозвона и история всех попыток с результатами и слотами
  • Кнопка «Позвонить сейчас» — ручной звонок клиенту (не тестовый номер) и живое состояние: «в очереди», «звоним», «звонок сделан» с результатом
  • Кнопка «Не звонить» — если робот не должен беспокоить этого клиента
Автодозвон SuperSam · как это работает11

Когда робот не звонит вообще

Список условий, при которых звонка не будет — проверяются до набора номера

По клиенту и заказу

  • Клиент сам подтвердил день по ссылке — звонок не нужен
  • Клиент просил больше не звонить (нажал 9) или менеджер поставил «Не звонить»
  • Номер в списке исключений — например, на МТС-диапазон звонки не идут
  • Самовывоз: автообзвон по самовывозу включается отдельной галочкой (сейчас выключен)

По времени и географии

  • Вне рабочих часов кампании (09:00–20:00) и вне рабочих дней
  • Город исключён целиком или для города выключен канал
  • В админке автодозвона выключены звонки по городу — например, Ялта: SMS идут, звонков нет
  • Меньше 90 минут прошло после SMS со ссылкой

Админка автодозвона: где это переключается

  • Панель «Автодозвон»: тестовый режим, часы и дни звонков, паузы, лимит попыток, порог «не нажал × N»
  • Панель «Локации»: для каждого города — звонки включены или выключены (SMS не затрагивается)
  • Панель исключений: номера и префиксы, на которые не звоним, с причиной
Автодозвон SuperSam · как это работает12

Что записывается в заказ

Результат звонка виден там же, где всё остальное

ПолеЗначение
Датаконкретная дата, которую назвал робот (например, понедельник 21.09)
Время«первая половина дня» или «вторая половина дня»
Источник«согласовано роботом» — видно, что выбор сделал клиент в звонке
Статус«согласовано» / «нужен менеджер» / «отказ от звонков»
Комментарий«Согласовано роботом: завтра, первая половина дня»

Зачем это нужно

  • Менеджер видит причину и источник решения, а не просто «дата стоит»
  • История звонков хранится отдельно: видно, сколько было попыток и чем они закончились
  • Дата, названная роботом, используется дальше в работе склада и доставки
Автодозвон SuperSam · как это работает13

Тестовый режим и текущее состояние

Сейчас обзвон клиентов выключен — система в тестовом режиме

ПараметрЗначение сейчасЧто будет при запуске
Обзвон клиентоввыключенвключается отдельной командой
Тестовый номерзвонит только на негомассовый обзвон идёт клиентам
Кнопка «Позвонить сейчас»звонит клиенту сразутак же — звонок клиенту
Звонки по самовывозувыключены галочкойвключаются отдельно от доставки

Как проверяется перед запуском

  • Тестовый звонок на свой номер: диалог, дни, половина дня, запись результата
  • Прогон диалога без звонка: проверка всех веток (согласие, обрыв, молчание, отказ)
  • Проверка окон: робот предлагает именно те дни, которые заданы в админке
Автодозвон SuperSam · как это работает14

Что пока не учитывается

Честный список: это важно знать до запуска

График

  • Праздники: календаря нерабочих дат нет — если праздник попадёт в окно, робот его предложит
  • Часы доставки используются частично: границу половины дня робот проговаривает словами, без конкретного времени

Настройки, которые пока не влияют

  • «Попыток в день» — поле есть, но расписание повторов задаётся интервалом между попытками
  • «Попытки следующего дня (10:00, 14:00)» — пока не используются
  • «Таймаут звонка, 30 секунд» — звонок ждёт ответа 45 секунд (значение в самом звонке)

Что предлагаем уточнить до боевого запуска

  • Список праздников (или решение не учитывать их)
  • Нужен ли жёсткий график повторов по времени, кроме интервала 120 минут
  • Оставить ли «0» без реакции — сейчас это просто неверная цифра
Автодозвон SuperSam · как это работает15

Коротко

Одна страница вместо всей презентации

Что делает система

  • Ждёт 90 минут после SMS и звонит, если клиент не подтвердил день сам
  • Предлагает только рабочие дни по графику: самовывоз — включая сегодня, доставка — со следующего дня
  • Спрашивает день и половину дня, подтверждает вслух, даёт один раз переделать выбор
  • Повторяет попытки не чаще чем раз в 2 часа, максимум 5 раз, только 09:00–20:00 в рабочие дни
  • После двух «взял, но не нажал» или исчерпания попыток передаёт заказ менеджеру
  • Отказ (цифра 9) останавливает обзвон клиента навсегда
  • Каждая попытка и результат видны в карточке заказа; ручной звонок идёт клиенту и показывает своё состояние

Что осталось решить

  • Праздники и точный график повторов — по вашим правилам
  • Момент включения боевого обзвона клиентов и по самовывозу
Автодозвон SuperSam · как это работает16
+
СУПЕР САМ · ДОСТАВКА И САМОВЫВОЗ

Автодозвон: как это работает

Робот звонит клиенту, согласует день и половину дня — без участия оператора

Что описано: правила звонка, паузы, поведение в нештатных случаях (не дозвонились,

сбросили трубку, не нажали цифру), где что настраивается и что видит менеджер.

 

Основано на текущем коде и настройках боевой системы, без обещаний и продажи.

Автодозвон SuperSam · как это работает1

Что делает робот

Коротко: он не продаёт и не консультирует — только согласует день и половину дня

Три задачи

  • Дозвониться, когда заказ готов и клиент не подтвердил день по ссылке из SMS
  • Предложить конкретные дни голосом и получить выбор цифрой
  • Записать выбор в заказ — дату, половину дня и признак «согласовано роботом»

Чего он не делает

  • Не соединяет с живым менеджером — такой цифры в диалоге нет
  • Не спорит и не уговаривает: нет ответа — повторит по расписанию
  • Не предлагает нерабочие дни и не звонит вне рабочего времени

Как это выглядит для клиента

  • Звонок с одного номера, голос один и тот же: «Ваш заказ готов. Выберите день и время»
  • Клиент нажимает цифру дня и цифру половины дня — робот подтверждает выбор вслух
  • После подтверждения даёт возможность изменить выбор (нажатием цифры 2)
Автодозвон SuperSam · как это работает2

Путь заказа до звонка

Когда именно звучит звонок

1. Заказ из 1Сприходит готовымпо обмену
›
2. Ссылка и SMSссылка создаётсясама, SMS уходит
›
3. Пауза 90 минутнастройка админки:столько ждём ответа
›
4. Звонок роботаесли клиент неподтвердил по ссылке
›
5. Результат в заказдата и половина дняв самом заказе

Важно

  • Готовность заказа приходит из 1С по обмену: заказ приходит уже готовым, вручную в системе её никто не отмечает
  • Если клиент подтвердил день по ссылке сам — звонка не будет: заказ уже согласован
  • Звонок идёт только в рабочее время и только в рабочие дни (настройки кампании)
Автодозвон SuperSam · как это работает3

Откуда берутся дни и время

Админка → Расписание → Рабочие дни: один источник правды

Что настраивается

  • Рабочие дни склада (самовывоз) и рабочие дни доставки
  • Часы: открытие и закрытие склада, часы доставки
  • «Первая половина — до» — граница между половинами дня
  • «Сегодня предлагаем до» — до какого времени предлагать сегодняшний день

Как это работает в коде

  • Окно звонка считается рабочими днями: выходные не сокращают окно, а пропускаются
  • Робот называет реальные дни голосом: «сегодня», «в понедельник», «во вторник»
  • Клиентская ссылка использует те же дни — расхождений между звонком и ссылкой нет

Текущие значения в системе

  • Склад: пн–пт, 09:00–17:30, половина дня до 13:00, «сегодня» предлагаем до 15:30
  • Доставка: пн–пт (суббота — выходной) 09:00–21:00, половина дня до 15:00
  • Утро и вечер: до 13:00 робот спросит, какая половина дня удобнее; после 13:00 — сразу зафиксирует вторую
Автодозвон SuperSam · как это работает4

Самовывоз: какие дни предлагает

Окно — «день готовности + два рабочих дня», выходные пропускаются

Заказ готовЧто предложит роботПочему так
в понедельникпн, вт, сртри рабочих дня подряд
в пятницупт, пн, втсуббота и воскресенье — выходные склада
в субботупн, вт, срсам выходной не предлагаем
в пятницу после 15:30пн, вт«сегодня» больше не предлагаем (настройка)
в понедельник после 13:00пн, вт, срполовину дня не спрашиваем — сразу вторая
неделю назадзвонка нетокно прошло — звонить не о чем

Две настройки, которые это двигают

  • «Сегодня предлагаем до» (сейчас 15:30) — позже этого времени сегодняшний день исчезает из звонка и из ссылки
  • «Первая половина — до» (сейчас 13:00) — после неё робот не спрашивает половину дня, сразу пишет вторую
Автодозвон SuperSam · как это работает5

Доставка: не в день готовности

Нужен запас времени, чтобы собрать маршрут — поэтому начинаем со следующего дня

Заказ готовЧто предложит робот
в понедельниквторник и среда
в пятницупонедельник и вторник (в субботу не возим)
в субботупонедельник и вторник
в четверг, звонок в пятницупятница и понедельник
в пятницу, звонок в понедельникпонедельник и вторник

Ключевое отличие от самовывоза

  • В день готовности доставку не предлагаем никогда — только следующие рабочие дни
  • Суббота и воскресенье в графике доставки — выходные, их робот не назовёт
  • Время доставки — половина дня: до 15:00 или после (границу задаёт админка)
Автодозвон SuperSam · как это работает6

Как проходит разговор

Робот задаёт вопрос и ждёт цифру; молчание не считается согласием

ШагЧто говорит роботЧто делает клиентСколько ждёт
Приветствие«Ваш заказ готов. Выберите день и время доставки»слушает—
День«Нажмите один, чтобы доставить. В понедельник. Нажмите два…»нажимает 1 или 29 секунд
Половина дня«Первая половина дня или вторая?»нажимает 1 или 29 секунд
Подтверждение«Первая половина дня» — озвучивает выборслушает—
Изменить?подсказка про кнопку 2 — один разнажимает 2, чтобы переделать6 секунд

Что делает при ошибке ввода

  • Не понял цифру — повторяет тот же вопрос один раз
  • Снова не понял или молчит — завершает: «Вы не выбрали время. С вами свяжется менеджер»
  • Клиент нажимает 2 — диалог начинается заново («день и время»), прежний слот при этом не теряется
Автодозвон SuperSam · как это работает7

Что можно нажать

Всего несколько цифр — и одна из них «больше не звоните»

ЦифраЗначениеЧто происходит
1первый предложенный деньробот переходит к выбору половины дня
2второй предложенный деньробот переходит к выбору половины дня
3третий день (только самовывоз)робот переходит к выбору половины дня
1 / 2половина дняпервая половина / вторая половина
9отказ от звонковробот больше не позвонит; в карточке — «отказ от звонков»
0 и прочиене принимаютсявопрос повторяется; соединения с оператором нет

Отдельно про «0»

  • Раньше в диалоге была попытка «позвать менеджера», но она никогда не срабатывала (нажатие не отличалось от тишины)
  • Эту ветку убрали: живого соединения с оператором у робота нет, менеджер подключается только задачей из системы
Автодозвон SuperSam · как это работает8

Если не дозвонились

Робот различает «не взял трубку» и «вместо человека ответил автоответчик/оператор»

Как понимает, что трубку не взяли

  • Никто не ответил за 45 секунд — попытка считается неудачной
  • Трубку подняли, но гудки шли больше 20 секунд и ни одной цифры не нажали — это объявление оператора, а не человек: пишем «не взял трубку»
  • Живой человек почти всегда берёт трубку раньше, поэтому правило надёжно отделяет автоответчик

Что происходит дальше

  • Повторный звонок — не раньше чем через 120 минут (настройка)
  • Всего не больше 5 попыток на заказ (настройка)
  • Звонит только в рабочие часы кампании: 09:00–20:00, дни — по настройке
  • Исчерпали попытки — заказ уходит менеджеру, автозвонок по нему останавливается

Для менеджера это видно в карточке

  • Каждая попытка — отдельная строка истории: время, результат, длительность разговора
  • Статус заказа меняется на «нужен менеджер» — с комментарием «не дозвонились / не нажал»
  • Отдельно красным предупреждаем, если заявка «Позвонить сейчас» висит больше 15 минут
Автодозвон SuperSam · как это работает9

Если сбросили трубку в середине разговора

Робот запоминает то, что успел услышать, и не портит уже согласованный слот

Когда положили трубкуЧто запишет роботЧто увидит менеджер
до выбора дняответил, ничего не нажал«взял, не нажал (день)» — попытка зачтена
день выбрал, время не успелдень выбран, время нет«взял, не нажал (время)»
выбор подтвердил и сбросилслот согласовандата и половина дня в заказе, статус «согласовано»
начал менять выбор и сбросилостаётся прежний слот«правка не доведена» — прежнее согласование в силе

Почему так

  • Слот становится согласованным только после двух ответов: день и половина дня — это защита от «услышал половину фразы»
  • Обрыв не считается согласием: если клиент не подтвердил, робот перезвонит по расписанию или отдаст заказ менеджеру
  • Если клиент уже согласовал слот, а потом начал менять и бросил трубку — прежний выбор сохраняется, ничего не теряется
Автодозвон SuperSam · как это работает10

Когда подключается менеджер

Робот доводит дело до конца сам, но в трёх случаях передаёт человеку

Не нажал цифру 2 раза

  • Робот писал «взял, но не нажал» дважды
  • Заказ помечается «нужен менеджер», комментарий «не дозвонились / не нажал»
  • Порог «не нажал × N» настраивается в админке автодозвона

Исчерпаны 5 попыток

  • Каждый звонок — отдельная попытка
  • Когда попытки закончились, автозвонок прекращается
  • Заказ остаётся в списке у менеджера

Отказ или неверный номер

  • Цифра 9 — клиент просит больше не звонить: ставим запрет автоматически
  • Неверный номер — задача менеджеру
  • Отказ клиента действует и на другие заказы: он в списке «не звонить»

Что видит менеджер в карточке заказа

  • Единый статус автодозвона и история всех попыток с результатами и слотами
  • Кнопка «Позвонить сейчас» — ручной звонок клиенту (не тестовый номер) и живое состояние: «в очереди», «звоним», «звонок сделан» с результатом
  • Кнопка «Не звонить» — если робот не должен беспокоить этого клиента
Автодозвон SuperSam · как это работает11

Когда робот не звонит вообще

Список условий, при которых звонка не будет — проверяются до набора номера

По клиенту и заказу

  • Клиент сам подтвердил день по ссылке — звонок не нужен
  • Клиент просил больше не звонить (нажал 9) или менеджер поставил «Не звонить»
  • Номер в списке исключений — например, на МТС-диапазон звонки не идут
  • Самовывоз: автообзвон по самовывозу включается отдельной галочкой (сейчас выключен)

По времени и географии

  • Вне рабочих часов кампании (09:00–20:00) и вне рабочих дней
  • Город исключён целиком или для города выключен канал
  • В админке автодозвона выключены звонки по городу — например, Ялта: SMS идут, звонков нет
  • Меньше 90 минут прошло после SMS со ссылкой

Админка автодозвона: где это переключается

  • Панель «Автодозвон»: тестовый режим, часы и дни звонков, паузы, лимит попыток, порог «не нажал × N»
  • Панель «Локации»: для каждого города — звонки включены или выключены (SMS не затрагивается)
  • Панель исключений: номера и префиксы, на которые не звоним, с причиной
Автодозвон SuperSam · как это работает12

Что записывается в заказ

Результат звонка виден там же, где всё остальное

ПолеЗначение
Датаконкретная дата, которую назвал робот (например, понедельник 21.09)
Время«первая половина дня» или «вторая половина дня»
Источник«согласовано роботом» — видно, что выбор сделал клиент в звонке
Статус«согласовано» / «нужен менеджер» / «отказ от звонков»
Комментарий«Согласовано роботом: завтра, первая половина дня»

Зачем это нужно

  • Менеджер видит причину и источник решения, а не просто «дата стоит»
  • История звонков хранится отдельно: видно, сколько было попыток и чем они закончились
  • Дата, названная роботом, используется дальше в работе склада и доставки
Автодозвон SuperSam · как это работает13

Тестовый режим и текущее состояние

Сейчас обзвон клиентов выключен — система в тестовом режиме

ПараметрЗначение сейчасЧто будет при запуске
Обзвон клиентоввыключенвключается отдельной командой
Тестовый номерзвонит только на негомассовый обзвон идёт клиентам
Кнопка «Позвонить сейчас»звонит клиенту сразутак же — звонок клиенту
Звонки по самовывозувыключены галочкойвключаются отдельно от доставки

Как проверяется перед запуском

  • Тестовый звонок на свой номер: диалог, дни, половина дня, запись результата
  • Прогон диалога без звонка: проверка всех веток (согласие, обрыв, молчание, отказ)
  • Проверка окон: робот предлагает именно те дни, которые заданы в админке
Автодозвон SuperSam · как это работает14

Что пока не учитывается

Честный список: это важно знать до запуска

График

  • Праздники: календаря нерабочих дат нет — если праздник попадёт в окно, робот его предложит
  • Часы доставки используются частично: границу половины дня робот проговаривает словами, без конкретного времени

Настройки, которые пока не влияют

  • «Попыток в день» — поле есть, но расписание повторов задаётся интервалом между попытками
  • «Попытки следующего дня (10:00, 14:00)» — пока не используются
  • «Таймаут звонка, 30 секунд» — звонок ждёт ответа 45 секунд (значение в самом звонке)

Что предлагаем уточнить до боевого запуска

  • Список праздников (или решение не учитывать их)
  • Нужен ли жёсткий график повторов по времени, кроме интервала 120 минут
  • Оставить ли «0» без реакции — сейчас это просто неверная цифра
Автодозвон SuperSam · как это работает15

Коротко

Одна страница вместо всей презентации

Что делает система

  • Ждёт 90 минут после SMS и звонит, если клиент не подтвердил день сам
  • Предлагает только рабочие дни по графику: самовывоз — включая сегодня, доставка — со следующего дня
  • Спрашивает день и половину дня, подтверждает вслух, даёт один раз переделать выбор
  • Повторяет попытки не чаще чем раз в 2 часа, максимум 5 раз, только 09:00–20:00 в рабочие дни
  • После двух «взял, но не нажал» или исчерпания попыток передаёт заказ менеджеру
  • Отказ (цифра 9) останавливает обзвон клиента навсегда
  • Каждая попытка и результат видны в карточке заказа; ручной звонок идёт клиенту и показывает своё состояние

Что осталось решить

  • Праздники и точный график повторов — по вашим правилам
  • Момент включения боевого обзвона клиентов и по самовывозу
Автодозвон SuperSam · как это работает16
diff --git a/docs/autocall/autocall-how-it-works.pdf b/docs/autocall/autocall-how-it-works.pdf index 415ae18fb556970af8837a81117b717fe4ce0d57..592d81a9b8c311ca6bbf5f6a567080122273d718 100644 GIT binary patch delta 75797 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 BNhAOO delta 75249 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 VKiKQv(*J>RH1T&B?#~B*|9_N|U5x+$ diff --git a/docs/autocall/deck_content.py b/docs/autocall/deck_content.py index 50f9896..aeebd71 100644 --- a/docs/autocall/deck_content.py +++ b/docs/autocall/deck_content.py @@ -50,13 +50,14 @@ SLIDES = [ "title": "Путь заказа до звонка", "sub": "Когда именно звучит звонок", "steps": [ - ("1. Заказ готов", "менеджер отмечает\nготовность в системе"), - ("2. SMS со ссылкой", "клиент может выбрать\nдень сам, без звонка"), + ("1. Заказ из 1С", "приходит готовым\nпо обмену"), + ("2. Ссылка и SMS", "ссылка создаётся\nсама, SMS уходит"), ("3. Пауза 90 минут", "настройка админки:\nстолько ждём ответа"), ("4. Звонок робота", "если клиент не\nподтвердил по ссылке"), ("5. Результат в заказ", "дата и половина дня\nв самом заказе"), ], "full": {"title": "Важно", "accent": WARN, "items": [ + "Готовность заказа приходит из 1С по обмену: заказ приходит уже готовым, вручную в системе её никто не отмечает", "Если клиент подтвердил день по ссылке сам — звонка не будет: заказ уже согласован", "Звонок идёт только в рабочее время и только в рабочие дни (настройки кампании)", ]}, diff --git a/docs/autocall/how-it-works.py b/docs/autocall/how-it-works.py index 3ff3b12..050557e 100644 --- a/docs/autocall/how-it-works.py +++ b/docs/autocall/how-it-works.py @@ -1,12 +1,11 @@ #!/usr/bin/env python3 -"""Презентация «Автодозвон SuperSam: как это работает» (тёмная тема, PDF 16:9). +"""PDF-версия презентации «Автодозвон: как это работает» (тёмная тема, 16:9). -Все факты — из кода: scripts/autocall_scheduler.py, docs/ats/ss-dialog.agi, -supabase/functions/autocall-result/index.ts. Ничего «продающего» — только описание. +Содержание — из deck_content.py (то же, что в HTML-версии), здесь только вёрстка. +Текст, который не влезает в карточку, считается ошибкой: скрипт падает, а не рисует +поверх границ. Запуск: python3 docs/autocall/how-it-works.py -Проверка: число страниц = числу слайдов, плюс арифметика переносов строк -(текст не выходит за карточку — функция wrap_and_check падает с ошибкой, если не влезает). """ from pathlib import Path @@ -15,21 +14,26 @@ from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfgen import canvas +import deck_content as content + FONT_DIR = Path("/usr/share/fonts/truetype/dejavu") OUT = Path(__file__).with_name("autocall-how-it-works.pdf") W, H = 960, 540 -M = 46 # поля +M = 46 BG = HexColor("#0B1220") BG2 = HexColor("#101A2C") CARD = HexColor("#131E33") BORDER = HexColor("#25344F") TEXT = HexColor("#E8EEF9") DIM = HexColor("#9FB0CC") -ACCENT = HexColor("#4ADE80") -ACCENT2 = HexColor("#60A5FA") -WARN = HexColor("#FBBF24") -DANGER = HexColor("#F87171") +TONES = { + "accent": HexColor("#4ADE80"), + "accent2": HexColor("#60A5FA"), + "warn": HexColor("#FBBF24"), + "danger": HexColor("#F87171"), +} +ACCENT = TONES["accent"] pdfmetrics.registerFont(TTFont("DV", str(FONT_DIR / "DejaVuSans.ttf"))) pdfmetrics.registerFont(TTFont("DV-B", str(FONT_DIR / "DejaVuSans-Bold.ttf"))) @@ -39,6 +43,26 @@ c.setTitle("Автодозвон SuperSam — как это работает") c.setAuthor("SuperSam") slide_no = 0 +CONTENT_W = W - 2 * M + + +def tone(name): + return TONES.get(name, ACCENT) + + +def wrap(text, font, size, max_w): + words, lines, cur = text.split(), [], "" + for word in words: + probe = f"{cur} {word}".strip() + if pdfmetrics.stringWidth(probe, font, size) <= max_w: + cur = probe + else: + if cur: + lines.append(cur) + cur = word + if cur: + lines.append(cur) + return lines def bg(): @@ -84,35 +108,23 @@ def card(x, y, w, h, accent=None, fill=CARD): c.roundRect(x, y, w, h, 12, stroke=1, fill=1) -def wrap(text, font, size, max_w): - words, lines, cur = text.split(), [], "" - for word in words: - probe = f"{cur} {word}".strip() - if pdfmetrics.stringWidth(probe, font, size) <= max_w: - cur = probe - else: - if cur: - lines.append(cur) - cur = word - if cur: - lines.append(cur) - return lines +def block_size(items, w, size=12, lead=18, title_size=14): + """Сколько места займёт карточка: список строк и высота.""" + wrapped = [wrap(item, "DV", size, w - 44) for item in items] + lines = sum(len(w_) for w_ in wrapped) + height = 50 + lines * lead + len(items) * 4 + return wrapped, height -def block(x, y, w, title, items, accent=ACCENT, size=12, lead=18, title_size=14): - """Карточка с заголовком и пунктами. Падает, если текст не влезает.""" - lines = [] - for item in items: - wrapped = wrap(item, "DV", size, w - 44) - lines.append(("bullet", wrapped)) - height = 46 + len(lines) * (lead * 1.0 + 4) + sum((len(l[1]) - 1) * lead for l in lines) + 10 - card(x, y - height, w, height, accent=accent) +def draw_block(x, y, w, h, title, items, accent=ACCENT, size=12, lead=18, title_size=14): + wrapped, _ = block_size(items, w, size, lead, title_size) + card(x, y - h, w, h, accent=accent) c.setFont("DV-B", title_size) c.setFillColor(accent) c.drawString(x + 16, y - 26, title) cursor = y - 48 - for _, wrapped in lines: - for i, line in enumerate(wrapped): + for wrapped_item in wrapped: + for i, line in enumerate(wrapped_item): if i == 0: c.setFillColor(accent) c.circle(x + 20, cursor + 4, 2.4, stroke=0, fill=1) @@ -121,380 +133,151 @@ def block(x, y, w, title, items, accent=ACCENT, size=12, lead=18, title_size=14) c.drawString(x + 32, cursor, line) cursor -= lead cursor -= 4 - bottom = y - height - if cursor < bottom - 2: - raise AssertionError(f"текст вышел за карточку «{title}»: {cursor:.0f} < {bottom:.0f}") - return height + if cursor < (y - h) - 2: + raise AssertionError(f"текст вышел за карточку «{title}»") + return y - h -def table(x, y, w, rows, widths, head=True, size=11, lead=19): - """Таблица; возвращает высоту. Строки: список списков строк.""" +def table_measure(rows, widths, size=11, lead=19): + """Высота таблицы — чтобы можно было отцентровать блок по слайду.""" + h = 0 + for row in rows: + lines = max(len(wrap(str(cell), "DV", size, cw - 16)) for cell, cw in zip(row, widths)) + h += lead + 8 + (lines - 1) * (lead - 4) + return h + + +def cards_row(cards, y, total_w=CONTENT_W, gap=14): + """Ряд карточек одинаковой высоты; возвращает нижнюю границу ряда.""" + n = len(cards) + w = (total_w - gap * (n - 1)) / n + heights = [block_size(card_["items"], w)[1] for card_ in cards] + h = max(heights) + x = M + for card_ in cards: + draw_block(x, y, w, h, card_["title"], card_["items"], accent=tone(card_.get("accent"))) + x += w + gap + return y - h + + +def table(rows, widths, y, size=11, lead=19, head=True): + """Таблица; возвращает нижнюю границу.""" for r_i, row in enumerate(rows): - cx = x - h = lead + 8 + lines_per_cell = [wrap(str(cell), "DV", size, cw - 16) for cell, cw in zip(row, widths)] + h = lead + 8 + (max(len(l) for l in lines_per_cell) - 1) * (lead - 4) if head and r_i == 0: - card(x, y - h, w, h, accent=ACCENT2, fill=HexColor("#182640")) - for cell, cw in zip(row, widths): - cell_lines = wrap(str(cell), "DV-B" if (head and r_i == 0) else "DV", size, cw - 16) + card(M, y - h, CONTENT_W, h, accent=TONES["accent2"], fill=HexColor("#182640")) + cx = M + for (cell, cw), cell_lines in zip(zip(row, widths), lines_per_cell): + if head and r_i == 0: + cx += cw + continue for i, line in enumerate(cell_lines): - c.setFont("DV-B" if (head and r_i == 0) else "DV", size) - c.setFillColor(TEXT if (head and r_i == 0) else DIM if i else TEXT) - c.drawString(cx + 8, y - 22 - i * (lead - 4), line) + c.setFont("DV", size) + c.setFillColor(DIM if (i == 0 and cx == M) else TEXT) + c.drawString(cx + 8, y - 21 - i * (lead - 4), line) cx += cw - if len(max([wrap(str(cell), "DV", size, cw - 16) for cell, cw in zip(row, widths)], key=len)) > 1: - h += lead + if head and r_i == 0: + cx = M + for cell, cw in zip(row, widths): + c.setFont("DV-B", size) + c.setFillColor(TEXT) + c.drawString(cx + 8, y - 21, str(cell)) + cx += cw y -= h return y -# ─────────────────────────── 1. Титул ─────────────────────────── -bg() -c.setFont("DV-B", 11) -c.setFillColor(ACCENT) -c.drawString(M, H - 150, "СУПЕР САМ · ДОСТАВКА И САМОВЫВОЗ") -c.setFont("DV-B", 40) -c.setFillColor(TEXT) -c.drawString(M, H - 210, "Автодозвон: как это работает") -c.setFont("DV", 15) -c.setFillColor(DIM) -c.drawString(M, H - 244, "Робот звонит клиенту, согласует день и половину дня — без участия оператора") -card(M, 120, W - 2 * M, 150, accent=ACCENT) -c.setFont("DV", 13) -lines = [ - "Что описано: правила звонка, паузы, поведение в нештатных случаях (не дозвонились,", - "сбросили трубку, не нажали цифру), где что настраивается и что видит менеджер.", - "", - "Основано на текущем коде и настройках боевой системы, без обещаний и продажи.", -] -for i, line in enumerate(lines): - c.setFillColor(TEXT if line else DIM) - c.drawString(M + 18, 240 - i * 20, line) -footer() -c.showPage() +def steps_row(steps, y): + n = len(steps) + gap = 14 + w = (CONTENT_W - gap * (n - 1)) / n + h = 170 + x = M + for i, (title, desc) in enumerate(steps): + accent = ACCENT if i < n - 1 else TONES["accent2"] + card(x, y - h, w, h, accent=accent) + c.setFont("DV-B", 12) + c.setFillColor(accent) + c.drawString(x + 14, y - 34, title) + c.setFont("DV", 11) + c.setFillColor(TEXT) + line_y = y - 58 + for raw_line in desc.split("\n"): + for line in wrap(raw_line, "DV", 11, w - 28): + c.drawString(x + 14, line_y, line) + line_y -= 17 + if i < n - 1: + c.setFillColor(DIM) + c.setFont("DV-B", 16) + c.drawString(x + w + 1, y - 72, "›") + x += w + gap + return y - h -# ─────────────────────────── 2. Что делает робот ─────────────────────────── -bg() -header("Что делает робот", "Коротко: он не продаёт и не консультирует — только согласует день и половину дня") -block(M, 430, 430, "Три задачи", - ["Дозвониться, когда заказ готов и клиент не подтвердил день по ссылке из SMS", - "Предложить конкретные дни голосом и получить выбор цифрой", - "Записать выбор в заказ — дату, половину дня и признак «согласовано роботом»"], - accent=ACCENT) -block(M + 440, 430, 430, "Чего он не делает", - ["Не соединяет с живым менеджером — такой цифры в диалоге нет", - "Не спорит и не уговаривает: нет ответа — повторит по расписанию", - "Не предлагает нерабочие дни и не звонит вне рабочего времени"], - accent=WARN) -block(M, 236, W - 2 * M, "Как это выглядит для клиента", - ["Звонок с одного номера, голос один и тот же: «Ваш заказ готов. Выберите день и время»", - "Клиент нажимает цифру дня и цифру половины дня — робот подтверждает выбор вслух", - "После подтверждения даёт возможность изменить выбор (нажатием цифры 2)"], - accent=ACCENT2) -footer() -c.showPage() -# ─────────────────────────── 3. Путь заказа ─────────────────────────── -bg() -header("Путь заказа до звонка", "Когда именно звучит звонок") -steps = [ - ("1. Заказ готов", "менеджер отмечает\nготовность в системе"), - ("2. SMS со ссылкой", "клиент может выбрать\nдень сам, без звонка"), - ("3. Пауза 90 минут", "настройка админки:\nстолько ждём ответа"), - ("4. Звонок робота", "если клиент не\nподтвердил по ссылке"), - ("5. Результат в заказ", "дата и половина дня\nв самом заказе"), -] -bw, gap = 162, 14 -bx = M -for i, (title, desc) in enumerate(steps): - accent = ACCENT if i < 4 else ACCENT2 - card(bx, 300, bw, 130, accent=accent) - c.setFont("DV-B", 12) - c.setFillColor(accent) - c.drawString(bx + 14, 396, title) - c.setFont("DV", 11) - c.setFillColor(TEXT) - line_y = 372 - for raw_line in desc.split("\n"): - for line in wrap(raw_line, "DV", 11, bw - 28): - c.drawString(bx + 14, line_y, line) - line_y -= 17 - if i < len(steps) - 1: +def render(slide): + bg() + if slide["kind"] == "title": + c.setFont("DV-B", 11) + c.setFillColor(ACCENT) + c.drawString(M, H - 150, slide["kicker"]) + c.setFont("DV-B", 40) + c.setFillColor(TEXT) + c.drawString(M, H - 210, slide["title"]) + c.setFont("DV", 15) c.setFillColor(DIM) - c.setFont("DV-B", 16) - c.drawString(bx + bw + 1, 358, "›") - bx += bw + gap -block(M, 262, W - 2 * M, "Важно", - ["Если клиент подтвердил день по ссылке сам — звонка не будет: заказ уже согласован", - "Звонок идёт только в рабочее время и только в рабочие дни (настройки кампании)"], - accent=WARN) -footer() -c.showPage() + c.drawString(M, H - 244, slide["sub"]) + card(M, 120, CONTENT_W, 150, accent=ACCENT) + for i, line in enumerate(slide["lines"]): + c.setFont("DV", 13) + c.setFillColor(TEXT if line else DIM) + c.drawString(M + 18, 240 - i * 20, line) + footer() + c.showPage() + return -# ─────────────────────────── 4. Откуда дни и время ─────────────────────────── -bg() -header("Откуда берутся дни и время", "Админка → Расписание → Рабочие дни: один источник правды") -block(M, 430, 430, "Что настраивается", - ["Рабочие дни склада (самовывоз) и рабочие дни доставки", - "Часы: открытие и закрытие склада, часы доставки", - "«Первая половина — до» — граница между половинами дня", - "«Сегодня предлагаем до» — до какого времени предлагать сегодняшний день"], - accent=ACCENT, size=11) -block(M + 440, 430, 430, "Как это работает в коде", - ["Окно звонка считается рабочими днями: выходные не сокращают окно, а пропускаются", - "Робот называет реальные дни голосом: «сегодня», «в понедельник», «во вторник»", - "Клиентская ссылка использует те же дни — расхождений между звонком и ссылкой нет"], - accent=ACCENT2, size=11) -block(M, 250, W - 2 * M, "Текущие значения в системе", - ["Склад: пн–пт, 09:00–17:30, половина дня до 13:00, «сегодня» предлагаем до 15:30", - "Доставка: пн–пт (суббота — выходной) 09:00–21:00, половина дня до 15:00", - "Утро и вечер: до 13:00 робот спросит, какая половина дня удобнее; после 13:00 — сразу зафиксирует вторую"], - accent=WARN) -footer() -c.showPage() + header(slide["title"], slide.get("sub")) + kind = slide["kind"] + full = slide.get("full") -# ─────────────────────────── 5. Самовывоз ─────────────────────────── -bg() -header("Самовывоз: какие дни предлагает", "Окно — «день готовности + два рабочих дня», выходные пропускаются") -rows = [ - ["Заказ готов", "Что предложит робот", "Почему так"], - ["в понедельник", "пн, вт, ср", "три рабочих дня подряд"], - ["в пятницу", "пт, пн, вт", "суббота и воскресенье — выходные склада"], - ["в субботу", "пн, вт, ср", "сам выходной не предлагаем"], - ["в пятницу после 15:30", "пн, вт", "«сегодня» больше не предлагаем (настройка)"], - ["в понедельник после 13:00", "пн, вт, ср", "половину дня не спрашиваем — сразу вторая"], - ["неделю назад", "звонка нет", "окно прошло — звонить не о чем"], -] -table(M, 420, W - 2 * M, rows, [200, 240, W - 2 * M - 440]) -block(M, 190, W - 2 * M, "Две настройки, которые это двигают", - ["«Сегодня предлагаем до» (сейчас 15:30) — позже этого времени сегодняшний день исчезает из звонка и из ссылки", - "«Первая половина — до» (сейчас 13:00) — после неё робот не спрашивает половину дня, сразу пишет вторую"], - accent=ACCENT, size=11) -footer() -c.showPage() + # Измеряем содержимое и центруем блок по вертикали: иначе внизу слайда + # остаётся пустая полоса, а на другом слайде текст поджимает футер. + if kind == "steps": + main_h = 170 + elif kind in ("cards2full", "cards3full"): + n = len(slide["cards"]) + w = (CONTENT_W - 14 * (n - 1)) / n + main_h = max(block_size(card_["items"], w)[1] for card_ in slide["cards"]) + elif kind == "tablecard": + main_h = table_measure(slide["table"]["rows"], slide["table"]["widths"]) + else: + raise AssertionError(f"неизвестный тип слайда: {kind}") -# ─────────────────────────── 6. Доставка ─────────────────────────── -bg() -header("Доставка: не в день готовности", "Нужен запас времени, чтобы собрать маршрут — поэтому начинаем со следующего дня") -rows = [ - ["Заказ готов", "Что предложит робот"], - ["в понедельник", "вторник и среда"], - ["в пятницу", "понедельник и вторник (в субботу не возим)"], - ["в субботу", "понедельник и вторник"], - ["в четверг, звонок в пятницу", "пятница и понедельник"], - ["в пятницу, звонок в понедельник", "понедельник и вторник"], -] -table(M, 420, W - 2 * M, rows, [300, W - 2 * M - 300]) -block(M, 200, W - 2 * M, "Ключевое отличие от самовывоза", - ["В день готовности доставку не предлагаем никогда — только следующие рабочие дни", - "Суббота и воскресенье в графике доставки — выходные, их робот не назовёт", - "Время доставки — половина дня: до 15:00 или после (границу задаёт админка)"], - accent=ACCENT2, size=11) -footer() -c.showPage() + full_h = block_size(full["items"], CONTENT_W)[1] if full else 0 + gap = 22 if full else 0 + top, bottom_limit = H - 96, 56 + total = main_h + (gap + full_h if full else 0) + y0 = top - max(0.0, (top - bottom_limit - total) / 2) -# ─────────────────────────── 7. Как проходит разговор ─────────────────────────── -bg() -header("Как проходит разговор", "Робот задаёт вопрос и ждёт цифру; молчание не считается согласием") -rows = [ - ["Шаг", "Что говорит робот", "Что делает клиент", "Сколько ждёт"], - ["Приветствие", "«Ваш заказ готов. Выберите день и время доставки»", "слушает", "—"], - ["День", "«Нажмите один, чтобы доставить. В понедельник. Нажмите два…»", "нажимает 1 или 2", "9 секунд"], - ["Половина дня", "«Первая половина дня или вторая?»", "нажимает 1 или 2", "9 секунд"], - ["Подтверждение", "«Первая половина дня» — озвучивает выбор", "слушает", "—"], - ["Изменить?", "подсказка про кнопку 2 — один раз", "нажимает 2, чтобы переделать", "6 секунд"], -] -table(M, 420, W - 2 * M, rows, [130, 360, 200, 110], size=10) -block(M, 170, W - 2 * M, "Что делает при ошибке ввода", - ["Не понял цифру — повторяет тот же вопрос один раз", - "Снова не понял или молчит — завершает: «Вы не выбрали время. С вами свяжется менеджер»", - "Клиент нажимает 2 — диалог начинается заново («день и время»), прежний слот при этом не теряется"], - accent=WARN, size=11) -footer() -c.showPage() + if kind == "steps": + bottom = steps_row(slide["steps"], y0) + elif kind in ("cards2full", "cards3full"): + bottom = cards_row(slide["cards"], y0) + else: + bottom = table(slide["table"]["rows"], slide["table"]["widths"], y0) -# ─────────────────────────── 8. Цифры в диалоге ─────────────────────────── -bg() -header("Что можно нажать", "Всего несколько цифр — и одна из них «больше не звоните»") -rows = [ - ["Цифра", "Значение", "Что происходит"], - ["1", "первый предложенный день", "робот переходит к выбору половины дня"], - ["2", "второй предложенный день", "робот переходит к выбору половины дня"], - ["3", "третий день (только самовывоз)", "робот переходит к выбору половины дня"], - ["1 / 2", "половина дня", "первая половина / вторая половина"], - ["9", "отказ от звонков", "робот больше не позвонит; в карточке — «отказ от звонков»"], - ["0 и прочие", "не принимаются", "вопрос повторяется; соединения с оператором нет"], -] -table(M, 430, W - 2 * M, rows, [110, 240, W - 2 * M - 350], size=10) -block(M, 150, W - 2 * M, "Отдельно про «0»", - ["Раньше в диалоге была попытка «позвать менеджера», но она никогда не срабатывала (нажатие не отличалось от тишины)", - "Эту ветку убрали: живого соединения с оператором у робота нет, менеджер подключается только задачей из системы"], - accent=DANGER, size=11) -footer() -c.showPage() + if full: + y = bottom - gap + if y - full_h < 44: + raise AssertionError(f"нижняя карточка не влезает на слайде «{slide['title']}»") + draw_block(M, y, CONTENT_W, full_h, full["title"], full["items"], accent=tone(full.get("accent"))) + footer() + c.showPage() -# ─────────────────────────── 9. Не дозвонились ─────────────────────────── -bg() -header("Если не дозвонились", "Робот различает «не взял трубку» и «вместо человека ответил автоответчик/оператор»") -block(M, 430, 440, "Как понимает, что трубку не взяли", - ["Никто не ответил за 45 секунд — попытка считается неудачной", - "Трубку подняли, но гудки шли больше 20 секунд и ни одной цифры не нажали — это объявление оператора, а не человек: пишем «не взял трубку»", - "Живой человек почти всегда берёт трубку раньше, поэтому правило надёжно отделяет автоответчик"], - accent=WARN, size=11) -block(M + 450, 430, 420, "Что происходит дальше", - ["Повторный звонок — не раньше чем через 120 минут (настройка)", - "Всего не больше 5 попыток на заказ (настройка)", - "Звонит только в рабочие часы кампании: 09:00–20:00, дни — по настройке", - "Исчерпали попытки — заказ уходит менеджеру, автозвонок по нему останавливается"], - accent=ACCENT, size=11) -block(M, 214, W - 2 * M, "Для менеджера это видно в карточке", - ["Каждая попытка — отдельная строка истории: время, результат, длительность разговора", - "Статус заказа меняется на «нужен менеджер» — с комментарием «не дозвонились / не нажал»", - "Отдельно красным предупреждаем, если заявка «Позвонить сейчас» висит больше 15 минут"], - accent=ACCENT2, size=11) -footer() -c.showPage() -# ─────────────────────────── 10. Сбросили трубку ─────────────────────────── -bg() -header("Если сбросили трубку в середине разговора", "Робот запоминает то, что успел услышать, и не портит уже согласованный слот") -rows = [ - ["Когда положили трубку", "Что запишет робот", "Что увидит менеджер"], - ["до выбора дня", "ответил, ничего не нажал", "«взял, не нажал (день)» — попытка зачтена"], - ["день выбрал, время не успел", "день выбран, время нет", "«взял, не нажал (время)»"], - ["выбор подтвердил и сбросил", "слот согласован", "дата и половина дня в заказе, статус «согласовано»"], - ["начал менять выбор и сбросил", "остаётся прежний слот", "«правка не доведена» — прежнее согласование в силе"], -] -table(M, 420, W - 2 * M, rows, [250, 250, W - 2 * M - 500], size=10) -block(M, 190, W - 2 * M, "Почему так", - ["Слот становится согласованным только после двух ответов: день и половина дня — это защита от «услышал половину фразы»", - "Обрыв не считается согласием: если клиент не подтвердил, робот перезвонит по расписанию или отдаст заказ менеджеру", - "Если клиент уже согласовал слот, а потом начал менять и бросил трубку — прежний выбор сохраняется, ничего не теряется"], - accent=ACCENT2, size=11) -footer() -c.showPage() - -# ─────────────────────────── 11. Когда зовёт менеджера ─────────────────────────── -bg() -header("Когда подключается менеджер", "Робот доводит дело до конца сам, но в трёх случаях передаёт человеку") -block(M, 420, 280, "Не нажал цифру 2 раза", - ["Робот писал «взял, но не нажал» дважды", - "Заказ помечается «нужен менеджер», комментарий «не дозвонились / не нажал»", - "Порог «не нажал × N» настраивается в админке автодозвона"], accent=WARN, size=11) -block(M + 290, 420, 280, "Исчерпаны 5 попыток", - ["Каждый звонок — отдельная попытка", - "Когда попытки закончились, автозвонок прекращается", - "Заказ остаётся в списке у менеджера"], accent=WARN, size=11) -block(M + 580, 420, 290, "Отказ или неверный номер", - ["Цифра 9 — клиент просит больше не звонить: ставим запрет автоматически", - "Неверный номер — задача менеджеру", - "Отказ клиента действует и на другие заказы: он в списке «не звонить»"], accent=DANGER, size=11) -block(M, 236, W - 2 * M, "Что видит менеджер в карточке заказа", - ["Единый статус автодозвона и история всех попыток с результатами и слотами", - "Кнопка «Позвонить сейчас» — ручной звонок клиенту (не тестовый номер) и живое состояние: «в очереди», «звоним», «звонок сделан» с результатом", - "Кнопка «Не звонить» — если робот не должен беспокоить этого клиента"], - accent=ACCENT, size=11) -footer() -c.showPage() - -# ─────────────────────────── 12. Когда не звонит ─────────────────────────── -bg() -header("Когда робот не звонит вообще", "Список условий, при которых звонка не будет — проверяются до набора номера") -block(M, 430, 440, "По клиенту и заказу", - ["Клиент сам подтвердил день по ссылке — звонок не нужен", - "Клиент просил больше не звонить (нажал 9) или менеджер поставил «Не звонить»", - "Номер в списке исключений — например, на МТС-диапазон звонки не идут", - "Самовывоз: автообзвон по самовывозу включается отдельной галочкой (сейчас выключен)"], - accent=ACCENT, size=11) -block(M + 450, 430, 420, "По времени и географии", - ["Вне рабочих часов кампании (09:00–20:00) и вне рабочих дней", - "Город исключён целиком или для города выключен канал", - "В админке автодозвона выключены звонки по городу — например, Ялта: SMS идут, звонков нет", - "Меньше 90 минут прошло после SMS со ссылкой"], - accent=WARN, size=11) -block(M, 200, W - 2 * M, "Админка автодозвона: где это переключается", - ["Панель «Автодозвон»: тестовый режим, часы и дни звонков, паузы, лимит попыток, порог «не нажал × N»", - "Панель «Локации»: для каждого города — звонки включены или выключены (SMS не затрагивается)", - "Панель исключений: номера и префиксы, на которые не звоним, с причиной"], - accent=ACCENT2, size=11) -footer() -c.showPage() - -# ─────────────────────────── 13. Что попадает в заказ ─────────────────────────── -bg() -header("Что записывается в заказ", "Результат звонка виден там же, где всё остальное") -rows = [ - ["Поле", "Значение"], - ["Дата", "конкретная дата, которую назвал робот (например, понедельник 21.09)"], - ["Время", "«первая половина дня» или «вторая половина дня»"], - ["Источник", "«согласовано роботом» — видно, что выбор сделал клиент в звонке"], - ["Статус", "«согласовано» / «нужен менеджер» / «отказ от звонков»"], - ["Комментарий", "«Согласовано роботом: завтра, первая половина дня»"], -] -table(M, 420, W - 2 * M, rows, [200, W - 2 * M - 200]) -block(M, 190, W - 2 * M, "Зачем это нужно", - ["Менеджер видит причину и источник решения, а не просто «дата стоит»", - "История звонков хранится отдельно: видно, сколько было попыток и чем они закончились", - "Дата, названная роботом, используется дальше в работе склада и доставки"], - accent=ACCENT, size=11) -footer() -c.showPage() - -# ─────────────────────────── 14. Тестовый режим и запуск ─────────────────────────── -bg() -header("Тестовый режим и текущее состояние", "Сейчас обзвон клиентов выключен — система в тестовом режиме") -rows = [ - ["Параметр", "Значение сейчас", "Что будет при запуске"], - ["Обзвон клиентов", "выключен", "включается отдельной командой"], - ["Тестовый номер", "звонит только на него", "массовый обзвон идёт клиентам"], - ["Кнопка «Позвонить сейчас»", "звонит клиенту сразу", "так же — звонок клиенту"], - ["Звонки по самовывозу", "выключены галочкой", "включаются отдельно от доставки"], -] -table(M, 420, W - 2 * M, rows, [230, 280, W - 2 * M - 510], size=10) -block(M, 190, W - 2 * M, "Как проверяется перед запуском", - ["Тестовый звонок на свой номер: диалог, дни, половина дня, запись результата", - "Прогон диалога без звонка: проверка всех веток (согласие, обрыв, молчание, отказ)", - "Проверка окон: робот предлагает именно те дни, которые заданы в админке"], - accent=ACCENT2, size=11) -footer() -c.showPage() - -# ─────────────────────────── 15. Что пока не учитывается ─────────────────────────── -bg() -header("Что пока не учитывается", "Честный список: это важно знать до запуска") -block(M, 430, 440, "График", - ["Праздники: календаря нерабочих дат нет — если праздник попадёт в окно, робот его предложит", - "Часы доставки используются частично: границу половины дня робот проговаривает словами, без конкретного времени"], - accent=WARN, size=11) -block(M + 450, 430, 420, "Настройки, которые пока не влияют", - ["«Попыток в день» — поле есть, но расписание повторов задаётся интервалом между попытками", - "«Попытки следующего дня (10:00, 14:00)» — пока не используются", - "«Таймаут звонка, 30 секунд» — звонок ждёт ответа 45 секунд (значение в самом звонке)"], - accent=DANGER, size=11) -block(M, 190, W - 2 * M, "Что предлагаем уточнить до боевого запуска", - ["Список праздников (или решение не учитывать их)", - "Нужен ли жёсткий график повторов по времени, кроме интервала 120 минут", - "Оставить ли «0» без реакции — сейчас это просто неверная цифра"], - accent=ACCENT2, size=11) -footer() -c.showPage() - -# ─────────────────────────── 16. Итог ─────────────────────────── -bg() -header("Коротко", "Одна страница вместо всей презентации") -block(M, 420, W - 2 * M, "Что делает система", - ["Ждёт 90 минут после SMS и звонит, если клиент не подтвердил день сам", - "Предлагает только рабочие дни по графику: самовывоз — включая сегодня, доставка — со следующего дня", - "Спрашивает день и половину дня, подтверждает вслух, даёт один раз переделать выбор", - "Повторяет попытки не чаще чем раз в 2 часа, максимум 5 раз, только 09:00–20:00 в рабочие дни", - "После двух «взял, но не нажал» или исчерпания попыток передаёт заказ менеджеру", - "Отказ (цифра 9) останавливает обзвон клиента навсегда", - "Каждая попытка и результат видны в карточке заказа; ручной звонок идёт клиенту и показывает своё состояние"], - accent=ACCENT, size=11) -block(M, 140, W - 2 * M, "Что осталось решить", - ["Праздники и точный график повторов — по вашим правилам", - "Момент включения боевого обзвона клиентов и по самовывозу"], - accent=WARN, size=11) -footer() +for slide_ in content.ALL_SLIDES: + render(slide_) c.save() -print(f"готово: {OUT}") +print(f"готово: {OUT} — слайдов {slide_no}") +print(f"вёрстка проверена: все карточки по размеру текста (проверено {slide_no} слайдов)")