Софт для пиццерии (практика, мысли, идеи и просьба о помощи)



** Что-то вроде предисловия **
Имеется: Delivery пиццерия
Задача: Максимально автоматизировать внутренние процессы

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

Первую версию программы решено было писать на VBA, т.к ее необходимо было сделать быстро + неимение средств очень способствовало к этому =) Да и очень остро стоял вопрос, на каком языке ее писать вообще? Что это будет в итоге?


Софт на Excel + VBA
Ну чтож, сказано — сделано =)
Показываю скрины полностью рабочего софта написанного на Excel + VBA:
Главное окно программы: kaincq.ru/i/7ade78.png
Прием заказа: kaincq.ru/i/9a3930.png
После приема заказа печатался следующий бланк: kaincq.ru/i/7869a5.png

Программа так же вела статистику по продуктам, проданным пиццам/напиткам и полностью сводила кассу. Имела черный список и определяла район в зависимости от набранной улицы. Онлайн контроль и удаленный доступ был решен перенесением программы на Гугл.Диск, в результате чего можно было постоянно знать полную статистику через интернет.

После написания софта практически сразу стали видны и недостатки данной программы, и все они сводились к тому, что это все таки Эксель блеааа!!! Например реализовать автоподстановку адреса исходя из номера телефона (сверить номер в базе и при совпадении вытащить старый адрес) было крайне сложно. А когда кол-во строк в базе перевалило за 5к стали всплывать и другие проблемы, но благо это был временный вариант и к этому моменту мы уже практически закончили написание нового софта.

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


