Внутренний дашборд управленческой аналитики для вуза
Разрабатывал внутренний модульный дашборд для управленческой аналитики вуза. Проект объединял несколько контуров данных и давал руководству и сотрудникам единый кабинет с показателями по приёмной кампании, студентам, финансам, преподавательскому составу и кадровой структуре. Система строилась как отдельное веб-приложение на CodeIgniter 4 с ролевым доступом, собственной моделью пользователей, кэшированием, шаблонной модульной архитектурой и интеграцией с несколькими API 1С.
Ключевая идея проекта заключалась в том, чтобы не работать с разрозненными выгрузками и служебными отчётами по отдельности, а собрать их в одну точку принятия решений. В результате разные роли получали доступ только к своим контурам аналитики, а сами данные подгружались из 1С, нормализовывались, кэшировались и раскладывались по специализированным экранам и виджетам.
Контекст проекта
- Проектировался как внутренний кабинет для сотрудников и руководителей.
- Использовался для управленческого контроля по нескольким направлениям деятельности вуза.
- Объединял данные из разных контуров 1С, а не из одной базы.
- Давал возможность не только смотреть сводные показатели, но и проваливаться в структуру данных по подразделениям, направлениям, уровням подготовки, формам обучения и кадровому составу.
- Строился как расширяемая модульная система, в которую можно было добавлять новые отраслевые дашборды без полной переработки приложения.
Что было реализовано
- Реализовал единый внутренний кабинет с авторизацией, сессиями, куки и разграничением доступа по ролям.
- Построил модульную архитектуру, в которой каждый аналитический контур подключался как самостоятельный модуль со своими маршрутами, меню, контроллерами, библиотеками, представлениями и клиентскими скриптами.
- Собрал главный контур дашборда и отдельные модули для приёмной кампании, студентов, финансов, преподавательского состава и сотрудников.
- Реализовал динамическую регистрацию модулей и автоматическое подключение маршрутов и пунктов меню через файловую структуру проекта.
- Сделал общий шаблонный слой для страниц, активов, JSON-данных, клиентских скриптов и виджетов.
- Реализовал сервисный слой для интеграции с несколькими API 1С.
- Настроил получение данных из разных источников 1С для разных бизнес-направлений:
profдля учебных и приёмных данных,bguдля финансового контура,kdrдля кадровой и организационной структуры. - Добавил кэширование ответов 1С и повторное использование уже загруженных данных, чтобы не перегружать внешние сервисы и ускорять открытие дашбордов.
- Реализовал более защищённый сценарий кэширования с проверкой подозрительно коротких или неполных ответов, чтобы не затирать корректные данные невалидной выгрузкой.
- Добавил возможность принудительного обновления данных и служебные механизмы для повторной загрузки.
Аналитические контуры проекта
Приёмная кампания
- Реализовал отдельный модуль для аналитики приёмной кампании.
- Поддержал импорт данных из 1С через JSON с проверкой служебного идентификатора и секрета.
- Сохранял полученные выгрузки в историю импортов и отдельно логировал ошибки разбора.
- Реализовал загрузку и обновление планов, структур, направлений, групп и справочников приёмной кампании.
- Построил виджеты по числу абитуриентов, уровням подготовки, формам обучения, основаниям поступления, динамике и структурам.
- Сделал аналитические таблицы по подразделениям, направлениям, конкурсным группам и географии заявлений.
- Добавил экран настроек, где можно было подтягивать параметры из 1С, хранить локальные настройки и корректировать маппинг справочников и групп.
- Реализовал локальный слой настроек для уровней, форм обучения, бюджетов, способов подачи и дополнительных параметров приёмной кампании.
Студенты
- Реализовал дашборд по студентам с набором виджетов и детальных отчётов.
- Вывел показатели по общему количеству обучающихся, иностранным студентам, целевому обучению, академическим отпускам, переводам, отчислениям, восстановлениям и выпускникам.
- Добавил разрезы по месяцам, уровням подготовки, факультетам, курсам, специальностям и гражданству.
- Реализовал географические представления по регионам России и странам.
- Сделал отдельные таблицы и визуализации для детализации по конкретным типам отчётов.
Финансы
- Реализовал финансовый модуль с отдельным ролевым доступом.
- Вывел консолидированную финансовую отчётность по данным 1С.
- Построил разрезы по направлениям, КФО и статьям аналитики.
- Реализовал детальные таблицы по доходам и расходам.
- Добавил контур контроля оплаты и задолженности обучающихся с разрезом по подразделениям, курсам и категориям.
Преподавательский состав и структура
- Реализовал отдельный модуль по структуре и преподавательскому составу.
- Построил навигацию по организационной структуре с переходом от верхнего уровня к конкретным подразделениям и кафедрам.
- Добавил безопасные маршруты по числовым идентификаторам, чтобы не зависеть от нестабильных или неудобных строковых идентификаторов в URL.
- Реализовал сбор и кэширование структуры подразделений, сотрудников и кадровых параметров на выбранную дату.
- Построил виджеты по численности, структуре подразделений, учёным степеням, академическим параметрам и свободным ставкам.
- Поддержал разные сценарии отображения для подразделений с преподавательским составом и без него.
- Реализовал детализацию по конкретному подразделению и отдельный экран по департаменту.
Сотрудники и совмещения
- Реализовал отдельный модуль по сотрудникам и совмещениям.
- Собирал древовидную структуру института и подразделений по данным кадрового контура.
- Формировал список сотрудников по каждому уровню структуры.
- Показывал дополнительные совмещения и другие позиции одного и того же сотрудника в виде расширенной информации.
- Давал возможность видеть не только принадлежность сотрудника к подразделению, но и его другие роли, трудоустройство и объём ставок.
Что было важно технически
- Архитектура строилась как модульная платформа, где каждый дашборд представлял собой отдельный функциональный блок со своей серверной и клиентской частью.
- Шаблонный слой автоматически собирал активы модулей, объединял их в общий фронтенд-пакет и подключал только нужные части интерфейса.
- Меню формировалось динамически на основе конфигурации модулей и проверок ролей.
- Ролевая модель строилась через таблицы пользователей и групп с проверками доступа на уровне маршрутов и пунктов интерфейса.
- Для интеграции с 1С был реализован отдельный API-слой, который инкапсулировал построение запросов, вызовы внешних методов, декодирование ответов и кэширование.
- Для части запросов использовал не только обычный TTL-кэш, но и механизм проверки метаданных ответа, чтобы не принимать недогруженные или подозрительно короткие ответы как корректное обновление.
- В контуре приёмной кампании данные не только читались из 1С, но и импортировались в локальную БД с собственной нормализацией, преобразованием справочников и накоплением внутренней структуры.
- В модуле преподавателей реализовал отдельную логику восстановления структуры на дату, агрегации данных по подразделениям и построения исторических срезов кадрового состава.
- На уровне интерфейса использовал отдельные клиентские модули и библиотечные плагины для таблиц, графиков, фильтров, дат и интерактивной навигации.
Что показывает проект
- Умение проектировать не один экран, а внутреннюю систему управленческой аналитики с несколькими предметными контурами.
- Опыт интеграции с несколькими источниками 1С в рамках одного приложения.
- Умение строить модульную архитектуру, в которой можно расширять систему новыми разделами без полной переделки ядра.
- Опыт разработки ролевых кабинетов для внутренних пользователей.
- Умение переводить разнородные данные в понятные аналитические экраны, таблицы, графики и управленческие срезы.
- Опыт проектирования промежуточного слоя между внешними API и интерфейсом с кэшированием, нормализацией и защитой от некачественных ответов.
- Опыт работы с аналитикой по приёмной кампании, студентам, финансам, организационной структуре и кадровым данным в одном проекте.
Технологии
- PHP
- CodeIgniter 4
- JavaScript
- jQuery
- ApexCharts
- DataTables
- Select2
- Air Datepicker
- Less
- Gulp
- MySQL
- API интеграции с 1С
Моя роль
Моя роль включала разработку внутреннего веб-приложения, проектирование модульной архитектуры, построение ролевого доступа, интеграцию с несколькими контурами 1С, реализацию кэширования и логики загрузки данных, разработку аналитических модулей по приёмной кампании, студентам, финансам, преподавательскому составу и сотрудникам, а также настройку клиентской части с виджетами, таблицами и графиками.
Практическая ценность проекта
Этот кейс хорошо показывает работу не с одной локальной задачей, а с системным управленческим инструментом:
- объединение нескольких аналитических направлений в одном кабинете;
- интеграция с несколькими контурами 1С;
- разработка модульной архитектуры и ролевого доступа;
- построение аналитики для разных ролей и подразделений;
- сочетание локального хранения, импорта, нормализации, кэширования и визуализации;
- работа с реальными управленческими и операционными сценариями вуза.