F
Fand_igor

Внутренний дашборд управленческой аналитики для вуза

Разрабатывал внутренний модульный дашборд для управленческой аналитики вуза. Проект объединял несколько контуров данных и давал руководству и сотрудникам единый кабинет с показателями по приёмной кампании, студентам, финансам, преподавательскому составу и кадровой структуре. Система строилась как отдельное веб-приложение на 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С;
  • разработка модульной архитектуры и ролевого доступа;
  • построение аналитики для разных ролей и подразделений;
  • сочетание локального хранения, импорта, нормализации, кэширования и визуализации;
  • работа с реальными управленческими и операционными сценариями вуза.