Хакатон MAX 2026 · команда 397 · сценарий продукта

Трасса одной перевозки

Что именно мы показываем на защите: одна отгрузка масла из Елабуги в Казань, от пустой системы до закрытого документооборота. Четыре человека из трёх разных компаний, ни один из которых ничего не устанавливает. Здесь же — как бот понимает, кому и что отправить.

Решение 23 сентября 2026 Данные отгрузка ОТГ-2026-1040 из seed/plant-seed.json Подробности docs/scenariy-demo.md и docs/model-i-sostoyaniya.md

Трасса перевозки

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

Марина завод Олег перевозчик Иван водитель Дмитрий приёмка Оператор и ГИС модель подключение заявка, вход погрузка Т1 и Т2 в пути выгрузка закрытие Подключает завод: ИНН, номер, доверенность Открывает одну из 17 отгрузок, назначает перевозчика по ИНН Открывает ссылку — сразу видит перевозку, даёт номер Ставит машину и водителя, зовёт Ивана Открывает ссылку или QR, даёт номер, принимает рейс Отмечает прибытие, подтверждает погрузку: 86 мест, 2730 кг «Ваш ход»: проверяет факты, подписывает Т1 в «Госключе» «Ваш ход»: подписывает Т2 Выдаёт УИД и данные для QR QR приходит файлом, открывает до выезда Открывает ссылку, даёт номер: видит, что к нему едет Отмечает прибытие на выгрузку Осматривает груз, принимает или ставит замечания Подписывает Т3 в «Госключе» Подтверждает сдачу Подписывает Т4 в «Госключе» Видит «закрыто», статус уходит в учётную систему перевозчик вошёл водитель принял водитель принял погрузка есть машина поехала машина на месте получатель принял Т3 подписан рейс закрыт перевозка закрыта отгрузки приглашение приглашение на склад факты погрузки Т1 Т2 QR ссылка приёмщику приехал на месте Т3 сдал Т4 серым — что человек видит, пока ход не его
Полный путь каждого из четверых: зелёным — их собственные действия, серым — то, что им показывает бот, пока ход не их. Стрелка с подписью — это конкретное сообщение конкретному человеку; ход переходит девятнадцать раз. Дорожка оператора и ГИС пунктиром: на хакатоне это эмулятор. Первый титул подписывается после погрузки, а не до неё: в нём обязательны фактические время и масса, а исправлять их задним числом запрещает пункт 10 Правил.
ВремяЧто показываемГде смотреть
0:00–0:30Проблема: с 1 сентября бумаги нет, 8,2 млн документов за первую неделю против 2,5 млн за август, час простоя фуры от 1000 ₽слайд
0:30–1:30Система пустая. Марина подключает завод: ИНН, номер телефона, доверенность, учётная системателефон 1
1:30–2:10Список из семнадцати отгрузок, берём одну. Назначает перевозчика по ИНН — его в системе нет, уходит приглашениетелефон 1
2:10–2:50Олег открывает ссылку и сразу видит перевозку, а не форму регистрациителефон 2
2:50–3:30Иван ничего не ставит и не регистрируется. Принимает рейс, подтверждает погрузкутелефон 2
3:30–4:15«Сейчас ваш ход»: времена и масса подставлены из отметок водителя. Подпись через «Госключ»телефон 1
4:15–4:45Второй титул, приходит номер и QR-код — файлом прямо в чат водителютелефон 2
4:45–5:45У Дмитрия нет ни кабинета оператора, ни квалифицированной подписи. Принимает и подписываеттелефон 3
5:45–6:15Четвёртый титул, статус уходит обратно в учётную систему заводаэкран
6:15–7:00Что у нас модель, а что настоящееслайд

Четыре двери

Каждая сторона входит в тот момент, когда впервые понадобилась, а не заранее. Это и есть наше отличие: у конкурентов на этом месте компания сначала заводит человека и выдаёт ему пароль — СМС-приглашение, код от логиста, код из 1С со СНИЛС, корпоративный аккаунт. У нас заводить нечего.

Завод · отправитель Вводит ИНН — реквизиты подтягиваются сами Делится номером телефона кнопкой в MAX Номер и срок машиночитаемой доверенности Подключает учётную систему завода ≈ 1 минута один раз в жизни компании Перевозчик Открывает ссылку — сразу видит перевозку Делится номером телефона ИНН уже подставлен Ставит машину и водителя, зовёт Ивана ≈ 40 секунд пароль не выдаёт никто Водитель Открывает ссылку или QR на воротах Делится номером телефона и всё ≈ 15 секунд ничего не устанавливает Получатель Открывает ссылку на приёмку Делится номером телефона и всё ≈ 30 секунд ни кабинета, ни КЭП Ни одного нового пароля: номер уже подтверждён мессенджером, а подпись выдаёт государство
Тяжёлый вход ровно один — у отправителя, и он бывает один раз в жизни компании. Со второй перевозки не приглашают никого: организации подключены, люди привязаны, перевозчик выбирается из тех, с кем уже работали.

