Решения · Учреждения & администрация
Разделы, которых требует постановление правительства, записанные в коде и обновляемые сотрудником — не добавленные в конце, как приложение.
Примэрия или учреждение имеет фиксированный перечень обязательных разделов, обязанность обеспечивать прозрачность принятия решений и сотрудника, который должен опубликовать объявление без звонка программисту. Мы строим именно это, с журналом аудита, который удаляется сам по сроку, и с лимитом на попытки аутентификации.
Уже построеноДве собственные, публичные и проверяемые сегодня платформы. Первая — официальный сайт сельской примэрии: Laravel 12 на PHP 8.2 с MySQL 8, 40 шаблонами, 32 маршрутами, 10 миграциями, с редакционным содержимым, которое меняется редко и хранится в одном файле конфигурации на 1.613 строк и с тем, что меняется часто, в базе, редактируемым из панели; вход в панель ограничен 5 запросами в минуту, а журнал аудита удаляется ежедневно после 12 месяцев, с явной ссылкой на правовое основание. Заголовки безопасности можно прочитать извне прямо сейчас. Вторая — гражданская платформа в производстве, с 65 маршрутами интерфейса программирования, более чем 50 миграциями, 103 файлами тестов на серверной стороне и 59 end-to-end сценариями, с проверкой доступности в тестах. Что мы не считаем «сданным»: интероперабельность с государственными сервисами — код федеративной аутентификации и электронной подписи написан и протестирован, но отключен, потому что отсутствуют договор с органом и системный сертификат.
Сайт государственного учреждения оценивают не по виду, а по списку. Постановление Правительства 728/2023 устанавливает, какие разделы должны быть: прозрачность принятия решений, проекты и решения, объявления, документы, контакты, бюджет. Они обязательны, проверяются и не подлежат обсуждению. Поэтому мы строим их с самого начала, как структуру, а не добавляем в конце — добавленные в конце они выглядят формально и бесполезно, и это сразу видно.
Второе условие более практичное: учреждение должно уметь публиковать само. Объявление о тендере, проект решения, вынесенный на консультацию, фотография с мероприятия — если все проходит через разработчика, общественно значимая информация остается на бумаге или в группе социальной сети, а сайт становится мертвой витриной. Мы намеренно разделили два вида контента: редакционный, который меняется редко, — география, история, учреждения, контакты, бюджет — хранится в одном файле конфигурации, читаемом напрямую шаблонами; тот, который меняется часто, хранится в базе данных и редактируется из панели.
Третье условие — то, о котором никто не спрашивает в техническом задании: что происходит с данными. Панель публичного администрирования нуждается в лимите на попытки аутентификации — на шестой запрос в минуту с одного и того же адреса ответ 429, и это покрыто автоматическим тестом, а не предполагается. Журнал аудита содержит IP-адреса, а значит, это персональные данные: запланированная задача ежедневно очищает его от всего, что старше двенадцати месяцев, с правовым основанием, записанным в комментарии к коду, а не в отдельном документе, который никто не открывает.
И, наконец, часть, о которой мы предпочитаем говорить до тендера: интероперабельность с государственными сервисами. Федеративная аутентификация и электронная подпись у нас написаны и протестированы, но отключены переключателем, потому что отсутствуют договор с органом и системный сертификат — отсутствует бумага, а не код. Для государственной платежной платформы, магистрали интероперабельности и кабинета гражданина у нас нет никакого кода, ни в одном репозитории, и мы пишем это как есть.