Евгений Сайты › Peppers Сбер ID
Сайты, SEO и GEO, реклама, чат-боты, ИИ и дизайн | Москва
Рейтинг
9 371
№ 111 в каталоге
Отзывы
Профессионализм
9/10
Коммуникация
9 /10
Город
Москва
Опыт работы
11 лет
На сайте с
2016 года
Юридический статус
Самозанятый
Freelance.Boutique
Премиум-сервис для лучших исполнителей

Внутренний сервис учёта для часовой мастерской в Ереване: приём часов, квитанции и статусы ремонта на Flask

Используемые навыки Flask Google App Engine Jinja2 SQLite SQL Lite

Описание

Для часовой мастерской в Ереване Евгений Росляков сделал внутренний сервис учёта: приём часов в ремонт, печатная квитанция, статусы, детали под заказ и история по каждому клиенту. Это небольшое веб-приложение на Flask. Сайты и веб-сервисы для малого бизнеса он делает с 2016 года как самозанятый, начинает работу с договора, а юридическим лицам передаёт закрывающие документы. Живёт в Москве, с заказчиками из других городов и стран работает удалённо.

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

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

Ещё одно условие: марку часов сервис не спрашивает. Мастеру важны тип механизма, состояние корпуса и стекла, фото при приёме и то, что просит сделать клиент.

Решение

Сервис написан на Flask. Экранов немного: приём, список заказов, карточка заказа, клиенты, детали под заказ, так что тяжёлый фреймворк ни к чему. Страницы и квитанции собираются из шаблонов Jinja2. Квитанция печатается одной кнопкой на обычном принтере: номер, дата приёма, тип механизма, состояние, обещанный срок, сумма. На обороте оставлено место для подписи клиента.

Заказ проходит статусы: принят, в работе, ждёт деталь, готов, выдан. Для детали под заказ мастер вводит ожидаемую дату. Когда она прошла, заказ подсвечивается на главной странице, и помнить об этом самому не нужно. Оплата записывается в той же карточке: аванс, остаток, способ.

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

Звонки заменила страница статуса. Клиент вводит номер квитанции и последние цифры телефона и видит этап ремонта. Больше на ней ничего нет, ни имён, ни адресов.

Данные хранятся в SQLite. Прежний программист мастерской называл эту базу «SQL Lite», и в разговорах она так и осталась. Движок один и тот же: база лежит в одном файле, и для нескольких сотен заказов в год этого хватает с запасом.

Развернул сервис на Google App Engine: свой сервер покупать и обновлять не нужно, а за мастерскую платформа берёт копейки. Есть подвох. Файловая система там не сохраняет данные между запусками, поэтому приложение работает в одном экземпляре, а файл базы после каждой записи уезжает в облачное хранилище, туда же складываются фото состояния. Каждую ночь делается отдельная копия базы с датой в названии. Восстановление из неё я проверил вместе с мастером.

Результат

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

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

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

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

Вместо тетради или таблицы нужен простой внутренний сервис? Опишите мне через freelance.ru, как у вас сейчас устроен приём заказов. Я предложу набор экранов и скажу, во что это выльется.

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Сайт GEONIKA SRF на 4 языках: научная методика геологоразведки, международное SEO и продвижение, оптимизация скорости страницы, HTML5 и CSS3
Сайт GEONIKA SRF на 4 языках: научная методика геологоразведки, международное SEO и продвижение, оптимизация скорости страницы, HTML5 и CSS3
20
Маркетинг и Продвижение Продвижение в интернете для веломагазина: флеш баннеры к сезонной распродаже — HTML5 для РСЯ и партнёров, GIF для рассылки
Продвижение в интернете для веломагазина: флеш баннеры к сезонной распродаже — HTML5 для РСЯ и партнёров, GIF для рассылки
21
Веб-разработка и IT Сайт коттеджного посёлка Татаринцево ИЖС на WordPress: своя тема и дизайн WordPress, генплан с ценами, картография маршрута, PHP
Сайт коттеджного посёлка Татаринцево ИЖС на WordPress: своя тема и дизайн WordPress, генплан с ценами, картография маршрута, PHP
80
Веб-разработка и IT Сайт GEONIKA SRF на 4 языках: научная методика геологоразведки, международное SEO и продвижение, оптимизация скорости страницы, HTML5 и CSS3
Сайт GEONIKA SRF на 4 языках: научная методика геологоразведки, международное SEO и продвижение, оптимизация скорости страницы, HTML5 и CSS3
49