СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Специализированный софт для учета клиентов в компьютерных мастерских как альтернатива CRM в черновиках

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

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

В основе такого результата стояло желание не создавать софт на все случаи жизни и для всех, всем всё равно не угодить, а угодить максимально одному и только одному бизнесу. Поэтому и политика проекта совершенно иная чем у CRM. Рассматривать проект правильно НЕ как желание внедрить в ремонтный бизнес дополнительный способы взаимодействия с клиентами в виде каких-то новых инструментов, навязывая непривычные нововведения для реорганизации деятельности, а как помощь в структурировании и хранении данных, оставив привычный рабочий процесс каким он был, не отнимая ни у кого времени, а сокращая его.

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

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



Технические особенности проекта


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

Проект представляет из себя ведение рабочего процесса от контакта с клиентом до прощания с ним. Можно сказать от А до Я. Под ведением рабочего процесса подразумевается, что все клинты не будут находиться в общей куче, каждый заказ в которой помечен статусом или комментарием, а наоборот, все записи разделены по своему логическому отличию в рабочем процессе. Так кнопка «Заказы» превратилась в кнопку «Работа», нажав на которую получаем следующие отдельные друг от друга рабочие процессы:

1. Продажа клиенту товаров.
2. Сборка клиенту копьютера из комплектующих на заказ.

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

5. Оборудование принятое на ремонт и ожидающее своей очереди.
6. Оборудование принятое в работу, работы с которым сейчас ведутся.

10. Оборудование находится на диагностике
11. Оборудование ожидает запчасть
12. Оборудование находится на ремонте у вашего партнера, так как очень часто сервисы работают и с внештатными сотрудниками

7. Оборудование отремонтировано и ждет уведомления клиента о событии
8. Оборудование отремонтировано и ждет доставки его клиенту на дом
9. Работник поехал отвозить отремонтированное оборудование клиенту домой

13. Отказы клиентов от ремонта

*14. Касса. Заказы отмеченные отданными, по которым произведен расчет клиента за выполненные услуги, они уходят в отдельный пункт меню.

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

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

Форм несколько, они так же разделены по смыслу:

1. Форма добавления заказа на покупку оборудования
2. Форма добавления заказа на покупку и сборку компьютера из комплектующих
3. Форма добавления вызова к клиенту на дом
4. Форма добавления оборудования на ремонт, принесенного в офис клиентом

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

Итого получилось 6 кнопок:
+ Продажа
+ Сборка ПК
+ Вызов
+ Ремонт
Работа
Касса

Из списка заказов, кликнув на любой, происходит переход на страницу детального просмотра заказа. Это шестая функциональная страница. Она умеет всё остальное. Для этого данные выводятся не в виде текста, а хранятся прямо в форме. В этом тоже есть плюсы. Если отображать заказ текстом, для редактирования надо нажимать на кнопку «правка», потом попадать на другую страницу, там изменять, сохранять, возвращаться обратно. Реализовать нет проблем любую задачу, но тогда ухудшается восприятие информации, так как она поставляется двумя способами. Поэтому с целью повышения юзабилити и чтобы не привыкать к двойному отображению, карточка заказа представлена в виде заполненной формы, которую в любой момент можно подредактировать, сохранить или отправить в другой рабочий процесс. Тут же находятся и ссылки на печать соответствующих документов, если введены
данные, которые их формируют.

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

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

