Pull to refresh

Comments 39

Вы лучше расскажите как работаете неофициально в некоторых странах СНГ, хочу по заимствовать ваш опыт.

Ну почему же минусуем без пруфов?

Подсказка: страна Молдова.

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

Верните, пожалуйста, отключение функции «показать водителю, где я». А то такси постоянно приезжает не туда.

Здравствуйте! Я из Яндекс Go. Отключить можно в настройках. Сейчас напишу в личные сообщения, чтобы помочь разобраться.

отключение функции «показать водителю, где я». А то такси постоянно приезжает не туда

Дмитрий, а можете прокомментировать тогда как именно работает этот функционал?
Подтверждаю, что самое простое - это вызов таксиста в ту точку, которую я выбрал на карте визуально меточкой "я". Но таксисты, почему-то этого не видят, у них идёт привязка вызова к каким-то другим местам, во всяком случае они так говорят.
Что видят таксисты? Просто адрес ближайший к этой точке или прям точку на карте?
Либо это такая хитрость таксистов, ведь пока мы занимаемся розыском где-же он "ждёт", уже тикает время ожидания и таксисту выгодно "немножко не там ждать"?
Можете подтвердить корректную работу выбора места точки вызова? Таксисты в самом вызове потом как видят точку, куда нужно приехать? Просто адресом или точной точкой на карте? Тот факт, что они приезжают потом в другое место, например с обратной стороны дома и ждут там (хотя на карте указывал точку возле подъезда) - это хитрость таксистов или недоработка функционала?

Здравствуйте! В целом это зависит от GPS-модуля вашего устройства. Если точка определяется неправильно, можно пальцем передвинуть пин на нужное место — водитель должен будет приехать точно туда. И будет очень здорово, если вы уточните ваш номер телефона и время заказа, в котором что-то пошло не так, в ЛС. На конкретном примере будет легче всё проверить и разобраться :)

Дело не в GPS и не в точности позиционирования. Я именно пальцем передвигаю пин куда мне нужно, чтобы приехала машина.
Т.е. четко ставлю точку, где я её жду. Но часто такси приезжает либо в другую точку двора, либо с другой стороны дома (вообще за дом) и т.п.

Т.е. я вижу, что машина приехала и "ожидает". Но находится не там, куда я ставил пин!

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

Не только у вас такое. И ответ что они видят то — тоже интересен.

В общем вижу по плюсам интерес к вопросу. Выждал время и отпишусь для других о результате.

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

Однако, не прокомментировал никак что именно видят таксисты. Действительно ли они не видят пин или видят, но хитрят. Я так и не знаю ответ на этот вопрос.

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

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

В общем по прежнему хотелось бы какой-то официальной информации от представителей сервиса. Что именно видят таксисты? Стоит ли считать их приезд в другое место (отличное от пина) - хитростью для дополнительного заработка на ожидании?

С лета не ездил, может что-то поменялось, но до этого вызывал почти каждый день в довольно неочевидную точку (через дорогу от определяемого адреса). И большинство таки становилось именно в указанную точку.

Строго точкой. Точка в приоритете над адресом. Такое ожидание не приносит ни выгоды ни настроения. Случаи, когда точка в приложениях водителя и пассажира не совпадала крайне редки и только в устных пересказах. Можете попросить водителя показать его точку, но только до того, как он перевел поездку в статус "в пути" движением слайдера пр низу экрана.

Что она есть, что ее нет. У меня ни разу такси не приезжало туда, где я, только на адрес вызова. Может только мне так «везло»…

приложения яндекс такси для андроида использует провайдер получения координат network и из за этого показывает неточное местоположение, почему не gps непонятно, фиксится запуском какого нибудь локера gps