Софт на node-wekit
Собственно скрины нового софта =)
Модуль приема заказов: kaincq.ru/i/14d214.png
Модуль курьеров: kaincq.ru/i/080ea3.png
Всего софт состоит из 3 модулей (Прием заказа, Курьер, Кухня). Прием заказов полностью справляется со своей задачей и на данный момент по нему ведутся скорее косметические улучшения. У курьеров стоит отдельный моноблок где они видят текущие заказы и распределяют их между собой, данный модуль сейчас тестируем. Модуль для кухни хотим запустить в ближайшее время, он позволит сразу же после принятия заказа оповещать об этом кухню. Моноблоки/модули между собой общаются через локальную сеть/порты и просмотр статистики через интернет к сожалению не доступен =(

** Ради чего это все писалось **
На данный момент запланирована последняя перепись данного софта, следовательно хотел бы с вами посоветоваться в этом, заодно может быть и исполнителя нашел бы.

Сам софт будет состоять из нескольких тесно связанных между собой модулей (прием заказов, курьеры, кухня и тд.)
  • Все модули должны моментально обмениваться между собой информацией
  • Полная статистика должна быть доступна через интернет
  • Синхронизация между 2 удаленными точками, например прием звонков осуществляется в 1 месте, а распределение заказов происходит на 2 пиццерии в разных районах города

Как вы видите себе данный комплекс ПО?
На чем бы писали?


P/s Все те, кто заинтересуется в написании данного софта, пишите на почту KainCq@mail.ru с указанием своей цены за месяц работы.

35 комментариев

  • аватар SeL
  • +1
[of]Буквально только что привезли вашу пиццу

По поводу архитетектуры самого приложения: тонкие клиенты(можно веб-морду)+сервер прлиожений+бд, это изначально решит проблемы синхронизаций. А также отпадет нужда в обмене информации между модулями, она вся хранится в единой БД, а ее интерпритация — задача уровня сервера приложений. Единственный недостаток — зависимость от каналов связи, но эта проблема возникнет в любом случае при наличии 2 удаленных точкек, конечно это тоже решаемо, в том числе не только за счет резервирования каналов связи, но и программно, но я так понял бюджет ограничен.

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

Но просто из топика не совсем понятно что хочется полчить в итоге. К чему это я. Как бы смешно это не звучало, 1С может оказаться лучшим выбором для поставленных задач. Но это как я себе представляю конечный функционал ИС, к тому же не сильно накладно получится.

Для подробного ответа на этот вопрос требуется больше данных о решаемых этой ИС задачах и сущностях, которыми она оперирует.
  • аватар ololo
  • 0
1С и работа удалённо через интернет мало совместимы. Веб-приложение или нативное позвролит каждому курьеру быть на связи с системой, а в случае с 1С понадобится как минимум таскать с собой ноутбук.
  • аватар SeL
  • 0
1C давно умеет веб-интерфейс.
  • аватар ololo
  • 0
Настолько хорошо, как тот же питон?
  • аватар SeL
  • 0
Если брать голый питон, то да, даже лучше.
  • аватар ololo
  • 0
Зачем брать голый питон? Впрочем, дальнейшее развёртывание условий задачи позволяет сделать вывод, что 1С здесь не подходит. И я глубоко сомневаюсь, что в 1С есть хотя бы минимальные средства для создания подобных приложений. Если ты с этим не согласен, то расскажи, как средствами 1С реализовать событийно-ориентированный сервер.
  • аватар SeL
  • 0
Я знаком с 1С очень поверхностно, но уверен, что он вполне поддерживает событийно-ориентированное программирование, также как и большинство других языков.
  • аватар ololo
  • 0
Я имел ввиду конкретную задачу — создание событийно-ориентированного сервера для веб-интерфейса. Это возможно или нет? Если да, то я бы хотел увидеть примеры таких внедрений, конкретные продукты или хотя бы ссылки на документацию.

Из того, что я видел, могу отметить только веб-расширение для 1С, которое обладает настолько примитивной функциональностью, что ему вообще трудно найти хоть какое-то практическое применение, не говоря уже о решении таких задач, как создание событийно-ориентированного http-сервера.
  • аватар SeL
  • 0
А кто сказал, что везде должен быть веб-интерфейс? Нэйтив-интерфейс куда удобнее, а веб нужен только для курьеров и статистики, это легко реализовать и тем что по ссылке. Но если копнуть глубже, то станет ясно, что 1С просто позволяет без лишнего геморроя повторить свои формы в вебе. Но это не означает, что на этом его возможности ограничиваются. Также есть 1С веб-сервисы. Если этого мало, можно стучаться из прокладки через COM.
К сожалению я практически не знаком с 1С, но подозреваю что в ней невозможно реализовать даже банальные ф-ии.

Сейчас все больше склоняюсь написать вообще веб-приложение, вся работа с софтом будет строиться на открытии браузера, но стоит 2 вопроса:
— Где найти безотказный хостинг?
— Как работать при отключении/падении интернета


Вкратце напишу что должен делать софт в целом, но могу и что-то упустить:
Модуль «Прием заказов»
— Максимально автоматизировать прием заказа
— Самостоятельно вытащить номер звонящего и подставить в соответствующее поле [?]
— При наличии номера в базе предложить варианты адресов доставки
— Контролировать проводимые акции (например сок в подарок пн-чт с 10:00 до 17:00)
— Контролировать правильность заполнения заказа (к каждой пицце бесплатный соус)
— Помогать оператору правильно принимать заказ/подсказывать
— Распределять заказ между пиццериями
— Распечатать заказ

Модуль «Курьер»
— Грамотное распределение заказов между курьерами
— Графическое отображение заказов для более выгодного и легкого построения маршрута
— Ведение статистики по курьерам (кто какую пиццу повез, кол-во опозданий за n дней и тд.)
— Расчет курьеров

Модуль «Кухня»
— Моментальное информирование кухни о поступившем заказе
— Привязка онлайн заказа с сайта напрямую к кухне
— Сведение ошибок к минимуму при заметках клиента (пицца без грибов)

Естественно должен быть полный контроль и ведение статистик через интернет. Для более лучшего восприятия в виде графиков (наиболее популярные пиццы, средний чек, самое большое кол-во заказов и тд)
  • аватар ololo
  • 0
— Где найти безотказный хостинг?
какие критерии?

— Как работать при отключении/падении интернета
localstorage
  • аватар SeL
  • 0
Я тоже не специалист по 1С, но тем не менее большинство перечисленных функций реализуемо как из коробки, так и сторонними расширениями.

Ну а теперь по пунктам:

Пример хорошего безотказного хостинга — Amazon Web Services.

При отключении/падении инета самым дешевым будет резервный канал через 3G, программно реализовать распространенную ИС выйдет очень дорого.

Вытащить номер звонящего — интеграция с АТС в коллцентре, можно вообще перейти на софтфоны

Ну а вообще, по списку задач, нужна практически полноценная ERP-система с CRM-модулем. Только стоить такое будет больше 150к, озвученных в топике, в несколько раз.
На данный мы используем Виртуальную АТС и софтфоны.
Кстати, может быть кто-то знает нормальный софтфон? =)