Для процедуры печати и редактирования документов был спроектирован специальный интерфейс. Нажимая на печать вы видите страницу разделенную на 4 прямоугольника. Два верхних поля с документами в формах и два нижних поля предпросмотра документов. Один документ доступен всегда как неизменяемый шаблон, другой вы *можете редактировать по своему усмотрению без каких либо ограничений в возможностях, так как документ проектируется не из бб-кодов, а пишется на HTML (Это удобно, но накладывает ограничения на редактирование шаблонов, запрещаяя выводить на печать чужие шаблоны. Директор маловероятно будет проводить xss атаку на своем сотруднике, пытаясь нанести ущерб своему же бизнесу, но тем не менее каждый может править только документы доступные ему одному. Признаем что проблему это привносит, но есть несложное решение.

После утверждения директором индивидуального шаблона документа, его можно просто разослать сотрудникам, которые скопирую/вставят и все будут счастливы и никого не взломают. Думаю проектирование индивидуальных документов с блэк-джеком и логотипами стоит того, чтобы его сохранили под своей учетной записью сотрудники. В итоге кликая из карточки заказа на печать того или иного документа, вы сразу видите 2 результата, получаете возможность редактировать что-то прям тут, и в еще один клик получаете один из двух документов на весь экран, чтобы собственно нажать ctrl+P. Подготовленный для печати документ реагирует на клик, отправляя вас на предыдущую страницу, это тоже важный момент юзабилити.

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

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

Особенности аутентификации и конфиденциальности информации


Система аутентификации незаурядная и имеет множество отличий от способов аутентификации, распространенных на широких просторах интернета. Основное отличие заключается в том, что было решено усиленно защищать данные не только штатными средствами, но и устранить возможность «прошаренными» лицами получить доступ к закрытой от них информации. Это скорее мера предосторожности от проделок недобросовестных сотрудников, ведь по слухам такое поведение людей в жизни имеет место.

Краткое устройство способов получения и прекращения доступа к программе:

1. Полный уход от передачи ваших логинов и паролей по сети, и реализация альтернативного способа доказать что вы это вы. Открыто по сети летит только e-mail, и только один раз при регистрации. Пароль и пин-код передаются в виде хэшей с солью, формирующиеся перед отправкой формы на клиенте. Никаких ограничений на содержание пароля нет. С одной стороны это нехорошо, так как можно зарегистрироваться с паролем «1», с другой стороны отсутствие ограничений дает полную свободу при вводе данных и не парит сообщениями типа «В пароле должны быть заглавные буквы, ...».
Технически заложенная невозможность узнать какой вы вводите пароль, не дает сделать какие-то выводы о вашем выборе, хоть стихотворение Есенина впишите, это ваше личное дело.

2. Запрет всем браузерам сохранять вводимые вами данные, с целью не дать Вам случайно совершить слив информации о пароле той железяке, на которой осуществляется вход в закрытые разделы софта. Осуществляется это просто, у поля ввода пароля атрибут «type» имеет значение толкьо «text», а не «password». Эта мера запрещает браузеру запоминать пароль до его разрушения. При этом имя поля при каждой авторизации имеет разное значение в виде хэша,
поэтому даже насильное изменение типа поля и сохранение в браузере пароля не даст нужного вам результата, так как в следующий раз сохраненные браузером данные подставлены всё равно не будут.

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

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

5. Сокрытие от всех других пользователей программы наличия в базе Вашей учётной записи на таких страницах, как регистрация и восстановление пароля. Никто не «пробьет» зарегистрированы вы или нет, даже зная Ваш e-mail. При регистрации хоть есть e-mail в базе, хоть нет, ответная реакция сайта одна: «Инструкции отправлены на почту». При авторизации, система так же не сообщает ничего кроме: «Пара логин/пароль не верны».

6. Любой зарегистрировавшийся получает статус директора. После чего он может создавать филиалы и/или приглашать сотрудников по e-mail. Приглашения не отправляются на почту приглашенному, просто записывается информация о приглашенном участнике в БД. И когда приглашенный проходит процедуру регистрации, ему предлагается 2 варианта регистрации, зарегистрироваться как директор или как сотруднику по приглашению. У приглашенного сотрудника при регистрации все поля уже заполнены введенными директором данными, остается лишь нажать кнопку «Далее». После нажатия сотрудник сразу получает доступ к разрешенному ему филиалу и спискам заказов. Филиалами и приглашениями сотрудникам управляет, и видит их только директор.

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

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

Справочники


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

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

Касса


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

Планы на будущее


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

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

Плюсы и минусы использования



Минусы

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

Плюсы

1. Простота использования, работать с программой не сложнее пользования сайтом «одноклассники», следовательно надобности в обучении работе с программой нет.

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

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

Залил программу на сервер, можно посмотреть тут ovz1.89515005002.1l0r1.vps.myjino.ru. Домен не покупал, с названием не определился, вариантов море, и на латинице и на кириллице. В случае надобности такие вопросы решаются за несколько часов, просто залил на обычный хостинг, чтобы можно было поклацать вживую. Буду рад критике, пожеланиям, советам, что доработать, какую функциональность внедрить. Мне важно любое мнение, без внимания не останется ничего.

Важное замечание. Из-за отсутствия доменного имени, письмо со ссылкой подтверждения регистрации не доходит до ящиков на gmail.com, сейчас изучаю этот вопрос, решу как можно скорее.
* — шаблоны документов временно не сохраняются, так как практически перед обзором было решено изменить шаблоны из bb-кодов на html шаблоны.

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

P.S. Обнуляю БД, и выкладываю статью. С этого момента все данные сохраняются и будут доступны на доменном имени второго уровня после покупки, как только определюсь с названием.

Технические характеристики


Программа разрабатывалась чтобы «летать».
Язык программирования — PHP
СУБД — MySQL
Общий вес исходников — 565,8 КБ в 19 файлах
Стили — 4,6 Кб
Скрипты javascript — 7,3 Кб в 3 файлах
Графика — 22,8 КБ в 10 файлах

Скриншоты


Изменение статуса заказа зависит от текущего статуса, а заказ перевести можно только в тот раздел, который соответствует логике процесса ремонта.


Ведется журнал действий с заказом, в который записывается кто из сотрудников в какое время и что делал.


Для приема заказа на покупку компьютера есть специальная удобная форма.

комментарии (3)

0
Showvars ,   * (был изменён)

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


Про саму разработку. Если честно, имея свой бизнес по ремонту/сборки/продажи компьютеров, я бы вашу CRM не купил бы, по крайней мере в том виде, в каком она есть сейчас. Но это мое личное мнение, имейте в виду.

+1
nki ,  
А что именно останавливает вас от использования подобного продукта?
0
Demon_i ,  
Насколько я понимаю нигде нет привязки железа к клиенту. Пользуемся сторонним софтом и там такой-же подход: «сделал заказ и забыл» — очень не удобен. Куда интереснее иерархия Клиент -> Техника -> Заказы. Пришел клиент. Спросили ФИО/Тел. Открылся список его техники и сразу можно гянуть, что с ней делали раньше. Ну или добавлять новую. К сожалению из готового ПО так и не удалось найти ничего с подобным функционалом.