Загрузка данных


2.2	Описание форм веб-приложения
Разработанное веб-приложение состоит из набора взаимосвязанных страниц и динамических форм, каждая из которых решает конкретный круг задач в зависимости от уровня доступа пользователя.
2.2.1	Описание формы авторизации и восстановления пароля
Форма авторизации реализована в файле login.php и представляет собой центральную карточку входа. Она содержит поля ввода логина и пароля, снабженные встроенной валидацией на стороне клиента для предотвращения отправки пустых запросов. Серверный обработчик в файле auth.php осуществляет поиск пользователя в базе данных и проверяет соответствие пароля с помощью сверки безопасных хэшей.
Для восстановления доступа разработана страница forgot_password.php, которая запрашивает адрес электронной почты пользователя. При подтверждении почты система генерирует случайный шестизначный цифровой код, записывает его в базу данных на пятнадцать минут и отправляет его пользователю через библиотеку PHPMailer по защищенному протоколу TLS/SSL. Код вводится на странице verify_code.php, и в случае его совпадения пользователь перенаправляется на форму reset_password.php для установки нового пароля.
2.2.2	Описание анкеты регистрации и онбординга
Регистрация нового аккаунта реализована в файле register.php. На данном этапе пользователь указывает только логин, пароль и адрес электронной почты, после чего система автоматически присваивает ему базовую роль ожидания проверки. После успешной регистрации пользователь направляется на страницу onboarding.php для прохождения обязательного онбординга.
Форма онбординга запрашивает у пользователя ФИО, пол, дату рождения, серию и номер паспорта, контактный телефон и адрес фактического проживания. На странице задействованы маски ввода на языке программирования JavaScript, которые автоматически форматируют телефонные номера в вид с кодом страны и скобками, а серию и номер паспорта разделяют пробелом. Данные сохраняются в таблицу заявок, а учетная запись временно блокируется до проверки «Администратором».
2.2.3	Описание панели администратора
Панель управления «Администратора» в файле admin.php спроектирована как дашборд контроля безопасности. В верхней части выводится оперативная статистика: общее число аккаунтов, количество заявок на проверке и число активных «Инспекторов».
Основная часть страницы содержит две таблицы. Первая таблица выводит список новых заявок на модерацию. При нажатии кнопки просмотра открывается модальное окно на базе тега dialog, отображающее все анкетные данные кандидата. 
«Администратор» может одобрить заявку, что автоматически перенесет данные в соответствующую таблицу «Инспекторов», «Родителей» или «Несовершеннолетних», либо отклонить ее. Вторая таблица позволяет «Администратору» вручную изменять роль любого зарегистрированного пользователя через выпадающий список.
2.2.4	Описание личного кабинета пользователя
Личный кабинет в файле profile.php разделен на две колонки. В левой колонке размещена карточка профиля с аватаркой пользователя, которая загружается напрямую в базу данных в текстовом формате Base64, логин, почта и бейдж роли.
Правая колонка содержит блок личной информации и биометрические данные. Для «Несовершеннолетних» здесь же расположена форма ввода пола и даты рождения, которая блокируется после первого сохранения для защиты от фальсификации данных. 
В самом низу личного кабинета для «Родителей» и «Несовершеннолетних» выводятся сворачивающиеся таблицы с их личной историей проведенных профилактических бесед и зарегистрированных правонарушений с указанием ФИО «Инспекторов».
2.2.5	Описание рабочего стола сотрудника
Рабочий стол сотрудника в файле dashboard.php является навигационным центром для «Инспекторов» и «Администраторов». Он содержит блоки ключевой статистики отдела и три крупные плитки быстрого доступа к реестру «Несовершеннолетних», справочнику заведений и отчетам.
При переходе в реестр несовершеннолетних в файле minors.php «Инспектору» открывается таблица со всеми «Несовершеннолетними». На странице реализована умная панель фильтрации, позволяющая искать «Несовершеннолетних» по фамилии, месту учебы и нахождению в социально опасном положении. Возле имени каждого «Несовершеннолетнего» в таблице выводится красный круглый маркер, сигнализирующий о том, что семья «Несовершеннолетнего» находится на особом учете, что позволяет «Инспектору» быстро оценивать обстановку. Сверху расположена кнопка «Завести дело» для ручного внесения «Несовершеннолетних» без учетной записи в веб-приложении.
2.2.6	Описание реестра несовершеннолетних
Электронное личное дело в файле view_minor.php аккумулирует всю историю профилактической работы с «Несовершеннолетним». Левая колонка содержит карточки с адресом проживания, местом учебы, списком привязанных «Родителей» с их контактами и характеристиками с места учебы.
Правая колонка содержит три большие сворачивающиеся секции на базе тегов details и summary, которые по умолчанию находятся в закрытом состоянии для удобства чтения страницы. 
Первая секция выводит акты ЖБУ, где «Инспектор» может просмотреть текстовое описание быта, отношений в семье, итоговый вывод и прокручиваемую ленту с прикрепленными фотографиями комнат из базы данных.
Вторая секция содержит список совершенных правонарушений со статьями КоАП, а третья – историю проведенных и запланированных профилактических бесед.
2.2.7	Описание электронного личного дела несовершеннолетнего
Новостная лента на главной странице веб-приложения выводит публикации в виде карточек по три штуки в ряд. Каждая карточка содержит обложку новости, тег, дату, заголовок, текст с градиентным затуханием снизу и кнопку перехода к чтению статьи на странице view_news.php. Управление новостями реализовано в файле manage_news.php, где «Инспекторы» и «Администраторы» могут публиковать статьи с загрузкой обложки в базу данных.
Справочник учебных заведений в файле institutions.php выводит таблицу школ и колледжей с автоматическим подсчетом количества состоящих на учете «Несовершеннолетних» в каждом из них. Для добавления заведений разработана форма add_institution.php.
Система отчетов в файле reports.php позволяет «Инспектору» выбрать месяц и год, после чего генерируется официальный бланк отчета с количественной статистикой, таблицами правонарушений, бесед и полем для подписи. При нажатии кнопки печати разработанные стили автоматически скрывают все элементы управления интерфейсом, отправляя на принтер чистый документ формата А4.
2.2.8	Описание вспомогательных форм добавления данных
Для наполнения личного дела «Несовершеннолетнего» информацией были разработаны специализированные формы добавления записей, переход на которые осуществляется из карточки личного дела.
Форма добавления правонарушения реализована в файле add_offense.php. Она автоматически определяет «Инспектора», который в данный момент работает в веб-приложении, и выводит ФИО «Несовершеннолетнего» в шапке заполняющейся формы.
Форма содержит выпадающий список со статьями КоАП, календарное поле даты нарушения, текстовое поле для ввода номера протокола и большое текстовое поле для детального описания обстоятельств происшествия.
Форма составления акта обследования ЖБУ в файле add_inspection.php содержит текстовые поля для описания бытовых условий и отношений в семье, а также поле для ввода вывода «Инспектора». Внизу формы расположен блок для множественной загрузки фотографий, которые автоматически конвертируются в текстовые строки перед сохранением в базу данных.
Форма планирования бесед в файле plan_conversation.php позволяет «Инспектору» внести встречу в свой календарь. Он указывает тему беседы и точную дату со временем через удобный календарный интерфейс, после чего беседа появляется в его расписании в личном кабинете.
Форма добавления проведенной беседы в файле add_conversation.php фиксирует результаты уже состоявшейся встречи с возможностью указать, присутствовал ли при этом кто-то из ранее привязанных к «Несовершеннолетнему» «Родителей».
Форма привязки законного представителя в файле add_parent_link.php выводит выпадающий список всех зарегистрированных в системе «Родителей» и позволяет связать их с «Несовершеннолетним», выбрав тип родственных отношений.
Форма изменения статуса учета в файле change_status.php позволяет изменить профилактический статус «Несовершеннолетнего», выбрав его из справочника и указав номер официального приказа-основания.
2.2.9	Описание новостного портала и справочника заведений
Новостная лента на главной странице веб-приложения является важным инструментом информирования граждан. Для управления новостями разработан файл manage_news.php, доступный «Инспекторам» и «Администраторам».
Форма создания публикации была расширена и занимает сорок процентов ширины экрана, что обеспечивает удобство ввода текста. Она позволяет загрузить изображение обложки новости, ввести заголовок, выбрать категорию и написать основной текст.
Новости сохраняются напрямую в базу данных и отображаются на главной странице в виде красивых карточек по три штуки в ряд. При нажатии кнопки «Читать» на карточке открывается страница view_news.php с полным текстом статьи, обложкой и ФИО автора.
Справочник учебных заведений реализован в файле institutions.php. Он отображает таблицу со списком всех школ, лицеев, колледжей и университетов в районе. Особенностью справочника является автоматический подсчет количества подучетных «Несовершеннолетних», которые обучаются в каждом конкретном заведении. Для добавления новых заведений разработана форма add_institution.php, где «Инспектор» указывает тип заведения, его официальное наименование и адрес.
2.2.10	Описание системы генерации и вывода отчетов
Для автоматизации составления отчетности была разработана страница reports.php. Она позволяет «Инспектору» выбрать интересующий месяц и год с помощью удобных выпадающих списков.
После нажатия кнопки формирования система генерирует официальный бланк отчета, содержащий:
1.	Сводную количественную статистику за месяц: общее число правонарушений, бесед, актов ЖБУ и постановок статуса социально опасного положения.
2.	Подробную таблицу со списком всех зарегистрированных правонарушений с указанием дат, статей и ФИО «Несовершеннолетних».
3.	Подробную таблицу со списком проведенных профилактических бесед.
4.	Блок для официальной подписи «Инспектора» и даты составления.
Страница снабжена кнопкой «Распечатать отчет», которая запускает печать через браузер. Благодаря специальным стилям для печати, при выводе на принтер автоматически скрываются шапка веб-приложения, меню, кнопки и формы фильтрации, оставляя на листе бумаги формата А4 только чистый и аккуратный официальный документ.