Всем привет! Хочу поделиться корпоративным телефонным справочником с картой офиса. Удобен для ориентирования в большой организации. Особенно будет полезен новым сотрудникам, которые еще не запомнили кто из коллег где сидит.
Источником контактов для справочника служит Active Directory, контакты из которой импортируются в базу MySQL, в дальнейшем справочик оперирует с базой MySQL.
Внутри справочника контакты делятся на два типа:
- Импортированные из AD
- Локальные
Импортированные контакты нельзя редактировать, их можно только скрывать из списка и указывать расположение на карте. Все изменения нужно производить в AD, после чего провести повторную синхронизацию, при которой будут добавлены новые и обновлены существующие записи.
Функциональные возможности:
- Импорт контактов и фото из AD
- Показать/скрыть любой контакт
- Добавлять, редактировать и удалять локальные контакты
- Указать расположение сотрудника на схеме офиса
Карты хранятся в файлах templ/map[1-5].png
Поиск сотрудника на карте:
Демо (на бесплатном хостинге может отвалиться в любой момент): http://pfzim.rf.gd/pb/
Логин: admin
Пароль: admin
Похожие проекты:
> https://github.com/tdvsdv/eight
> https://habrahabr.ru/post/251955/
> https://habrahabr.ru/company/pt/blog/149481/
P.S. Интересно услышать замечания и подсказки по улучшению дизайна и кода
UPD: Спасибо за наполнение справочника после его полной очистки неизвестным! Было очень неприятно увидеть его пустым, когда набивал справочник вручную с телефона в транспорте.
Комментарии (27)
BigTenis
13.05.2017 16:24У нас в компании такой есть, только он не обновлялся года 3-4.
deBarb
14.05.2017 13:01У нас тоже.В этом-то и проблема таких справочников — ими никто не хочет заниматься и обновлять.У меня это просто xls, который я сам обновляю раз в декаду. Т.к. номера телефонов офисные и корпоративные не меняются, а переходят от специалиста к специалисту в случае увольнения/приёма — этого обычно хватает, да и актуальность не слишком страдает.
vp7
13.05.2017 21:08Идея отличная, особенно если помещений много и где-то есть база с точным расположением сотрудников.
Я в своё время делал приложение для Android — в него подгружалась адресная книга (сотовый + стационарный телефоны) и при входящих/исходящих вызовах на экране отображалась мини-карточка сотрудника (ФИО + должность). Очень помогает в случае, когда тебе может позвонить почти кто угодно. И сразу понятно откуда звонок — по работе или просто кто-то со стороны.
Andylloyds
14.05.2017 13:22За наполнение — всегда пожалуйста :)
Накидал python-скрипт на коленке, могу скинуть.
Не уверен, но возможно через Termux можно его и на телефоне запустить — чтобы вручную в следующий раз не набивать)
Кстати, неплохо было бы приделать пагинацию ;)
antirek
14.05.2017 14:28С одной стороны — как и у других представленных ранее проектов — вау, круто.
Но с другой — это плохо масштабируемо и вряд ли может быть повторно быть использовано. Мало того что у всех по разному в ldap живут данные, так и хочется в свою систему как-то интегрировать ваше решение, а не делать еще один корпоративный ресурс, о котором коллектив скажет «вау, круто, до свидания».
Сделал бы приложение, которое принимает определенный формат данных на вход для отображения данных. Данные сохраняются в приложении. В этот формат данные можно сконвертить и из ldap, и других систем. Получать данные и конвертить можно и по запросу или регулярным обновлением.
Затем разделил бы управление данными и отображение этих данных. Отображение данных можно и в рамках приложения и встраивать в виде виджета в сторонние веб-приложения, а код один и тот же в обоих случаях.
Еще у контакта задавать что-то типа room (помещения), на картинке отмечать прямоугольник этого помещения, и при отображении контакт сразу показывать в пределах этого помещения, ведь в целом необязательно знать где конкретно сидит контакт, главное найти нужную комнату. Хотя можно сделать список рабочих мест и уже их разметить на картинке-схеме, а у контакта указать рабочее место. А можно и скомбинировать ))
AslanKurbanov
14.05.2017 16:15Конечно, всё упирается в человека, который будет непосредственно добавлять/удалять сотрудников. Это скорее всего это будет какаянибудь девушка-оператор колл центра, секретарь и для нее это будет лишняя нагрузочка. Сначала она, как это бывает, поделает, а потом «забъёт». Или её переведут в другой отдел и надо будет обучать другого сотрудника.
За годы 'борьбы" с менеджерами я пришел к выводу, что самый доступный вариант с актуальными текстовыми данными — это обычный экселевский файл. Он лежит себе на корпоративном сервере в отдельной папочке и его можно скачать снаружи php-скриптом по фтп, например. Распарсить и вставить в базу. Либо отправить по почте на специальный адрес как аттачмент где скрипт его обработает по cron. Самое важное чтобы структура excel-файла не менялась, а так его легко редактировать.-любой справиться, даже охранник, и притом не нужен доступ в бизнес CRM-систему.pfzim
15.05.2017 00:56Обычно справочники наполняют секретари и сами ими пользуются при переводе звонков. Так что проблем с наполнением не встречал.
kucheriavij
14.05.2017 15:56Все круто, но карты лучше в вектор переделать, тогда инструмент будет более гибкий
SpiritOfVox
14.05.2017 22:48Очередной пример излишнего управления персоналом. Люди прекрасно справляются с задачей поиска нужного человека спрашивая у других людей. Не нужно делать огромных кабинетов в которых в одном углу не знают тех кто работает в другом и всё будет отлично. А если задача сотрудника принимать некие документы от других и это обязательно должно быть сделано на бумаге — организуйте такое место ближе к входу и повесьте плакат.
xRay
15.05.2017 00:09+1Как концепт нормально.
Имхо фотки сотрудников лишнее.
Про качество кода…
Используется свой велосипед от колес до руля. Из готового кода используется PHPMailer.
Зачем писать свой класс для работы с базой данных?
От функций json_escape и sql_escape я в осадок выпал.pfzim
15.05.2017 00:50Я не профессиональный программист. Пишу, как умею. Вы можете исправить мои недоработки, а я смогу проанализировать и учесть свои ошибки в будущем.
Какой класс порекомендуете взамен моего?pfzim
16.05.2017 07:07А в ответ тишина. Из этого можно сделать вывод, что хороший у меня велосипед. Легкий и быстрый, с который можно легко подняться по лестнице, если сломался грузовой лифт.
Мой класс минималистичен. Тончайшая обертка к php функциям. Рассчитан на конкретную задачу, а не универсальный монстр.
Про функции до сих пор не знаю, что ответить. Они также минималистичны. mysql_real_escape_string не использовал, потому что он требует установленного подключения к базе. Не смог понять какие она ещё символы экранирует в зависимости от кодировки. Ну, а json_encode не знаю почему не стал использовать. Она показалась мне более заточена под работу с массивами.
Хотелось бы получить пояснения к моим ошибкам, а не просто минусы.
AslanKurbanov
На каждой фирме, даже маленькой есть бумажка со списком телефонов, которую все время перепечатывают, привязать еще дни рождения, отпуска и получиться отличный сервис для офис менеджера. С турникета данные по приходу и уходу, зарплата, камера, мониторинг экрана сотрудника-мечта руководителя: «Я вижу что ты не работаешь!». И главное, чтобы людям в масках не попала эта информация.
Я бы еще подвязал печать корпоративных визитных карточек: из данных генерить заказ в типографию.
pfzim
С турникетов я в другой компании брал данные о нахождении сотрудников — в офисе/вне офиса и это был другой телефонный справочник. На текущем месте у меня нет доступа к турникетам, они в ведении безопасников.
Дни рождения планирую добавить. А реализацию с отпусками видел в одном из проектов, на которые приведены ссылки.
md_axel
И, все- таки, видеть статус человека «на территории» он или нет было бы полезно.
pfzim
Слишком много разновидностей СКУД, я не смогу для каждой из них добавить поддержку. Считаю, что кому требуется знать, где находится сотрудник, могут реализовать данный функционал сами. Я могу лишь подсказать по системам Parsec и Бастион.
Sleuthhound
Можно брать данные из АД о том залогинился сотрудник или нет. К примеру у нас все ПК автоматически выключаются в 22:00 и если утром сотрудник не залогинился в АД, то почти 100% значит, что его нет на работе.
md_axel
Как раз Parsec и подойдет :)
pfzim
А где показывать информацию о нахождении сотрудника?
В общую таблицу не хочу вставлять, чтобы не дергать СКУД по всем сотрудникам сразу.
md_axel
Цветом: красный не прошел турникет, зеленый — прошел