Разработка портала для государственной организации
Госорганы часто сталкиваются с проблемой: сайт не проходит проверку доступности, данные граждан хранятся с нарушениями, а поиск по документам не находит нужных постановлений. Мы специализируемся на таких проектах и знаем, как избежать этих ошибок. Наш опыт — более десяти лет и десятки реализованных порталов для госорганизаций России и Беларуси. Разбираем нормативную базу, требования WCAG, интеграцию с ЕСИА и защиту персональных данных.
Законодательная база
В Беларуси требования определяет Закон «Об электронном документе и электронной цифровой подписи», постановления о государственных информационных ресурсах. В России — ФЗ-149 «Об информации», ФЗ-152 «О персональных данных», постановление №477 (действующая редакция). Перечень обязательных разделов для официальных сайтов органов власти: сведения об органе, нормативные документы, госуслуги, результаты проверок, антикоррупционные материалы. Учитываем все нормы на этапе проектирования, чтобы избежать переделок после аудита.
Почему WCAG 2.1 AA обязателен для госсайтов?
Это не рекомендация, а закон. ГОСТ Р 52872 ссылается на WCAG 2.1. Проверка проводится автоматически (axe-core, Lighthouse) и вручную. Типичные проблемы — отсутствие меток у форм и неверная структура таблиц. Пример правильной формы поиска:
<!-- Неправильно: форма поиска без label --> <input type="search" placeholder="Поиск по сайту"> <!-- Правильно --> <label for="site-search" class="sr-only">Поиск по сайту</label> <input id="site-search" type="search" placeholder="Поиск по сайту" role="searchbox" aria-label="Поиск по сайту"> <!-- Правильная таблица с заголовками --> <table> <caption>Контакты руководства</caption> <thead> <tr> <th scope="col">ФИО</th> <th scope="col">Должность</th> <th scope="col">Телефон</th> </tr> </thead> <tbody> <tr> <td>Иванов Иван Иванович</td> <td>Начальник отдела</td> <td><a href="tel:+375170000000">+375 17 000-00-00</a></td> </tr> </tbody> </table> Все PDF-документы должны быть tagged PDF с логической структурой и alt-текстами. Проверяем каждый элемент на соответствие WCAG. Получите консультацию по вашему проекту, чтобы избежать этих ошибок.
Как интеграция с ЕСИА улучшает пользовательский опыт?
Для личных кабинетов граждан обязательна интеграция с государственной системой идентификации. В Беларуси — ЕСИА или ID-карта, в России — портал Госуслуг через SAML 2.0 или OpenID Connect. Пример подключения ЕСИА через OAuth 2.0 (Laravel):
// Laravel: редирект на авторизацию через ЕСИА public function redirectToEsia() { $params = [ 'client_id' => config('esia.client_id'), 'response_type' => 'code', 'scope' => 'openid fullname email mobile snils', 'redirect_uri' => route('esia.callback'), 'state' => csrf_token(), 'timestamp' => now()->format('Y.m.d H:i:s O'), 'access_type' => 'online', ]; // Подпись запроса через PKCS#7 (обязательно для ЕСИА) $params['client_secret'] = $this->signRequest($params); return redirect(config('esia.auth_url') . '?' . http_build_query($params)); } Запросы подписываются квалифицированным сертификатом — его нужно получать в удостоверяющем центре. Интеграция повышает безопасность входа и позволяет выгружать данные из госсистем.
Защита персональных данных и выбор хостинга
ФЗ-152 требует хранить персональные данные граждан на серверах в РФ. Аналогичные законы действуют в Беларуси. Выбираем хостинг только из локальных дата-центров. Обязательные заголовки безопасности:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'nonce-{NONCE}'; style-src 'self' 'unsafe-inline'" always; add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; Кроме того, настраиваем двухфакторную аутентификацию для сотрудников и шифруем данные в БД. Наши инженеры имеют сертификаты по информационной безопасности. Гарантируем соответствие требованиям регуляторов.
Поиск по документам: Elasticsearch vs PostgreSQL
Госорганы накапливают тысячи документов. Простой SQL-поиск плохо справляется с русской морфологией. Мы используем два подхода. Для архивов от 100k документов Elasticsearch быстрее PostgreSQL в 4 раза по скорости поиска.
| Характеристика | PostgreSQL FTS | Elasticsearch |
|---|---|---|
| Сложность настройки | Низкая | Средняя |
| Морфология русского | Встроенная | Через плагин analysis-morphology |
| Скорость на 100k документов | ~200 мс | ~50 мс |
| Ресурсы | Вписывается в сервер БД | Требует отдельного сервера |
Пример полнотекстового индекса в PostgreSQL:
CREATE INDEX docs_fts_idx ON documents USING GIN (to_tsvector('russian', title || ' ' || content)); SELECT id, title, ts_rank(to_tsvector('russian', title || ' ' || content), query) AS rank FROM documents, to_tsquery('russian', 'приватизация & жилье') query WHERE to_tsvector('russian', title || ' ' || content) @@ query ORDER BY rank DESC LIMIT 20; Для архивов от 100k документов ставим Elasticsearch с настройкой русской морфологии. Используем плагин analysis-morphology и задаём анализатор в настройках индекса.
Версионирование и архив нормативных документов
Документы должны сохранять историю редакций. Пользователь видит текущую версию и может открыть предыдущие. Реализуем через таблицу ревизий:
CREATE TABLE document_revisions ( id BIGSERIAL PRIMARY KEY, document_id BIGINT REFERENCES documents(id), content TEXT NOT NULL, revision_note TEXT, created_by BIGINT REFERENCES users(id), created_at TIMESTAMPTZ DEFAULT NOW(), effective_from DATE, effective_to DATE ); Многоязычность и производительность
Для органов, работающих с национальными меньшинствами, портал поддерживает несколько языков. hreflang в head, отдельные URL (/ru/, /be/, /en/), localStorage для сохранения языка. По SLA доступность должна быть 99.5% и выше — резервируем сервера, ставим мониторинг с алертингом.
Что входит в работу?
- Аналитика требований и нормативной базы
- Проектирование архитектуры (БД, инфраструктура, интеграции)
- Дизайн и вёрстка с учётом WCAG 2.1 AA (вёрстка по ГОСТ)
- Разработка бэкенда на Laravel / Django
- Интеграция с ЕСИА / Госуслугами
- Полнотекстовый поиск (Elasticsearch или PostgreSQL)
- Тестирование (a11y, нагрузка, безопасность)
- Развёртывание на серверах заказчика
- Документация и обучение сотрудников
- Гарантийная поддержка 6 месяцев
Сроки
| Тип портала | Срок |
|---|---|
| Информационный + архив + поиск | 6–10 недель |
| С интеграцией ЕСИА и личным кабинетом | 3–5 месяцев |
| Полноценная платформа госуслуг | от 6 месяцев |
Стоимость рассчитывается индивидуально после аудита требований. Свяжитесь с нами — оценим проект за 2 дня. Наши инженеры имеют сертификаты по информационной безопасности и опыт с госзаказчиками. Закажите разработку портала под ключ — получите надёжное решение, соответствующее всем законам.







