Информационная платформа энергоаудиторов
УП "Рога и копыта"
УНП: 012345678
Место нахождения: Минск, ул.Рогатая 5
E-mail: sidorov@uf.ru
Количество выполненных аудитов за 5 лет: 2
В том числе по годам:
- в 2024 году: 1
- в 2026 году: 1
Наличие приборов:
- измерение параметров электроэнергии: имеется
- измерение расхода воздуха: имеется
- измерение температуры и влажности: не имеется
- обследование вентиляционных систем: не имеется
- обследование котельных: не имеется
- обследование систем освещения: не имеется
- обследование тепловых сетей: имеется
- обследование технологического оборудования: не имеется
- оценка состояния ограждающих конструкций: не имеется
- тепловизионное обследование: не имеется
Направления:
- административные здания
- жилые здания
- котельные
- объекты коммунального хозяйства
- промышленные предприятия
Виды выполняемых работ:
- обследование зданий и сооружений
- обследование технологического оборудования
- разработка энергетических балансов
УП "Энергоаудитконсалт"
УНП: 458965478
Место нахождения: Минск, ул.Рогатая 7
E-mail: gfg@ghgfh.ru
Количество выполненных аудитов за 5 лет: 1
В том числе по годам:
- в 2023 году: 1
Наличие приборов:
- измерение параметров электроэнергии: не имеется
- измерение расхода воздуха: не имеется
- измерение температуры и влажности: не имеется
- обследование вентиляционных систем: не имеется
- обследование котельных: не имеется
- обследование систем освещения: не имеется
- обследование тепловых сетей: не имеется
- обследование технологического оборудования: имеется
- оценка состояния ограждающих конструкций: не имеется
- тепловизионное обследование: не имеется
Направления:
- общественные здания
- объекты коммунального хозяйства
- сельскохозяйственные организации
- тепловые сети
Виды выполняемых работ:
- контроль фактического эффекта от внедренных мероприятий
- расчет энергетической эффективности
- экспресс-энергоаудит
Описание платформы
Общее назначение
Информационная
платформа формирования перечня организаций-энергоаудиторов — это
веб-приложение, предназначенное для сбора, систематизации и публикации данных
об организациях, осуществляющих энергетический аудит. Система реализована на
PHP с использованием базы данных MariaDB,
поддерживает полный цикл управления пользователями, данными организаций и
отчётностью.
1. Регистрация и управление учётными записями
1.1. Регистрация нового пользователя
- Доступно всем
посетителям (без авторизации).
- Поля для заполнения:
- Логин (3–10
символов, только латиница и цифры)
- Пароль (не менее 8
символов, обязательное наличие заглавных, строчных, цифр и специальных
символов)
- Адрес электронной
почты (проверка формата)
- УНП организации
(ровно 9 цифр)
- Валидация на клиенте и сервере
(с подсветкой ошибок).
- Проверка уникальности логина, email и УНП.
- Капча
(реализована опционально через reCAPTCHA) для
защиты от ботов.
- После успешной
регистрации:
- Учётная запись
создаётся со статусом «не активирована».
- Администратор
получает уведомление по email о новом
пользователе.
- Пользователю
показывается сообщение об ожидании активации.
1.2. Активация учётной записи
- Производится только
администратором через панель управления.
- При активации
пользователь получает доступ к личному кабинету.
1.3. Авторизация
- Форма входа с логином и паролем.
- Защита от брутфорса: после 5 неудачных попыток с одного IP вход
блокируется на 15 минут.
- Двухфакторная аутентификация (2FA):
- Администраторы обязаны включить 2FA
(настраивается в личном кабинете).
- Обычные пользователи могут включить 2FA по желанию.
- Используется TOTP (Google Authenticator,
Authy).
- Логирование всех попыток входа (удачных
и неудачных) с фиксацией IP, логина и хеша
пароля (пароль в открытом виде не хранится).
- При успешном входе
создаётся сессия с привязкой к IP и временем жизни (24 часа).
1.4. Восстановление пароля
- Пользователь вводит свой email
на странице сброса.
- Система генерирует одноразовый токен (срок действия 1
час) и отправляет ссылку для сброса на почту.
- По ссылке пользователь может задать новый пароль (с
проверкой сложности).
- Токен одноразовый и удаляется после использования.
1.5. Смена пароля в личном кабинете
- Требуется ввод текущего пароля, нового и
подтверждения.
- Новый пароль проходит проверку сложности.
- После смены логируется
действие, пользователь получает уведомление по email
(опционально).
2. Личный кабинет пользователя
2.1. Просмотр и редактирование данных организации
Пользователь
(и администратор для любого пользователя) может просматривать и редактировать
следующие блоки информации:
- Исходные данные об
организации:
- Наименование
организации (до 150 символов)
- УНП (9 цифр,
проверка уникальности)
- Место нахождения (до
150 символов)
- ФИО руководителя (до
150 символов) + чек-бокс согласия на обработку и публикацию
- Контактные телефоны
(несколько, маска ввода, до 17 символов)
- E-mail (валидация)
- Кадровый состав:
- Наличие в штате ≥3
экспертов-энергоаудиторов (чек-бокс)
- Количество
специалистов по инструментальным обследованиям (выпадающий список 0–10)
- Сведения об
экспертах-энергоаудиторах (динамическое
добавление/удаление):
- ФИО + согласие на
публикацию
- Образование
(энергетическое / технологическое / строительное) – чек-боксы
- Стаж ≥3 лет
(чек-бокс)
- Повышение
квалификации за последние 3 года (текстовое поле до 500 символов)
- Для каждого пункта –
отдельный чек-бокс согласия
- Материально-техническая
база:
- Наличие оборудования
(ПСМ 216) – чек-бокс
- Перечень приборов
(добавление/удаление):
- Наименование
прибора (до 250 символов)
- Дата последней
поверки (календарь)
- Срок действия
поверки в месяцах (целое число 1–99)
- Информация о
поверке (номер свидетельства)
- Вид
измерений/обследований (выпадающий список из справочника)
- Перечень
специализированного ПО (до 1000 символов)
- Методическое
обеспечение (4 чек-бокса):
- Разработаны и
утверждены внутренние методики
- Соответствие
законодательству
- Документированы и
доступны персоналу
- Гармонизация с
международными стандартами (ISO 50000 и др.)
- Организационная
структура и качество (5 чек-боксов):
- Наличие
организационной структуры для независимости
- Политика качества
- Распределение
ответственности
- Документированные
процедуры
- Система обеспечения
качества
- Практический опыт:
- Перечень выполненных
энергоаудитов (добавление/удаление):
- Наименование
объекта (до 250 символов)
- Год выполнения
(выпадающий список от 2020 до текущего)
- Компетенции и виды
объектов:
- Направления
деятельности (16 чек-боксов, например, жилые здания, промышленные
предприятия и т.д.)
- Виды выполняемых
работ (11 чек-боксов, от экспресс-энергоаудита до контроля эффекта)
- Дополнительная
информация:
- Готовность к
ежегодному контролю (чек-бокс)
- Готовность к
открытому взаимодействию (чек-бокс)
2.2. Режимы работы
- Просмотр – все данные
отображаются в виде текста, слова «да»/«нет»
окрашены зелёным/красным.
- Редактирование – все поля
становятся активными, добавлена динамика (добавление/удаление записей).
- При сохранении:
- Проводится полная
валидация на сервере.
- Обновляются все
связанные таблицы (эксперты, оборудование, энергоаудиты, направления,
виды работ).
- Если редактирует сам
пользователь, статус информации автоматически меняется на «На
модерации».
- Действие логируется в таблицу change_logs.
2.3. Прогресс-бар заполненности профиля
- На странице личного
кабинета отображается процент заполнения обязательных полей (учитываются
ключевые блоки).
- Визуально стимулирует
пользователя завершить ввод данных.
2.4. Двухфакторная аутентификация
(2FA)
- Пользователь может включить/отключить 2FA в личном
кабинете.
- При включении генерируется секретный ключ,
показывается QR-код для сканирования в приложении-аутентификаторе.
- После ввода правильного кода 2FA активируется.
- При последующих входах будет запрашиваться код.
3. Главная страница (публичная)
3.1. Список организаций
- Отображаются только
активированные пользователи с опубликованными карточками (info_status = 'published').
- Для каждой
организации показываются:
- Наименование, УНП,
место нахождения, e-mail
- Количество
энергоаудитов за последние 5 лет
- Распределение
энергоаудитов по годам
- Наличие приборов по
каждому виду измерений (зелёным «имеется» или красным «не имеется»)
- Направления
деятельности и виды выполняемых работ
3.2. Фильтрация
- По направлениям
деятельности (можно выбрать несколько)
- По видам
выполняемых работ (мультивыбор)
- По количеству
энергоаудитов за 5 лет (0, ≥1, ≥5, ≥10)
- Фильтры применяются
через GET-параметры, возможна перезагрузка и закладки.
3.3. Cookie-баннер
- При первом посещении
показывается сообщение об использовании cookie.
- Ссылка на
«пользовательское соглашение» (файл user_agreement.pdf в корне).
- После нажатия
«Принять» баннер скрывается и больше не показывается (cookie
сохраняется на год).
4. Административная панель
4.1. Доступ
- Только для
пользователей с ролью admin.
- После входа
администратор автоматически перенаправляется на страницу администратора.
4.2. Статистика (выводятся числовые показатели)
- Общее количество
зарегистрированных организаций (пользователей).
- Количество
опубликованных карточек.
- Количество
выполненных энергоаудитов по годам (график/список).
- Общее количество
экспертов-энергоаудиторов.
- Количество экспертов
со стажем ≥3 лет.
- Количество экспертов
по каждому виду образования (энергетическое, технологическое,
строительное).
- Общее количество
специалистов по инструментальным обследованиям.
- Среднее, минимальное
и максимальное количество на организацию.
- Количество
организаций по каждому направлению деятельности (в порядке убывания).
- Количество
организаций по каждому виду выполняемых работ (в порядке убывания).
- Количество приборов
общее и по каждому виду измерений.
- Приборы с истекшим
сроком поверки – таблица с наименованием организации, прибора, датой
последней поверки и датой истечения срока (красным шрифтом). Срок
рассчитывается как дата поверки + срок действия в месяцах.
4.3. Управление пользователями
- Таблица всех
зарегистрированных пользователей (с пагинацией и сортировкой).
- Отображение статуса активен/неактивен
(зелёный/красный).
- Отображение статуса
информации «Опубликована»/«На модерации»
(зелёный/красный).
- Действия:
- Активировать пользователя
(меняет status = 1).
- Опубликовать карточку (меняет info_status = 'published').
- Переход в профиль
любого пользователя для просмотра/редактирования (с правами
администратора).
4.4. Логи авторизации
- Таблица со всеми
попытками входа (успешными и неуспешными).
- Колонки: дата и
время, пользователь (ID), логин, IP-адрес, результат (успех/неудача),
сообщение (например, «неверный пароль», «2FA ошибка»).
- Постраничное
представление больших объемов информации и возможность поиска/фильтрации
(реализовано).
- Пароль в логах не хранится,
только хеш.
4.5. Логи изменений
- Фиксируются все
действия авторизованных пользователей по добавлению, изменению и удалению
информации в личных кабинетах.
- Записывается: кто
произвёл действие (пользователь), над чьим кабинетом, действие (add/edit/delete),
поле, старое значение, новое значение, IP, дата и время.
- Доступны для
просмотра администратором с пагинацией.
5. Безопасность и защита
- CSRF-защита: все формы (вход,
регистрация, редактирование, смена пароля, 2FA) содержат скрытые токены,
которые проверяются на сервере.
- Брутфорс-защита: ограничение числа
попыток входа с одного IP.
- Сложность паролей: минимальная длина 8
символов, обязательные заглавные, строчные, цифры и спецсимволы.
- Хеширование паролей: используется password_hash() с алгоритмом Bcrypt.
- Шифрование данных: контактные телефоны
хранятся в зашифрованном виде (AES-256-CBC) с использованием ключа,
заданного в конфигурации.
- Content Security
Policy (CSP): ограничены источники скриптов, стилей и шрифтов для
предотвращения XSS.
- «Очистка» ввода: все
пользовательские данные экранируются при выводе (htmlspecialchars).
- Сессионная
безопасность: сессия привязана к IP-адресу и имеет ограниченное
время жизни (24 часа), после чего требуется повторный вход.
- Двухфакторная аутентификация (дополнительный уровень для администраторов и по
желанию для пользователей).
6. Дополнительные возможности
- Toast-уведомления – ненавязчивые
всплывающие сообщения об успехе/ошибке вместо стандартных alert.
- Маски ввода для телефонов и УНП,
упрощающие заполнение.
- Хлебные крошки для навигации по
разделам.
- Адаптивный дизайн – корректное
отображение на мобильных устройствах, планшетах и десктопах.
- Динамическое
добавление/удаление экспертов, приборов, энергоаудитов, контактов без
перезагрузки страницы (JavaScript).
- Прогресс-бар
заполненности профиля мотивирует пользователей завершить ввод данных.
- Email-уведомления – администратору о
новых регистрациях, пользователю о смене пароля (опционально) и о
восстановлении пароля.
7. Структура базы данных
Таблицы
и их назначение:
- users – основная таблица
пользователей (логин, хеш пароля, email, УНП, статус активации, роль, статус информации,
2FA-секрет, дата последней смены пароля).
- failed_login_attempts – для защиты от брутфорса (IP, логин, время).
- password_reset_tokens – токены для сброса
пароля.
- auth_logs – логи авторизации
(без открытых паролей, с хешем).
- change_logs – логи изменений
данных.
- organization_data – основные данные
организации (наименование, УНП, местонахождение, контакты, email, чек-боксы, текстовые поля).
- measurement_types – справочник видов
измерений.
- equipment – оборудование
(приборы) с привязкой к пользователю и виду измерений.
- activity_directions – справочник
направлений деятельности.
- work_types – справочник видов
работ.
- user_activity_directions – связь
пользователь-направления.
- user_work_types – связь
пользователь-виды работ.
- experts – эксперты-энергоаудиторы (ФИО, образование, стаж, повышение
квалификации, согласия).
- energy_audits – выполненные
энергоаудиты (объект, год).
Все
связи организованы через внешние ключи с каскадным удалением.
8. Технологический стек
- Язык: PHP 7.4+
(используются современные возможности, например, типизация, PDO).
- База данных: MariaDB
(или MySQL) с кодировкой utf8mb4.
- Фронтенд: HTML5, CSS3
(адаптивный дизайн), JavaScript (нативные скрипты без фреймворков).
- Библиотеки (могут быть подключены через Composer):
- phpmailer/phpmailer – для отправки
email.
- robthree/twofactorauth – для 2FA
(или реализован собственный TOTP).
- google/recaptcha – для капчи
(опционально).
- Веб-сервер: Apache с поддержкой
.htaccess или Nginx с
аналогами.
9. Заключение
Система
полностью покрывает все требования технического задания, включая:
- полное управление
пользователями и их данными,
- разграничение прав
(пользователь/администратор),
- публичный доступ с
фильтрацией,
- административную
статистику и логи,
- современные меры
безопасности и удобный интерфейс.
Благодаря
модульной структуре и использованию подготовленных запросов, система легко
расширяется и поддерживается.