Кейсы 6 мин чтения

Сайт и шесть пультов собственника с закрытым пробным кабинетом

Компания по автоматизации продаёт руководителям «пульт собственника» и хотела показывать его без открытого демо. Я собрал для неё сайт, закрытый кабинет с ручной выдачей пробного доступа, шесть отраслевых пультов на демоданных и бота первой линии. С 28 октября всё работает на домене заказчика, а к ноябрю доработано по ТЗ версии 1.2: админка с воронкой заявок и командой, сервер в Москве.

кейсдашборд руководителяличный кабинетTelegram-ботFastAPI

Коротко (TL;DR)

  • Компания по автоматизации продаёт руководителям «пульт собственника»: один экран, где видно продажи, деньги, маркетинг и работу команды. Я собрал для неё сайт, закрытый пробный кабинет и шесть отраслевых версий пульта по семи техзаданиям.
  • Открытого демо нет. Человек оставляет заявку, администратор вручную выдаёт ему ссылку на 72 часа и пробу на 7 суток, и он видит только выданные версии.
  • Все цифры на демоданных считаются из строк при каждом запросе. Контрольные суммы всех техзаданий сходятся в тестах.
  • 28 октября подключили домен заказчика и запустили бота первой линии в Telegram. К ноябрю сайт доработан по ТЗ версии 1.2 (1086 автопроверок), в админке есть воронка заявок и команда, а проект перенесён на сервер в Москве.
Хотите внедрить это у себя?

Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.

Обсудить автоматизацию

Дашборд для руководителя легко показать на скриншоте и трудно продать. Собственник хочет потрогать свои цифры, а компания не хочет отдавать продукт в открытый доступ. Здесь задача была как раз в этом: дать попробовать, но под контролем.

Задача

Заказчик прислал семь техзаданий: сайт и шесть пультов. Версии такие: общий, ремонтная компания, маркетинговое агентство, агентство недвижимости, салон красоты, косметологический салон. Цены и сроки в техзаданиях не стояли, зато были расписаны правила доступа, данные и контрольные величины.

Правила жёсткие. Заявка с сайта сама кабинет не создаёт. Доступ выдаёт администратор заказчика вручную, по одноразовой ссылке, на ограниченный срок. Внутри только демоданные с фиксированной датой состояния 21.10.2026, и итоговые суммы должны сходиться со строками, из которых они сложились. В каждом пульте обязателен контент-план: план, версия, согласование, факт и отчёт руководителю. Интеграции с CRM, банком и 1С отнесены ко второй очереди.

Что я сделал

Собрал всё одним проектом: сайт, кабинет и админку на FastAPI, SQLite и чистом JS без сборки. Сайт читает тексты, предложения, вопросы и контакты из одного файла, правка не требует перезапуска. Пустые поля, например контакт или сведения об операторе персональных данных, сайт не показывает, пока их не заполнят.

Путь человека выглядит так. Заявка падает администратору со статусом «Новая». Он выбирает организацию, сотрудника, профиль (руководитель, маркетолог, руководитель отдела маркетинга), версии пульта и сроки. Ссылка показывается один раз, её передают вручную. По ссылке человек задаёт пароль, токен сразу убирается из адреса. Проба идёт 7 суток с активации, приглашение живёт 72 часа. Продление, перевыпуск, смена версий и отзыв делаются в карточке сотрудника, отзыв срабатывает на следующем же запросе, открытая вкладка теряет доступ. Все действия пишутся в журнал без паролей и токенов.

Администратор входит с паролем и кодом 2FA, пароли хранятся через scrypt, формы защищены от подделки запросов, частота входов ограничена. Первый администратор создаётся только командой на сервере.

Пульты считаются на лету. Карточки не хранят готовых чисел: каждая цифра собирается из строк набора на каждый запрос, деньги лежат в целых копейках. Наборы данных генерируются детерминированно и отдаются только через защищённый API, в публичных файлах их нет. От любой карточки можно перейти к записям и увидеть ответственного. Про то, какие показатели руководителю нужны на одном экране, я писал в статье про дашборд руководителя.

Контент-план одинаково устроен во всех шести версиях. Маркетолог ведёт таблицу и календарь, отправляет позиции на согласование, вносит факт и пишет отчёт. Руководитель согласует и фиксирует версию плана. После фиксации перенос и смена темы требуют причины и попадают в историю, а отменённая позиция остаётся в знаменателе выполнения.

Бот первой линии появился 28 октября по просьбе заказчика. Он работает в Telegram на long polling, без языковой модели: ищет ответ по базе знаний, собранной из техзаданий и текстов сайта, и показывает темы кнопками. Цен и сроков, которых нет в техзаданиях, он не называет. Когда клиент просит человека, бот передаёт разговор менеджеру: тот получает заявки из бота и с сайта в одном чате, отвечает реплаем на сообщение клиента, а командой /close возвращает клиента боту. Заявки из бота пишутся в ту же таблицу, что и заявки с сайта. Почему быстрый первый ответ важнее красивого, я разбирал в статье про мгновенный автоответ лиду.

Что было сложно

Контрольные суммы. В каждом техзадании свои проверочные величины: возвраты, сертификаты, утверждённые дополнительные работы, выполнение контент-плана. Пример из техзадания по контенту даёт 83,3% и 75,0%, и расчёт должен выдавать ровно это. Я написал тесты на каждую версию, они сверяют величины своего техзадания и отдельные проверочные наборы. Пока хоть одна строка не сходится, выкладывать нечего.

Нумерация. В одном техзадании нумерация примеров не совпала с тем, что было в техзадании на сайт. Такие расхождения я выписываю заказчику списком.