А как устроенны релизы? Не бывает проблем с заказами, которые начали обрабатываться прошлой версией стейт машины, а после произошел релиза должны продолжить обрабатываться новой? Или, например, появляется новое состояние в стейт-машине, а после релиза понимаете, что надо откатиться на прошлую версию -- не будет проблем с заказами, которые остановились в этом новом состоянии?

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

  1. Можно просто делать совместимые изменения

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

  3. Включение в отдельной стадии. Например, у нас при обработке события handle_new_driver_found можно выполнить обработчик send_offer_to_driver_v1 и send_offer_to_driver_v2. Тогда мы отдельной стадией вычисляем (используя нашу систему доставки конфигурации), нужно ли для заказа выполнять поведение версии v1 или v2, а потом - вызываем соответствующий обработчик. Поскольку все вычисления происходят локально, то можно гарантировать, что вызовется или поведение версии v1 или поведение версии v2, и не будет случая, когда вызовутся сразу оба или ни одно из них сразу. Но вот если у нас будет, например, 2 события handle_new_driver_found, потому что первый водитель откажется, то для второго события может быть вызвано поведение версии, например, v2, в то время как для первого - версии v1. Поэтому получается промежуточный вариант по гарантиям и по затратам на разработку

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

А вы в курсе что таксисты мягко говоря не любят Яндекс? Слабо сказать таксисту "вот я из самого сердца Яндекс-Такси, работаю для вас с поте лица за скромные 20% от поездки" ?

Таксистов насильно держат в Яндексе? Таксисты - взрослые люди, если что-то не нравится - могут вполне уйти в многочисленные конкурирующие организации. А если они продолжают пользоваться именно Яндексом, значит таксистам выгодно и/или есть какие-то преимущества перевешивающие минусы. Тогда какие могут быть претензии?

Ну-ну, знакомая агрументация, тебя никто не заставляет, найдём других за меньшие деньги. И находят, ведь по оценкам 80-90% заказов проходит через Яндекс. Пассажиры считают, что выставленная цена справедливая, к примеру их должны везти за 70-100 рублей по пробкам. Таксист не может просто отказаться, ведь в результате отказа падает рейтинг, везёт, в уме считая убытки, а потом на пустом месте (ожидание 5 минут, не нашли друг друга, непредусмотренный багаж) взрывается. Из-за низкой ставки, из которой таксист должен отчислять агрегатору и парку, ему остаются копейки, вынужден работать сутками. Качество услуг падает, вплоть до аварий.
А какие это многочисленные конкурирующие организации? Куда пойти человеку, который потерял работу и не может её быстро найти? В курьеры, промоутеры и т.д. ? Человек которому нужно содержать семью, первым делом идёт в таксисты, особенно если есть своя машина. Выбора практически нет.

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

Просто будем честны - все хотят зарабатывать как можно больше. Таксисты тоже. И почему-то они видят причину своего "недостаточного" заработка в злом Яндексе, хотя несколько таксистов, у которых я спрашивал сколько зарабатывают, говорили, что "сотка получается". По мне так очень неплохо за низкоквалифицированную работу.

Насчет 70-100 рублей по пробкам. Собственно вот официальные условия:

Минимальная стоимость (включено 6 мин и 3 км) — 139 ₽

Далее по городу — не более 8 ₽/км,не более 10 ₽/мин

Т.е. в пробке включится таймер времени. Так в чём недовольство таксистов?

Спасибо за корректный ответ, за попытку разобраться.
Не только работники хотят побольше заработать, но и работодатель тоже. Яндекс-такси и прочие агрегаторы, которые ещё остались (про Сити Мобил я забыл, честно говоря, а остальные типа Гетт - мне кажется у них мало заказов и они работают через тот же Яндекс) периодически "крутят ручки", изменяя условия оплаты и вылезают всякие казусы: то невыгодно везти на дальние расстояния, то на ближние, и в любом случае таксисты не любят соваться в пробки или везти куда-нибудь за город, откуда потом не найдёшь заказ обратно (а значит теряешь время на ожидании или деньги на пустом пробеге). Про моральное состояние таксистов в таком случае я уже писал выше. В Москве получают сотку - хорошо, а в провинции по-разному. Например водитель из Владивостока пишет, что без выполнения условий акции у него выходит 2000 в день, а с выполнением - 5000. А чтобы выполнить условия - сделать определённое количество поездок - надо тратить на поездку в среднем 24 минуты (вместе с подачей, ожиданием, погрузкой, пробками и проч), и поэтому водители просто сбрасывают более длительные поездки. Это при условии быть за рулём 16 часов без перерыва, можете представить. И не бывает чтобы каждый день был хороший, это разве что в Мск и Спб.
Просто эффективные менеджеры, куда бы они не дотянулись, делают хуже. Яндекс был передовой ИТ-компанией, а сейчас пытается монетизировать всё. Вот и такси, если ставить во главу абсолютную прибыль агрегатора, становится вместо приемлемого всем сервиса набором условностей. Водилам не выгодно (читай - убыточно) совершать поездки по определённым направлениям, и они просто скидывают на пассажиров: https://ngs.ru/text/transport/2021/08/16/70074224/
Я такое свинство осуждаю, но я и не был в ситуации, когда ты например должен заработать за день несколько тысяч только для того, чтобы заплатить за машину, т.е. рискуешь прокататься весь день и остаться в нуле, а то и в минусе.

