Рішення · Установи & адміністрація
Розділи, яких вимагає урядова постанова, написані в коді та оновлюються службовцем — не додаються наприкінці, як додаток.
Селище або установа мають фіксований перелік обов'язкових розділів, обов'язок щодо рішеньної прозорості та службовця, який має опублікувати оголошення без дзвінка програмісту. Ми будуємо саме це, з журналом аудиту, що самостійно видаляється в строк, і з лімітом на спроби автентифікації.
Вже збудованоДві власні, публічні та сьогодні перевіряльні платформи. Перша — офіційний сайт сільської ради: 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-адреси, тобто це персональні дані: заплановане завдання щодня очищає його від усього, що старше дванадцяти місяців, з правовою підставою, записаною в коментарі коду, а не в окремому документі, який ніхто не відкриває.
І, нарешті, частина, про яку ми воліємо говорити до тендеру: сумісність із державними сервісами. Федеративна автентифікація та електронний підпис у нас написані й протестовані, але вимкнені з перемикача, бо бракує договору з органом і системного сертифіката — бракує паперу, не коду. Для державної платіжної платформи, шини сумісності та кабінету громадянина ми не маємо жодного коду, у жодному репозиторії, і пишемо це як є.