Задача
Пиццерия с доставкой заказала перенос приёма заказов из телефонной линии в Telegram.
В пятницу вечером линия занята наглухо, человек не дозвонился и ушёл заказывать в другое место.
Часть заказов ломалась на пересказе - оператор не расслышал размер или тесто, кухня делала не то, пиццу переделывали за свой счёт.
Хотели дать гостю собрать пиццу самому, увидеть цену на экране и оплатить, а кухне получать заказ напрямую.
Что сделал
Пицца собирается по шагам - размер 25, 30 или 35 см, тесто тонкое или пышное, борт, потом добавки.
Цена пересчитывается на каждом шаге, гость видит итог до того, как положил в корзину.
Стоп-лист повесил на ингредиенты. Закончилась моцарелла - с витрины уходят все пиццы, где она есть, и сама добавка становится недоступной. Обычно ломается именно здесь - магазин продолжает продавать то, чего на кухне нет.
Обещанные 30 минут привязаны к зоне на карте. Там, где не успевают, срок другой и он показан честно.
Стек - Python, aiogram 3, Mini App, PostgreSQL, VPS, автозапуск через systemd.
Результат
Телефон разгрузился, основная часть вечернего потока ушла в приложение. Оператор остался на подстраховке для тех, кто звонит по привычке.
Ошибок по составу стало заметно меньше - кухня читает то, что гость нажал сам.
От заказа до попадания на кухню теперь несколько секунд вместо двух-трёх минут разговора.
Заказчику передал исходники, доступ к серверу и инструкцию по правке меню и цен.