Это при открытии у нас не было 150к и не рационально тогда было использовать средства на софт, сейчас можно выделять ежемесячно n тыс. на софт
  • аватар ololo
  • 0
— Самостоятельно вытащить номер звонящего и подставить в соответствующее поле [?]
Вы хотите подключить систему к атс, чтобы регистрировать звонки, поднимать и использовать информацию о звонящем?

— При наличии номера в базе предложить варианты адресов доставки
Я не особенно знаком с этим бизнесом и мне непонятно, зачем голосом предлагать клиенту адрес, если он его всё равно назовёт? Вы не сможете знать все адреса, где может оказаться в момент звонка ваш покупатель (друзья, работа, какое-нибудь тайм-кафе). Такой подход может иметь право на жизнь при заказе из интернета, когда в личном кабинете можно хранить адреса подобно тому, как это делает пэйпал, но при общении голосом ценность такой возможности на мой взгляд сомнительна.

— Контролировать проводимые акции (например сок в подарок пн-чт с 10:00 до 17:00)
— Контролировать правильность заполнения заказа (к каждой пицце бесплатный соус
В чём заключается контроль? Можно же просто автоматически добавлять в заказ некую позицию.

— Помогать оператору правильно принимать заказ/подсказывать
Какого рода подсказки?

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

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

Вероятнее всего, довольно быстро возникнет надобность в модуле учёта и закупки продуктов, а также решающем мелкие логистические вопросы.
Я не особенно знаком с этим бизнесом и мне непонятно, зачем голосом предлагать клиенту адрес, если он его всё равно назовёт? Вы не сможете знать все адреса, где может оказаться в момент звонка ваш покупатель (друзья, работа, какое-нибудь тайм-кафе). Такой подход может иметь право на жизнь при заказе из интернета, когда в личном кабинете можно хранить адреса подобно тому, как это делает пэйпал, но при общении голосом ценность такой возможности на мой взгляд сомнительна.
Не соглашусь, введение данной ф-ии позволило снизить время приема звонка на 38% и это не пустые слова, а факты подтвержденные личным опытом. А скорость приема заказа очень важна в данной сфере.

За счет чего? Все просто, если звонит клиент который уже есть в базе (высвечиваются его старые адреса), то такому клиенту можно не перечислять соусы для пиццы, он уже итак их знает, напитки в ассортименте и прочие мелочи + огромное кол-во времени тратилось на правильное вбивание адреса. Сейчас же оператор просто говорит доставить заказ на Веспремскую 7 или на Ленина 60?

Насколько я понимаю, тут нужно сформировать оптимальный маршрут для каждого из курьеров, исходя из имеющихся заказов, которые нужно распределить между ними. В этом поможет апи картографических сервисов и обратный геотаргетинг.
Тут мы предпочли не отдавать все права системе, это лишь помощник для курьеров. И как показала практика достаточно графически выводить заказы на карте, далее человек сам простаивает себе оптимальный маршрут. Но не менее важной ф-ей данного модуля является статистика по курьерам.

Вероятнее всего, довольно быстро возникнет надобность в модуле учёта и закупки продуктов, а также решающем мелкие логистические вопросы.
Все верно =) Но в приоритете данные модули
  • аватар ololo
  • 0
Что касается хранения предпочтений, то это очевидный путь для сокращения времени обработки заказа, я это не оспаривал. Я высказывал сомнение, что вопрос оператора клиенту об адресе доставки сможет как-то ускорить процесс.
  • аватар ololo
  • 0
Не понимаю, зачем нужен node-webkit, когла на стороне клиента достаточно только лишь браузера. Со стороны сервера на мой взгляд, не важно, на каком стеке это будет работать. Автоматизация пиццерии не предполагает высоких нагрузок, поэтому для сервера можно выбрать любые технологии.

У меня есть предварительные планы на второй квартал следующего года по софту для пиццерий-суши, стандартная трёхзвенная архитектура, веб-приложение. Но планы предварительные, возможно в начале года рыночный ветер подует в другую сторону и для реализации будет выбрано несколько иное направление. Теоретически можно объединить усилия полностью или в какой-то части.

Насколько я понимаю, в Курске что-то подобное уже делается и другими людьми, в том числе присутствующими здесь. Если я не ошибся, то они отпишутся здесь.
Изначально тоже думали что на стороне клиента достаточно браузера, но что делать при падении интернета? Или хостинга/сервера?