Как бот понимает, кому слать

Каталога компаний у нас нет и не будет — никто никого не ищет. Состав перевозки приходит готовым из учётной системы отправителя: там уже лежат ИНН перевозчика из договора перевозки и ИНН получателя из договора поставки.

поиск адресата — это переход по ключу Перевозка ОТГ-2026-1040 Поле «чей ход» хранится, а не вычисляется Участник с этой ролью перевозка × роль × человек Человек подтверждённый номер телефона Личная переписка в MAX звезда, а не общий чат бот одна правда Марина · завод Олег · перевозчик Иван · водитель Дмитрий · приёмка общий чат бот не умеет создавать групповые чаты
Три ключа держат всю адресацию: ИНН связывает компании, подтверждённый номер телефона связывает человека с компанией, роль в перевозке связывает человека с шагом. Общего чата перевозки не будет: бот не может создавать групповые чаты, а метод добавления участников MAX удаляет 30 сентября 2026 — в день сдачи. Поэтому схема «звезда»: у каждого своя переписка, а общее видно в мини-приложении.

Когда перевозок не одна

У диспетчера завода в демо-данных семнадцать отгрузок, и все они живут одновременно. Если слать по сообщению на каждую, человек выключит бота на второй день. Плюс в MAX лимит два сообщения в секунду на переписку — семнадцать штук мы просто не отправим.

как не надо 17 перевозок 3 ждут действия перевозка 1040 ждёт подписи перевозка 1041 ждёт подписи перевозка 1043 ждёт подписи три отдельных сообщения, и так каждый день как у нас 17 перевозок 3 ждут действия «Три перевозки ждут вашей подписи, самая старая стоит два часа» 1040 · ждёт 2 ч 10 мин 1041 · ждёт 40 мин 1043 · ждёт 12 мин очередь, дольше всех ждущая сверху Два уникальных индекса не дают назначить одну машину или водителя на две активные перевозки сразу
Механика та же, что у фильтра «Ожидает подписание ЭТрН» в CARGO.RUN, с одной разницей: у них это фильтр, в который надо зайти, у нас — сообщение, которое само приходит человеку. У водителя и приёмщика всё проще: у них обычно одна активная перевозка, поэтому карточка остаётся обычной.

Что настоящее, а что модель

Работает по-настоящему

  • Узнавание человека по аккаунту MAX и подтверждённому номеру
  • Подпись через «Госключ» с проверкой ГОСТ-подписи
  • XML титулов по формату ФНС с проверкой по официальным схемам
  • Простая подпись водителя и кладовщика с доказательствами
  • Весь мессенджер: кнопки, живые карточки, ссылки, файлы

Модель, и мы говорим это первыми

  • Оператор ЭПД — эмулятор в контейнере
  • ГИС ЭПД — эмулятор: выдаёт номер и данные для QR
  • QR-код собираем сами
  • Справочник организаций по ИНН
  • Подпись организации на первом титуле

Одиннадцать веток, которые обязаны отработать

Отточенный сценарий — это не одна тропинка, шаг в сторону с которой роняет демонстрацию. Жюри обязательно нажмёт не туда, поэтому эти ветки — часть продукта, а не запас на будущее.

Что случилосьЧто делает продукт
Замечания на погрузкеРасхождение уходит в титул, диспетчер видит его до подписи. Кнопка стоит рядом с «всё верно», а не прячется
Частичная приёмка или отказТретий титул с отметкой, перевозка не зависает
Получатель молчитЧерез два часа напоминание ему, дальше отправителю. На демо таймер ускоряется командой
Нет связи на площадкеКнопка не сработает, а текстовое «погрузка ок» уйдёт из очереди мессенджера, когда связь появится
Открыли из браузераРаботает — это требование Задания
ИНН не нашёлсяДаём ввести реквизиты руками и помечаем как непроверенные
По ссылке пришёл не тотПускаем, помечаем и сообщаем тому, кто приглашал
Ссылка просроченаКнопка «попросить новую» вместо сообщения об ошибке
Не хочет делиться номеромОбъясняем зачем и честно говорим, что без номера у подписи не будет доказательств
Несколько перевозок ждутОдна сводка, а не три сообщения подряд
Нажали кнопку дваждыВторой титул не создаётся

Когда считаем, что сценарий отточен

Главная фраза защиты. Операторы решили, как документ доходит до системы. Никто не решил, как он доходит до человека. И вторая, для слайда про подключение: ни одного нового пароля в жизни водителя.