Яндекс был передовой ИТ-компанией, а сейчас пытается монетизировать всё. Вот и такси, если ставить во главу абсолютную прибыль агрегатора, становится вместо приемлемого всем сервиса набором условностей. Водилам не выгодно (читай - убыточно) совершать поездки по определённым направлениям

По вашей ссылке таксисты напрямую говорят, что хотят ездить только туда, где они могут хорошо заработать (и ещё желательно в обе стороны). А всякое невыгодное брать не хотят и поэтому хитрят. И смотрите к чему такое может привести: я заказываю такси и хочу ехать на непопулярное направление и... не могу уехать, никто не соглашается. Разве это правильно?

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

Таксист вообще не должен видеть куда мне нужно ехать, это не его дело. Его дело брать ближайший заказ. Только так будет работать вся система нормально. Только так клиенты будут пользоваться, зная, что машина будет через 5-10 минут после вызова. Так можно прогнозировать своё время и дела.
А если таксисты будут выбирать везти меня или нет - так сервис стухнет. Клиенту не нужен сервис, где он не может уехать.

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

Полагаю в Яндексе тоже могут ошибаться в какой-то аналитике и выводах, но аналитику точно делают и тарифы устанавливаются не случайно. И это делается для повышения заработка агрегатора и водителей, и для удобства клиентов. Возможно не всегда правильно и корректно и часто не выгодно для какой-то стороны. Думаете клиенту интересно видеть повышение тарифа в 2 раза из-за "высокого спроса"? Думаете клиенту уезжая из гостей и задержавшись немного с прощанием приятно видеть, как резко повысилась стоимость в полночь, хотя вот ещё 5 минут назад цена другая была?

Агрегатор берёт процент, значит таксистам достается то же процентное соотношение. Может быть из-за каких-то заказов в кокретные дни у таксиста и не получается выполнить "акцию", но она не сделана, чтобы её выполнять каждый день. Я абсолютно уверен, что если просто брать все заказы подряд, то в среднем за месяц всё будет нормально. А если выбирать заказы, отказываться и прятаться по кустам - то вот потом и получаются жалобы, что мало заработать получается.

Я посмотрел ваши другие комментарии, и я вижу что вы адекватный человек. Вы прочитали материал по моей ссылке, это тоже показатель ваших вложений. После этого мне следовало бы пожать вам руку и разойтись, ведь у двоих адекватных людей мнение может не совпадать полностью, но они договорятся. А о чём спорим?
Вы пишете о "плохих" таксистах, я о "плохом" агрегаторе. Я вот подумал, что реально плохих таксистов ну пусть 10%, тех, кому наплевать на клиента. И тупых ситуаций тоже не очень много. А процентов на 80-90 система работает. Вы пишете, что таксисту вообще не надо знать куда едут, не его это дело. Я так же считаю, и это бы работало, если таксист сидит на зарплате, и его цель - служить обществу. Приедет он в таксопарк грязный и без плана, его спросят почему так - он скажет что отвозил старушку в деревню и там ещё дом искали и грязь месили, а ему скажут "ну ничего, зато хорошее дело сделал". А в реальности с агрегатором он заедет в грязь, сожгёт бензин, обратно пустой (тут ещё не рассматриваем всякий треш, а то некоторым надо ездить по ...ням и закладки искать), и всё это по цене - 8 рублей за километр, т.е. реально в минус (про доплату за время вы писали, но по-моему не всегда такое бывает). Вы бы поехали на таких условиях? Т.е. в нашей реальности таксисту надо делать план, отбивать аренду и чтобы себе осталось. И тут оказывается что агрегатор - кака: не даёт увидеть маршрут поездки (хотя если бы таксист был как в советском фильме, в фуражке и с зелёным огоньком, то должен ехать хоть в Магадан - по цене счётчика), не даёт отказаться (а он и не откажется, если предложить ему достойную оплату), и споры обычно решаются диспетчером не в пользу таксиста. Так что идея сэкономить и всё оптимизировать, что в такси, что в медицине, что в городском хозяйстве - это тупиковый путь.

