Как я делал площадку для торгов локального значения

27 Июн
2012

В один прекрасный день вызвало к себе начальство и сказало, что надо как-то «разрулить» права доступа на файл Excel: но не просто одним дать возможность редактировать все, а другим только отдельные части, так еще чтобы изменения одних пользователей не были доступны для просмотр других. По изначальному замыслу менеджер по транспорту нашей организации должен был заносить туда заявки на перевозки на следующей день, потом это файл выкладывался в общедоступное место, а представители транспортно-экспедиционных компаний (ТЭК) должны там оставлять свои предложения. Но либо я не силен в Excel, либо такое делать в экселе не комильфо. В тот момент я, как раз, начал изучения Ruby on Rails и вот решился предложить им реализовать это все в вебе. После того как стало известно, что подобной системой пользуются нашими прямые конкуренты уже сомнений не было — надо делать. А да, совсем забыл, кто-то из ТЭК пожаловался учредителям, что все заявки раздаются за откаты, т.о. данная реализация позволяла сделать процесс торгов прозрачным для контроля (раньше распределения заявок в большей степени происходила по телефону).

На момент постановки задачи я успел почти закончить тьюториал Марка Хартли. Однако в нем был пример с сервисом аля Твиттер, и это было не совсем, то что нужно. Но потом пришла мысль: почему бы не рассматривать заявку на перевозку, как аналог сообщения из тьюториала, а ставки ТЭКов, как комментарии (конечно, ставки потом реализовал как изменения одного поля, но идея, с такой аналогией мне помогла двинутся дальше).

Началась работа. Подсистемы авторизации и работы с пользователям взял в чистом виде из учебника. Потом начал реализовывать главный объект — заявку на перевозку. Большую сложность на начальном этапу вызвало разграничения прав — ибо пользователи нашей компании могли редактировать все поля кроме ставки ТЭКа и текущего лидера торгов, а пользователи от перевозчиков по сути могли только менять текущую цены заявки. Из-за этого ввел по-мимо администратора пользователя типа менеджер. Что еще занимательно было с заявками:

1. Торги должны были проходить в определенно время с 14:00 до 15:00 (теперь уже сократили на 30 минут, по просьбам ТЭКов)
2. Отказные или не разобранные заявки должны быть активный и после закрытия торгов.
3. После 17:00 часов ТЭК уже не должен сам отказывать от ставки — с начала должен запросить отказ, а наш менеджер подтвердить отказ.

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

Далее были добавлены: справочник клиентов (на кого идет поставка), справочник складов клиентов (по сути это города, в которые надо ехать), для складов добавил таблицу городов.

При самом старте пробных торгов встал вопрос: кто будет данные забивать в системы? Все привыкли к своим своим реестрам в Excel и уходить от этого не хотят. Не долго думая добавил загрузку из csv.

Запустил первые тестовые торги. И здесь началось — ошибки за ошибками. Первым моим серьезным промахом было разворачивания продакшина на Sqlite (да многие будут смеяться, но это мой первый опыт с вебом, и думал что 10 пользователей и на нем потянет), лайт не справился и с 10 пользователями. Как многие догадались — перевел продакшен на PostgreSql.

Далее по соглашения с ТЭКами сказали реализовать возможность забирать заявки без торгов если первой же ставкой перевозчик сделает скидку на 15%. При реализации данной функции забыл сделать снятия заявку с торгов — я думал перевозчики меня порвут, они были очень не довольны, когда от их ставки со скидкой 15% цена пошла еще вниз.

После исправления этой проблемы 15% больших проблем не было. А нет: попросили отображать на сайте часы сервера — ну вроде ничего сложно, написал роут, аяксом обработку запроса и ответа, в девелопере все работало, начал сливать изменения на сервер, а том ошибка прекомпиляции ресурсов. И дернуло меня удалить те файлы ресурсов, которые были до этого — все javascript-скрипты у меня ушли в небытье… В этот день торги пришлось отменить. Полтора дня ушло на то чтобы вернуть к скрипты к жизни (хотя сейчас другая ошибка не дает вносить новые изменения в ресурсы, пока не знаю как ее решить).

Так вот, к чем я затеял описания этого процесса — такая форма мини аукционов, способен помочь снизить затраты предприятия (за неделю использования удалось сэкономить от базовых тарифов примерно 300 тыс. р.), при этом расходов на разработку минимум, развернуто это все сейчас на стареньком офисном компьютере.

image
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх