Начиналось с выгрузки из учётной системы, которую никто не читал. Сегодня этим пользуются механики, мастера-приёмщики, руководство сервиса и заказчики — в двух мессенджерах, трёх контурах и более чем двухстах выкатках на прод.
Один набор данных, три способа с ним работать — под то, где человек находится и с какого экрана смотрит. Учётные записи, права и видимость данных общие для всех трёх.
Витрина прямо в переписке: поиск машины по трём цифрам номера, карточка, заказ-наряды, подписка на смену статуса.
Полноценный интерфейс внутри мессенджера — и он же иконкой на экране телефона, без установки из магазина приложений.
Рабочее место сервиса на большом экране: всё, что происходит с парком, на одном столе.
Роль определяет не только права, но и состав главного экрана: каждый видит свою работу, а не общий интерфейс с половиной недоступных кнопок.
Своя выработка и эффективность, посчитанная от доступного времени по личному графику, а не от плана на месяц. Календарь записи. Заключение наговаривается голосом — на выходе готовый текст, со словарём терминов мастерской.
Приёмка с фотофиксацией: номер читается прямо с кадра, машина подсказывается сама, тип снимка определяется автоматически. Переписка по конкретной машине, отметка «этот кадр виден заказчику», отправка отчёта в пару касаний.
Кто на каком посту стоит, что ждёт решения заказчика, у чего горят сроки, что уехало. Тап по машине открывает полную карточку: логистика, фото, заказ-наряды с причинами и заключениями.
Обороты по цехам, кураторы, наценка на запчасти, доли заказчиков и эффективность персонала — с прогнозом до конца месяца и историей по месяцам. Суточный срез приходит сам.
Только свои машины и только свои данные. Статусы, фотоотчёт по приёмке и ремонту, построчное согласование работ по причинам обращения с фиксацией кто и когда, отчёт по парку в PDF, уведомление о выезде.
Отобрано из полной летописи релизов. Подсвеченные строки — вехи, менявшие масштаб продукта; между ними лежат десятки более мелких выкаток, каждая со своей версией.
Двое суток, за которые появилось всё, на чём стоит остальное.
Выгрузка учётной системы превращается в живую витрину: поиск по трём цифрам номера, карточка машины, заказ-наряды, подписка на смену статуса. День первый.
Бот в MAX на той же витрине, единая личность человека на обеих платформах. Отклик упал с 12 секунд до 0,1.
Согласие, роли, PIN по номеру телефона, изоляция данных заказчика. Клиент видит только свой парк — правило пережило все последующие правки.
Внутри Telegram и MAX открывается полноценный интерфейс, а не переписка с ботом.
Ручной труд уходит в автоматику, а экономика цеха становится видимой.
Обмен с учётной системой идёт по расписанию, несколько раз в час, и сразу раскладывается по машинам и заказ-нарядам. Ручной загрузки больше нет.
Отчёт по машинам заказчика одной кнопкой — из бота и из мини-приложения.
Снимки из рабочей группы привязываются к машине по трём цифрам и раскладываются по разделам: приёмка, неисправность, до и после.
Иконка на домашнем экране, запуск из браузера, свой сплэш — без публикации в магазинах приложений и без ожидания модерации.
Светлая, тёмная и автоматическая тема; два оформления интерфейса, выбор запоминается за человеком.
Схема цеха: кто на каком посту стоит. Тап по машине открывает заказ-наряды с причинами обращения и заключениями, а не только факт присутствия.
Четыре группы главного экрана: у механика, приёмщика, куратора и руководителя разный состав разделов и разный объём данных.
Кто из сотрудников что сделал за день — сводка формируется по таймеру и уходит в мессенджер отдельным PDF.
Согласие на обработку персональных данных, правовой блок и отзыв согласия самообслуживанием — по 152-ФЗ, без переписки с администратором.
Кадры, отправленные до того, как названа машина, копятся в очереди и привязываются задним числом. Ответ номером на старую пачку возвращает её в работу.
«219 с блоком от донора» — номер вытаскивается из обычной фразы, из подписи к кадру и из ответа на пачку. Человеку не нужно писать по форме.
Обороты по цехам, кураторы, наценка на запчасти, эффективность персонала, доли заказчиков — с прогнозом до конца месяца и историей по месяцам.
Модерация фотоотчёта: каждый кадр помечается как видимый клиенту или внутренний. По умолчанию — внутренний.
Экран не нужно дёргать вручную: открытая карточка и монитор подтягивают изменения сами.
Своя выработка, эффективность к доступному времени, календарь записи. Человек видит свою работу цифрами, а не со слов мастера.
Механик наговаривает голосом — на выходе готовый текст для учётной системы, со словарём терминов мастерской и контролем «надиктовка → итог».
Сервис перестаёт быть витриной и становится местом, где работают.
Сессия держится между запусками — приложение не выкидывает человека на экран входа посреди смены.
Не от плана на месяц, а от доступного времени по посуточной сетке личного графика. У людей с разным графиком — разная база, а не общая.
Не чат вообще, а обсуждение конкретной машины — с разделением внутреннего контура и клиентского.
Тумблер по каждому типу событий, тихие часы, отключение оповещений по конкретной машине. Приложение уведомляет само, не через бота.
Снимки собираются не в общую кучу, а по визитам машины: что было в этот заезд, что в прошлый.
Сообщение можно наговорить; текст расшифровки лежит рядом и попадает в поиск. Аудиофайлы чистятся по сроку, сама переписка остаётся.
Файл с телефона со сжатием картинок, снимок прямо из фотобанка машины — не пересылая его вручную.
Обращение через собаку с приоритетом в уведомлениях, реакции по правам, правка и удаление сообщения с сохранением следа, закреплённые сообщения.
Перенос сообщения из внутреннего обсуждения в клиентское проходит через экран подтверждения. Случайно показать заказчику внутреннюю реплику нельзя.
Клик по push-уведомлению открывает нужное обсуждение, а не просто поднимает приложение.
Запись голоса с телефона, файлы перетаскиванием в переписку с большого экрана, отметка «виден заказчику» прямо на вложении.
Заказчик подтверждает работы построчно, по причинам обращения. Кто и когда — фиксируется.
Изоляция данных между сервисом, клиентом и механиком подтверждена отдельным прогоном, а не рассуждением о том, что так задумано.
Если микрофон закрыт настройками встроенного окна мессенджера, человек видит причину и способ обойти, а не молчащую кнопку.
Текст, расшифровки голосовых и вложения — в одном поиске. Отметки прочтения, разделитель непрочитанного, черновик на каждое обсуждение.
Обсуждение по машине превращается в документ — приложить к делу, отправить, сохранить.
Отдельный экран того, что зависло на заказчике, и шаблоны ответов, чтобы не набирать одно и то же руками.
Отдельное рабочее место сервиса на десктопе — большой экран, мышь, клавиатура: монитор парка, обсуждения, фотобанк, аналитика, дебиторка и рабочие группы мессенджера в одном окне.
Три волны правок интерфейса подряд: единые размеры и отступы, состояния пустых экранов, работа с клавиатуры, отмена ошибочного действия с окном в 10 секунд.
Время хранится в одном поясе во всей системе. Сообщение, событие и отчёт больше не расходятся на несколько часов между экранами.
Копия проверяется разворотом, порча ловится, тревога приходит человеку, а не в лог.
Тип снимка определяется по нашему же архиву: человек кидает кадры и пишет три цифры — дальше без него.
В суточном срезе отдельной строкой: сколько кадров разобрано без человека. Автоматика отчитывается наравне с людьми.
У диалога есть владелец: чужая личная переписка не показывается даже тому, у кого доступ ко всем рабочим группам.
Монитор показывает такие случаи отдельной карточкой, а мёртвые строки выгрузки вычищаются, а не висят месяцами.
Табличка находится на кадре, номер распознаётся, машина подсказывается сама. Смена движка распознавания дала вдвое больше верных подсказок.
Выделить несколько снимков и одним действием открыть клиенту, перенести в другой раздел или перепривязать к другой машине.
Привязка снимка не теряется ни при пересылке, ни при разборе большой пачки, ни при смене контекста разговора.
Изменение сообщения в мессенджере видно в Диспетчерской и наоборот; расхождение ловится сверкой раз в пять минут.
Каждая отправка в мессенджер проверяется по факту: отказ попадает в журнал и повторяется автоматически.
Пять признаков неактуальности и ночная чистка: незавершённый черновик не доживает до следующего дня и не попадает в документ.
Все цеха сервиса — один экран с переключателем вместо отчёта по одному направлению.
Бот в рабочей группе клиента без единой личной учётки: сводка по парку дважды в день, карточка машины по трём цифрам, уведомление о выезде с территории. Право видеть данные даёт чат, а не человек.
Каждая выкатка — реальный деплой на рабочий сервер, а не сборка в ветке. Версия растёт на сотую долю за каждую, запись в летопись дописывается автоматически при деплое.
Ничего не собрано из готовых коробок: мессенджер, фотобанк, распознавание и отчёты — свой код, который можно менять в тот же день, когда сервис попросил.
≈ 35 600 строк: 44 модуля на Python и два фронта на чистом JavaScript, без тяжёлых фреймворков.
55 + 11 таблиц: витрина сервиса и отдельная база переписки. Единый часовой пояс, бэкап с проверкой разворотом.
4 сервиса и 10 таймеров: обмен данными, боты, приложение, отчёты по расписанию, ночные чистки.
Не обёртка над чужим: два контура, голосовые с расшифровкой, реакции, упоминания, вложения, поиск, экспорт в PDF.
Номер с фотографии, тип снимка по собственному архиву, речь механика в текст заключения — всё на своей стороне.
Отчёты по парку, суточные срезы, экспорт переписки — вёрстка PDF на сервере, а не печать страницы браузером.
Старт — V-1.00. Каждая выкатка на рабочий сервер прибавляет одну сотую и помечается датой деплоя с описанием того, что изменилось и почему было решено именно так. Крупные вехи получают «круглую» версию.
Летопись дописывается в момент деплоя, а не задним числом по памяти: скрипт выкатки не даёт отправить код на сервер, не оставив запись. Поэтому в ней есть и неудачные заходы, и откаты собственных решений — это рабочий журнал, а не витрина.
Полная хронология из более чем двухсот записей ведётся внутри проекта. Здесь — выборка того, что меняло продукт для людей, которые им пользуются.
Не обещания с датами, а то, что уже разобрано и стоит в очереди. Порядок определяется тем, что сервису нужнее в конкретный месяц.
Принят → диагностика → ждём решения → в ремонте → готов, с оценкой срока выдачи. Снимает звонки «ну что там?».
Рекомендованные работы с ценой прямо в карточке причины: согласовать, отклонить или позвонить — не выходя из телефона.
Подписание акта в приложении и история актов у клиента — безбумажная площадка с юридическим следом.
Полный профиль: прошлые визиты, работы, фотографии и заключения — независимо от того, кто её тогда вёл.
Каждый пункт — работающий на проде код, а не план. Полная хронология из более чем двухсот выкаток ведётся отдельно и дописывается автоматически при каждой.