и это бы работало, если таксист сидит на зарплате

Нужно смотреть сколько он зарабатывает в среднем, а не смотреть только на выгодные заказы. Вот это "в среднем" и будет его "зарплата", даже если он в том числе иногда выполняет невыгодные заказы. Только на это и нужно смотреть!

с агрегатором он заедет в грязь, сожгёт бензин, обратно пустой.... т.е. реально в минус

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

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

Вот сейчас я вызываю такси и знаю, что через 6-10 минут у меня будет машина. А если таксисты начнут выбирать ехать или нет, то тогда я не уверен приедет ли ко мне машина, может мне сутки ждать придётся? Не могу прогнозировать свои дела и время. Я тогда буду выбирать более прогнозируемый для меня транспорт, каршеринг возьму, на общественном транспорте поеду, или даже вернётся тема с ловлей попутки "на грача", где уже не стоит вопрос о "сервисе". Но там и я уже смогу торговаться, а не соглашаться на двойную стоимость просто потому, что сейчас "повышенный спрос".

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

маленький отвлеченный пример и ещё текст

Я вот раньше мебель продавал. Конечно же мне нравилось продавать большие заказы, например комплект мягкой мебели за 130.000. Но также были и мелкие заказы, какой-нибудь стул за 3000, на котором я ничего не зарабатывал в итоге из-за бесплатной доставки. Но это часть игры. И нужно смотреть на результат деятельности за месяц.
А не отказывать клиенту, если у него маленький и не выгодный мне заказ.
Ведь этот клиент легко мог заказать сегодня убыточный для меня стул, а через месяц диван и два кресла.

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

Если бы всё было плохо, то, полагаю, что таксисты бы массово переставали работать, аналитики Яндекса на это отреагировали бы, снизился бы процент или ещё что. А если всё так, значит оно как бы саморегулируется и балансирует. Просто рынок. И недовольные будут везде и всегда.

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

А также недавно был жутко недоволен Яндекс.драйвом, когда доехал всего за 400р. в аэропорт, а там с меня сняли ещё денег "до минимальной стоимости в эту зону" (нововведение, о котором я не знал), получилось в итоге 1150 рублей, что равносильно стоимости такси. Это неправильно, когда каршеринг в итоге выходит по стоимости равносилен такси. Тут яндекса недоработка, это конечно же уменьшило количество машин стоящих на парковке в аэропорту, но... думаю уменьшать их нужно было уменьшением тарифов для тех кто их забирает из порта, тогда бы машины расходились. А теперь я сто раз подумаю брать ли мне каршеринг, если такси в ту же стоимость выходит, а комфорт совсем другой, не нужно фотографировать грязные салоны и искать "битости".

Проблема, которая описана по ссылке связана не только с какими-то "эксклюзивными" отдаленными заказами. Я уже несколько раз попадал в ситуацию, когда ты едешь в повышенный спрос до точки и обратно, а водители отменяют заказ один за другим. Т.е. ценник адекватный для водителя, я готов его платить, работы на 20 минут, рейтинг у меня отличный, но уехать я не могу.

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

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

Куда пойти человеку, который потерял работу и не может её быстро найти? В курьеры, промоутеры и т.д. ? Человек которому нужно содержать семью, первым делом идёт в таксисты, особенно если есть своя машина.

Продать машину и искать нормальную работу. В таксисты идут те, кто не умеет (не хочет, не хочет уметь) зарабатывать другим способом.

Я оказался плохим программистом. Когда уволили с одного места, пытался устроиться в несколько других, но всё глухо. Такси поддерживало меня на плаву 7 месяцев, пока не нашёл работу по специальности. Какой-никакой, а доход каждый день, после бензина оставалось на еду. Если бы продал машину, то куда мне идти, грузчиком в магазин? Даже электриком или админом без опыта - возьмут в госучреждение за копейки. Нормальную работу нашёл совсем не сразу. И по факту если бы продал машину, но купить другую уже не смог бы.
Так что ваши слова про людей, которые не хотят работать, красивые, но реальность не для всех такова.

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

Но при этом сами правила могут быть гибкими, можно делать конструкции вида