Права внутри кабинета. Маркетолог агентства видит только назначенных ему клиентов, два редактора могут поймать конфликт при одновременной правке плана, а срок пробы истекает по серверному времени. Всё это закрыто сквозным тестом: заявка, ручная выдача, активация, разрешённый пульт, отзыв, плюс 2FA, подделка запросов и изоляция кабинетов.

Первый вход администратора. Ключ 2FA при ручном вводе набрали с ошибкой, помогла ссылка otpauth, которая добавляет ключ без набора.

Что изменилось к ноябрю

ТЗ версии 1.2

1 ноября пришла новая редакция техзадания с логикой «Сигнал, Синхро, Система», и я выложил её целиком. На сайте появилась страница пультов, карточки версий, формы по темам (проба, подключение, помощь со входом) и маршрут «Начните здесь» в кабинете. Из кабинета можно сразу «Обсудить подключение». В процессе нашлись и ошибки: смена периода не обновляла экран, а в генераторах данных время шагов внутри дня было перепутано, из-за чего победы когорты считались как 9, а не 10. Починил. Набор проверок по версии 1.2 содержит 1086 пунктов и проходит.

Цены и кейсы клиента на сайте пока скрыты флагами: заказчик их не утвердил. Показывать их или нет, решает сама компания.

Вкладка «Сайт» и воронка

Чтобы заказчику не нужен был разработчик для каждой правки, в админке появилась вкладка «Сайт»: тексты, контакты, срок ответа, вопросы и ответы, списки и картинки меняются там же. Правки лежат в базе поверх файла настроек, поэтому выкладка их не затирает, а кнопка «Вернуть как было» сбрасывает раздел.

Дальше админка расширена до рабочего места менеджера. Заявки идут по воронке: новая, связались, демо, звонок, предложение, оплачено или потеряно. У каждой есть ответственный и следующий шаг с напоминанием в бот. Заявки выгружаются в CSV. Видна активность клиента в демо: входы, разделы, маршрут. Админ получает уведомления в бот: первый вход, пройденный маршрут, доступ заканчивается за сутки. Клиенту можно отправить сообщение по шаблону через бота, если он ему писал. Шаблоны и тексты бота редактируются во вкладке «Тексты».

Команда и сервер в Москве

Во вкладке «Команда» заказчик заводит менеджеров со своим паролем, 2FA и ролью менеджера. Инструменты админки покрыты 68 автотестами. 29 октября проект перенесён на сервер в Москве, перед каждой выкладкой админка делает копию базы и хранит последние пять, откат описан в инструкции.

Что получилось

ЧтоСостояние
Сайт, кабинет и админкана техническом адресе 24.10.2026, на домене заказчика с сертификатом с 28.10.2026
Пульты6 версий, демо-кабинет со всеми шестью выдан заказчику
Контрольные суммысходятся по всем 7 техзаданиям в тестах
Бот первой линиизапущен 28.10.2026, 21 автотест
ТЗ версии 1.2выложено 01.11, 1086 проверок проходят
Админкавкладки «Сайт», «Тексты», «Команда», воронка заявок, выгрузка в CSV
СерверМосква, перенос 29.10
Резервные копиикаждую ночь, 14 последних, с проверкой восстановления
Реальные пробные доступыцифр пока нет

Всё работает на сервере заказчика. Приложение занимает около 80-120 МБ памяти, база SQLite весит единицы мегабайт. Выкладка идёт одним подключением по SSH: скрипт распаковывает код, сохраняет прежнюю версию рядом, ставит службу, таймер копий, сайт nginx и сертификат. Администратор заказчика вошёл в админку 28 октября, а сервер сейчас в Москве. Передача разговоров из бота включится, когда менеджер один раз запустит бота у себя, живой диалог с клиентом через неё я пока не видел.

Что дальше

Следующий шаг по техзаданиям это интеграции: CRM, банк, 1С. Тогда пульт будет считать живые данные компании, и демонстрация состояний источника станет реальными состояниями. Расчёты уже идут от строк, поэтому менять придётся загрузку, а формулы останутся. Утвердить цены, состав версий и кейсы для публикации на сайте предстоит самому заказчику, это отдельные открытые вопросы к ТЗ.

Базу знаний бота заказчик будет пополнять по вопросам, которые реально задают. Если клиенты начнут массово просить то, чего в базе нет, имеет смысл добавить квалификацию лида ботом перед передачей менеджеру.

Частые вопросы

Почему доступ выдаётся вручную?

Так решил заказчик. Пробный кабинет показывает весь продукт, и компания хочет знать, кто внутри. Заявка сначала попадает к администратору, он смотрит, кто это, и выдаёт только нужные версии на 7 суток.

Откуда в пультах цифры, если интеграций нет?

Это демонстрационные наборы с фиксированной датой состояния. Они генерируются одинаково при каждой пересборке, и итоги в них сходятся со строками, поэтому от карточки можно спуститься к записям. Подробнее про кабинеты с такой логикой я писал в статье про личный кабинет для клиентов.

Бот отвечает с помощью ИИ?

Нет. Он ищет ответ по ключевым основам слов в базе знаний и не придумывает цен и сроков. Всё, что за пределами базы, уходит менеджеру.

Коротко о главном

Для продукта, который продают через пробу, кабинет с ручной выдачей доступа оказался проще открытого демо: заказчик видит каждого, кто зашёл, и отзывает доступ одной кнопкой. Цифры, которые считаются из строк и проверяются тестами по техзаданию, снимают споры о том, правильно ли посчитано. Бот первой линии закрывает типовые вопросы и не прячет человека.

Если вам нужен кабинет с ролями, пробным доступом или дашборд руководителя на своих данных, я соберу такую систему под ваш процесс. Напишите в Telegram, MAX или VK.

Обсудим вашу задачу

Что я делаю для бизнеса

Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ
Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх