DeskHub
CRM для работы с заявками IT-обслуживания
О проекте
DeskHub — современная CRM для обслуживания заявок (IT-поддержка, 1С, видеонаблюдение, ПК и сети). Система полностью написана на PHP 8 + MySQL/MariaDB без внешних зависимостей (без Composer) и закрывает весь цикл работы с заявкой: от создания и назначения исполнителя до контроля сроков, учёта времени и закрытия.
Проект развивался как замена старой CRM: при миграции переносятся пользователи (с хешами паролей), проекты, задачи, комментарии, вложения, API-ключи и организации. Особое внимание уделено безопасности: bcrypt-пароли, CSRF-токены, ограничение попыток входа по IP, двухфакторная аутентификация (TOTP) и полный аудит-журнал действий.
Возможности
- Заявки (задачи) — создание, редактирование, статусы, приоритеты, сроки, исполнители, ответственные и наблюдатели
- Канбан-доска — 5 колонок (Бэклог → Новая → В работе → На проверке → Закрыта) с drag&drop
- Учёт времени — ручное добавление и таймер «старт/стоп», итоги по задачам и пользователям
- Комментарии и вложения — обсуждение внутри заявки, загрузка файлов (с запретом исполнения PHP)
- Личный кабинет — свои задачи, созданные заявки, задачи по проектам, профиль и аватар
- Проекты и площадки — компании-клиенты, филиалы и участники
- Уведомления — колокольчик в приложении, HTML-письма по SMTP и Telegram (новые, просроченные, закрытые, тайминг)
- Безопасность — bcrypt, CSRF, rate-limit по IP, 2FA (Google/Microsoft Authenticator), роли admin/support/client, аудит-журнал
- REST API — API-ключи (Bearer), журнал вызовов, интеграция с 1С и внешними системами, защита от дублей через external_id
- Cron — автопроверка просроченных задач и ежедневная сводка в Telegram
Архитектура
Классический MVC без фреймворков: единая точка входа (front controller), PSR-4-автозагрузка, роутер с поддержкой ЧПУ, модели для каждой сущности (Task, Project, User и др.) и сервисный слой (Mailer, Telegram, Notifier, TwoFactor). Миграции — SQL-скрипты с отдельным скриптом переноса данных из старой CRM. Управление задачами по расписанию вынесено в отдельный cron-модуль с защитой через CRON_SECRET.
Интеграция с 1С
Входящее REST API позволяет создавать и обновлять заявки прямо из 1С и внешних систем.
Поле external_id
исключает дубликаты при повторной выгрузке, а журнал вызовов API даёт полную картину интеграций.
curl -X POST https://crm.200660.ru/api/tasks \
-H "Authorization: Bearer КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"title":"Заменить картридж","project_id":1,
"priority":"high","due_date":"2026-08-10 18:00:00",
"comment":"Из 1С"}'
Доступ к системе
Самостоятельная регистрация не предусмотрена — доступ предоставляется администратором системы.