Яндекс.Метрика

    Ни о чём

    Стартап: подбор тарифа для сотового

       Хочу рассказать про один стартап – www.smarttarif.ru – и надеюсь на хорошую критику, т.к. она сейчас очень нам нужна!

    image   Меня всегда мучил вопрос, какой самый выгодный тариф для меня. Сотовые операторы предлагают калькуляторы для расчета наиболее подходящего тарифа, но они основаны на мнение абонента, т.е. на том, как я думаю, что использую мобильный. А меня всегда вводили в тоскливый ступор вопросы типа «сколько процентов звонков у меня короче минуты» или «сколько, в среднем, секунд я звоню на городские номера».
       Таким образом, назрела идея подбирать тариф не на догадках, а на реальной статистике звонков (детализации). Ее можно получить у сотового оператора. У кого-то даже бесплатно.

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

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

       Немного технических деталей:
       Сам проект написан на perl'e на основе CGI::Application с использованием шаблонизатора template toolkit. Подключали через модуль CGI::Application::Plugin::TT. Это помогло разделить фронты работы по дизайну и по программированию. TT вообще оказалось удобной штукой, но это тема отдельной статьи. Всякие интерфейсные красивости реализовывались на jQuery.

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

       В результате у нас образовалась структура из каталогов «город, регион»/«оператор», и в каждом таком каталоге размещены отдельные файлы, которые отвечают за обсчет своего тарифа.
       При старте обсчета тарифов все каталоги обходятся и каждый файл подключается через require нехитрым кодом: @z= glob("tarifs/*/*/*.pm"); for (@z) { eval { require $_;}; } (eval нужен, чтобы все не навернулось, если в какой-нибудь файл вдруг прокрадется синтаксическая ошибка. Сейчас соответствующий тариф просто не обсчитается. )

    image   Одной из «фишек» сервиса является подбор самых выгодных опций для тарифов. Мне всегда было трудно подобрать, какой именно телефон выгоднее назначить «любимым», и часто не сразу понятно, будет ли вообще какая-то экономия от «любимости» какого-нибудь телефона.
       Для оценки выгодности опции мы сравниваем, сколько будут затраты по детализации в случаях включения опции. Если опции взаимоисключающие, используется та, где выгода максимальна.
       Самый большой сложностью был обсчет сумм экономий при пересечении различных экономящих опций. Например, если бонус за лояльность дает экономию, скажем, 150 рублей в месяц, а один любимый номер экономит 200 рублей, то при одновременном подключении этих скидок суммарная экономия будет чуть меньше, чем просто 200+150 из-за того, что с помощью бонуса звонки на любимый номер то же будет меньше денег стоить, и соответственно меньше получится сумма экономия. В общем, не просто.

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

    рейтинг тарифов   Пару слов о расчете рейтинга тарифов: для каждой новой обработанной детализации каждому тарифу даются балы от 0 до -X в зависимости от места в рейтинге выгодности тарифа. (Х — число обсчитанных тарифов ). Эти баллы для каждого тарифа суммируются, и окончательный уровень рейтинга вычисляется, как