if state.status == 'pending' and current_event.key == 'new_driver_found':
  state.status = 'assigning'
  state.current_driver_id = event.driver_id

Где state - текущее состояние автомата, current_event - событие в логе, которые мы обрабатываем

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

if state.status == 'assigning' and current_event.key == 'driver_accepted_offer' and state.current_driver_id == current_event.driver_id:
  state.status = 'assigned'

Вот внутри обработчика каждого события можно ходить во внешние ручки, у нас есть возможность разделить обработчик на независимые стадии, внутри обработчика таким образом получается свое небольшое состояние, которое полностью динамическое (и не персистентное). Это состояние соответственно живет до конца обработки события и в следующем событии уже не будет видно

Интересно. Я правильно понял, что есть DSL для как бы автогенерации грубых обработчиков, но можно писать ручками и более умные, которые могут ходить в базу и т. д.?

Пока что мы придерживались концепции, что в процессинге простые обработчики, которые могут ходить во внешние сервисы - по http или через очередь сообщений - в процессе обработки событий. А уже внутри сервисов какая-то сложная бизенс-логика. Такая модель помогает лучше прогнозировать необходимые ресурсы для заданного уровня нагрузки, упрощает devops самого процессинга. Но есть и проблемы - нужно заводить отдельный микросервис для каждой задачи, даже если она уровня - положи что-то в базу. Ну и хождений по сети больше становится. Поэтому мы в целом думаем, как бы нам сделать поддержку сложных обработчиков, и не сломать изоляцию и эксплуатацию)

Мне в этом контексте нравится идея классических экспертных систем.

У экспертной системы есть факты и есть правила. Любое изменение факта является триггером для применения связанных с этим типом фактов правил. Каждое применение правила порождает или изменяет какой-то из фактов, что в свою очередь может снова спровоцировать срабатывание нового правила и так далее. При этом правила могут быть как атомарными (если X => Y), так и составными (если X и Z => Y) — такую возможность должен поддерживать ваш DSL.

К экспертной системе вы можете подключать внешних агентов, которые будут:

  1. Вводить в систему новые факты или изменения существующих.

  2. Реагировать на объявление новых фактов или изменения старых какими-то действиями вовне ЭС, например вызовами каких-то функций-обработчиков.

С таким подходом вы можете изолировать друг от друга 3 разных части обработки стейтов: программный код, код, описывающий правила, и факты как сущности. Но главное — становятся доступны главные киллер-фичи ЭС, например возможность оптимизировать число операций за счет "упреждающих" проходов по графу правил или получить исчерпывающий отчет о причинах каждого принятого системой решения (такие отчеты можно потом логировать, что упрощает дебаг).

При этом система выглядит практически бесконечно масштабируемой. Код вместе с правилами можно скопировать на любое число инстансов. Остаются факты, набор которых должен поддерживаться в актуальном состоянии на всех инстансах ЭС. Хорошая новость: факт — это обычное K-V (у него всегда есть идентификатор и значение), а значит можно эффективно использовать нереляционное хранилище в качестве централизованного источника истины для фактов. Остается задача, как сделать так, чтобы каждый новый входной триггер провоцировал срабатывание правил строго на одном инстансе ЭС, но это уже дело техники.

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

Ох, что-то мне это не кажется таким простым делом, может быть вы знаете какой-то секрет?:-))

Проблемы, с которыми мы сталкивались - инстанс может внезапно вылететь, нужно уметь это обрабатыавть, или может зависнуть на середине операции, а потом вернуться через полчаса; а ещё бывает brain split

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

Как действовать, если сервис водит водителя не по той дороге? У меня есть одно место, куда я часто вызываю такси, где-то в начале года машины стали за 150 метров до точки по прямой дороге заворачивать и делать крюк в 1.5 км по дворам и тротуарам.

Когда делали выбор в пользу разработки собственной машины состояний (конечного автомата), почему не взяли готовую библиотеку, например, transitions? Если не секрет какую СУБД используете для сериализации событий?

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

Для сериализации используем postgres, хотим ещё попробовать YandexDatabase, потому что pg сложно масштабрировать горизонально

да, тоже хотим попробовать Бессерверный режим в YDB

А на чем, собственно, написан у вас бэкэнд такси и лавки?

В основном плюсы и питон

Sign up to leave a comment.