Зачем Яндекс Go создал отдельный язык для расчёта стоимости поездок

Зачем Яндекс Go создал отдельный язык для расчёта стоимости поездок

Зачем Яндекс Go создал отдельный язык для расчёта стоимости поездок

Цена поездки в Яндекс Go — это не расстояние, умноженное на минуты и километры. В расчёт вмешиваются геозоны, спрос, скидки, платные дороги, дополнительные остановки и требования вроде перевозки кота, велосипеда или лыж. Чтобы управлять этим хозяйством без бесконечных деплоев, разработчики вынесли алгоритм ценообразования из кода сервиса в собственный язык.

Как объяснили разработчики в статье на Хабре, прайсинг работает не только при заказе машины.

Он пересчитывает стоимость при смене маршрута или способа оплаты, завершении поездки, обращении в поддержку и проверке данных аналитиками. Цена при этом может быть фиксированной, интервальной или считаться по таксометру.

 

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

 

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

Поэтому Яндекс разработал собственный DSL. В нём есть условия, функции, неизменяемые значения и fold вместо циклов. Правила собираются в последовательную цепочку: каждое преобразование получает текущую цену и параметры, а возвращает новый результат с метаданными. Грамматику описали через ANTLR 4, а верификатор Z3 проверяет, что программа не выдаст некорректную цену.

 

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

 

В итоге прайсинг превратился в отдельную платформу, которой уже пользуются Такси, Доставка и сервис зарядки электромобилей.

ФНС увидит, с какого устройства переводили цифровые рубли

ФНС сможет запрашивать не только сумму и получателя платежа в цифровых рублях, но и его технический след. В выписки попадут IP- и MAC-адреса, номер телефона, данные сим-карты или другой идентификатор устройства. Новые правила заработают не ранее 1 июля 2027 года.

Кроме цифрового хвоста, выписка будет содержать время и назначение платежа, а также сведения об отправителе и получателе, сообщают «Известия».

Это позволит сопоставлять разные счета и выяснять, например, не управлялись ли несколько формально независимых кошельков с одного смартфона.

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

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

Технические сведения помогут искать скрытые доходы, фиктивные сделки, чужие кошельки и цепочки связанных переводов. Если поступления на цифровой счёт сильно разойдутся с задекларированными доходами, у налоговой могут возникнуть дополнительные вопросы. Доказанная неуплата грозит доначислениями, пенями и штрафами.

При этом один IP-адрес ещё не превращает человека в нарушителя. Им могут пользоваться сотрудники офиса, посетители кафе или абоненты одного оператора. Телефон бывает семейным, сим-карту можно переоформить, MAC-адрес — изменить, а доступ к кошельку способен получить мошенник.

Поэтому технический след должен рассматриваться вместе со временем операций, аутентификацией, геолокацией и характером платежей.

RSS: Новости на портале Anti-Malware.ru