Node-webkit можно запустить как на Windows, так и на Android, iOS. Хотели что бы клиентские приложения имели свою БД на том устройстве где установлены и с глобальной БД синхронизировались через интернет. При падении интернета, все модули внутри пиццерии работали бы через локальную сеть, а при возобновлении интернета отправляли бы свежие данные в глобальную БД.

Но к сожалению с этим возникли трудности при написании, возможно не хватило опыта и знаний =)
  • аватар ololo
  • 0
В каждый современный браузер встроена СУБД. Решение использовать Node-webkit как минимум нерационально, особенно на мобильных платформах. Снабжать сервером каждый рабочий компьютер, планшет и телефон вряд ли имеет смысл.

В условиях, когда система должна сохранять работоспособность без связи с другими узлами, достаточно лишь одного общего веб-сервера и хранилища в точке внедрения, все локальные клиенты смогут работать с ними.
  • аватар mihon
  • +1
Если интернет падает — новых заказов никто не увидит же. Сохранять все вводимые данные в ожидании интернета разумно. Но для этого есть более простые способы. Это если вести речь об отсутствии интернета у клиента. Если интернета нет у администратора — ему мало что поможет получить данные о заказе.
  • аватар mihon
  • +1
Я вот читал-читал и не смог найти для себя ответа на вопрос: что нужно автору?
Ему вроде нужна помощь в написании софта, но он предлагает указывать стоимость работы за месяц (он что, работника за зарплату на это дело ищет?).
И что в конечном итоге требуется: переписать имеющийся софт или написать новый?
Какие требования к разработчикам, срокам, технологиям?
Автору нужен совет, как и на чем лучше написать такую IS?
Да, на данный момент хочется собрать команду для написания такого софта
  • аватар SeL
  • 0
Лучше всего начать с того, что где-то на бумажке попробовать нарисовать следующее: организация состоит из подразделений, а в подразделениях работают люди. Так вот для каждой профессии нужно перечислить все операции, которые они производят, и которые должны быть отражены в информационной системе. Дальше нужно постараться определить те бизнес-процессы, которые должны описываться этой информационной системой, и представить их в виде последовательности операций сотрудников.

Эти действия позволят получить предварительное представление о том, что нужно получить в итоге, а также примерно оценить затраты и трудозатраты, и поможет выбрать конкретные технологии и решения.
  • аватар mihon
  • 0
Отвечая на два конкретных вопроса поста:
— два веб-приложения с единой базой. Одно для клиентов, второе для администраторов
— Ruby on Rails
  • аватар ololo
  • 0
— два веб-приложения с единой базой. Одно для клиентов, второе для администраторов
зачем два?
  • аватар mihon
  • 0
Чтобы не усложнять клиентское приложение. Меньше проблем с распределением прав доступа.
  • аватар ololo
  • 0
Я не знаком со спецификой рельсов, но лично мне сколько-нибудь значительная сложность реализации acl в приложении представляется аргументом против использования этой конкретной технологии.
  • аватар mihon
  • 0
Какой технологии, рельсов? Какая-то странная цепь выводов к этому привела, вероятно.
  • аватар ololo
  • 0
— два веб-приложения с единой базой
— Ruby on Rails
Меньше проблем с распределением прав доступа.
  • аватар mihon
  • 0
Хорошо, попробую пояснить.
Зачем в пользовательское приложение тянуть функции, которые используются в административной части?

Я не говорю, что каждый раз нужно писать отдельное приложение для администрирования, вовсе нет. Но тут мне это кажется уместным.
  • аватар ololo
  • 0
Возможно, это разговор может быть беспредметным по причине того, что автор поста не представил подробного техзадания и мы с тобой можем представлять себе совершенно разные вещи, полагая, что говорим об одном и том же.

Зачем в пользовательское приложение тянуть функции, которые используются в административной части?
Я понимаю, что это вопрос риторический, но я ставлю здесь под сомнение саму необходимость содания двух отдельных приложений, поскольку это может увеличить стоимость сопровождения готового решения.
  • аватар mihon
  • 0
Согласен, что скорее всего беспредметный.
  • аватар brood
  • +2
Готов помочь автору. Только вот не знаю чем.
Прочел как
Готов помочь автору. Только вот не знаю зачем.
  • аватар mihon
  • 0
В сухом остатке: не до конца ясно с чем нужно помочь и в каком качестве.
Мсье, добавьте конкретики, внесите ясность.

Чтобы оставлять комментарии, нужно или зарегистрироваться.