Всем привет! Хочу поделиться корпоративным телефонным справочником с картой офиса. Удобен для ориентирования в большой организации. Особенно будет полезен новым сотрудникам, которые еще не запомнили кто из коллег где сидит.


screenshot


Источником контактов для справочника служит Active Directory, контакты из которой импортируются в базу MySQL, в дальнейшем справочик оперирует с базой MySQL.


Внутри справочника контакты делятся на два типа:


  • Импортированные из AD
  • Локальные

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


Функциональные возможности:


  • Импорт контактов и фото из AD
  • Показать/скрыть любой контакт
  • Добавлять, редактировать и удалять локальные контакты
  • Указать расположение сотрудника на схеме офиса

Карты хранятся в файлах templ/map[1-5].png


> Ссылка на проект


screenshot


Поиск сотрудника на карте:


screenshot


Демо (на бесплатном хостинге может отвалиться в любой момент): 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)


  1. AslanKurbanov
    13.05.2017 15:50

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


    1. pfzim
      13.05.2017 15:59

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


      1. md_axel
        14.05.2017 10:55

        И, все- таки, видеть статус человека «на территории» он или нет было бы полезно.


        1. pfzim
          14.05.2017 11:08

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


          1. Sleuthhound
            14.05.2017 17:12

            Можно брать данные из АД о том залогинился сотрудник или нет. К примеру у нас все ПК автоматически выключаются в 22:00 и если утром сотрудник не залогинился в АД, то почти 100% значит, что его нет на работе.


          1. md_axel
            15.05.2017 12:45

            Как раз Parsec и подойдет :)


            1. pfzim
              16.05.2017 14:49

              А где показывать информацию о нахождении сотрудника?
              В общую таблицу не хочу вставлять, чтобы не дергать СКУД по всем сотрудникам сразу.


              1. md_axel
                16.05.2017 15:12

                Цветом: красный не прошел турникет, зеленый — прошел


  1. BigTenis
    13.05.2017 16:24

    У нас в компании такой есть, только он не обновлялся года 3-4.


    1. deBarb
      14.05.2017 13:01

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


  1. vp7
    13.05.2017 21:08

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

    Я в своё время делал приложение для Android — в него подгружалась адресная книга (сотовый + стационарный телефоны) и при входящих/исходящих вызовах на экране отображалась мини-карточка сотрудника (ФИО + должность). Очень помогает в случае, когда тебе может позвонить почти кто угодно. И сразу понятно откуда звонок — по работе или просто кто-то со стороны.


  1. allburov
    14.05.2017 12:41

    Похожее решение было предложено тут, смотрели?


    https://m.habrahabr.ru/company/pt/blog/174943/


    1. pfzim
      14.05.2017 13:33

      Да, видел. Ссылка на их проект есть в статье. Но у них что-то сложное для развертывания. AutoCAD, слои… У меня все намного проще. Прописал настройки подключения, заменил картинки (можно сфотографиррвать план эвакуации) и готово.


  1. DarkDemon
    14.05.2017 13:13

    И тензодатчик под стул)


  1. StraNNicK
    14.05.2017 13:22
    +1

    Прикрутите к Битрикс-24 и продавайте через их магазин.
    #ябкупил


    1. pfzim
      14.05.2017 13:35

      Я Битрикс не умею, но спасибо за подсказку!


      1. StraNNicK
        14.05.2017 15:41

        Просто у них есть решение корп. портал и оно довольно широко используется (минимум в трёх конторах, с которыми я работал, оно было и это были IT-компании).
        Выглядит вот так:
        Корпоративный портал Битрикс

        все необходимые данные уже есть в БД, если интегрировать схему расположения, будет очень полезно.


  1. Andylloyds
    14.05.2017 13:22

    За наполнение — всегда пожалуйста :)
    Накидал python-скрипт на коленке, могу скинуть.
    Не уверен, но возможно через Termux можно его и на телефоне запустить — чтобы вручную в следующий раз не набивать)
    Кстати, неплохо было бы приделать пагинацию ;)


  1. antirek
    14.05.2017 14:28

    С одной стороны — как и у других представленных ранее проектов — вау, круто.
    Но с другой — это плохо масштабируемо и вряд ли может быть повторно быть использовано. Мало того что у всех по разному в ldap живут данные, так и хочется в свою систему как-то интегрировать ваше решение, а не делать еще один корпоративный ресурс, о котором коллектив скажет «вау, круто, до свидания».

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

    Еще у контакта задавать что-то типа room (помещения), на картинке отмечать прямоугольник этого помещения, и при отображении контакт сразу показывать в пределах этого помещения, ведь в целом необязательно знать где конкретно сидит контакт, главное найти нужную комнату. Хотя можно сделать список рабочих мест и уже их разметить на картинке-схеме, а у контакта указать рабочее место. А можно и скомбинировать ))


    1. AslanKurbanov
      14.05.2017 16:15

      Конечно, всё упирается в человека, который будет непосредственно добавлять/удалять сотрудников. Это скорее всего это будет какаянибудь девушка-оператор колл центра, секретарь и для нее это будет лишняя нагрузочка. Сначала она, как это бывает, поделает, а потом «забъёт». Или её переведут в другой отдел и надо будет обучать другого сотрудника.
      За годы 'борьбы" с менеджерами я пришел к выводу, что самый доступный вариант с актуальными текстовыми данными — это обычный экселевский файл. Он лежит себе на корпоративном сервере в отдельной папочке и его можно скачать снаружи php-скриптом по фтп, например. Распарсить и вставить в базу. Либо отправить по почте на специальный адрес как аттачмент где скрипт его обработает по cron. Самое важное чтобы структура excel-файла не менялась, а так его легко редактировать.-любой справиться, даже охранник, и притом не нужен доступ в бизнес CRM-систему.


      1. pfzim
        15.05.2017 00:56

        Обычно справочники наполняют секретари и сами ими пользуются при переводе звонков. Так что проблем с наполнением не встречал.


  1. VCheese
    14.05.2017 15:35

    У вас на плане размеры не все проставлены.


  1. kucheriavij
    14.05.2017 15:56

    Все круто, но карты лучше в вектор переделать, тогда инструмент будет более гибкий


  1. SpiritOfVox
    14.05.2017 22:48

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


  1. xRay
    15.05.2017 00:09
    +1

    Как концепт нормально.
    Имхо фотки сотрудников лишнее.

    Про качество кода…
    Используется свой велосипед от колес до руля. Из готового кода используется PHPMailer.
    Зачем писать свой класс для работы с базой данных?
    От функций json_escape и sql_escape я в осадок выпал.


    1. pfzim
      15.05.2017 00:50

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

      Какой класс порекомендуете взамен моего?


      1. pfzim
        16.05.2017 07:07

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

        Мой класс минималистичен. Тончайшая обертка к php функциям. Рассчитан на конкретную задачу, а не универсальный монстр.

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

        Хотелось бы получить пояснения к моим ошибкам, а не просто минусы.