Рішення · Установи & адміністрація
Розділи, яких вимагає урядова постанова, написані в коді та оновлюються службовцем — не додаються наприкінці, як додаток.
Селище або установа мають фіксований перелік обов'язкових розділів, обов'язок щодо рішеньної прозорості та службовця, який має опублікувати оголошення без дзвінка програмісту. Ми будуємо саме це, з журналом аудиту, що самостійно видаляється в строк, і з лімітом на спроби автентифікації.
Вже збудованоDouă platforme proprii, publice și verificabile azi. Prima e site-ul oficial al unei primării de comună: Laravel 12 pe PHP 8.2 cu MySQL 8, 40 de șabloane, 32 de rute, 10 migrări, cu conținutul editorial care se schimbă rar ținut într-un singur fișier de configurare de 1.613 linii și cu cel care se schimbă des în bază, editabil din panou; autentificarea în panou e limitată la 5 cereri pe minut, iar jurnalul de audit se șterge zilnic după 12 luni, cu trimitere explicită la temeiul legal. Antetele de securitate se pot citi din exterior chiar acum. A doua e o platformă civică în producție, cu 65 de rute de interfață de programare, peste 50 de migrări, 103 fișiere de test pe partea de server și 59 de scenarii capăt-la-capăt, cu verificare de accesibilitate în teste. Ce nu trecem la „livrat”: interoperabilitatea cu serviciile de stat — codul de autentificare federată și de semnătură electronică e scris și testat, dar oprit, pentru că lipsesc contractul cu autoritatea și certificatul de sistem.
Сайт публічної установи оцінюють не за тим, як він виглядає, а за списком. Постанова Уряду 728/2023 встановлює, які розділи мають існувати: прозорість ухвалення рішень, проєкти та рішення, оголошення, документи, контакти, бюджет. Вони обов’язкові, перевіряються і не обговорюються. Тому ми будуємо їх із самого початку як структуру, а не додаємо наприкінці — додані наприкінці виходять формальними й некорисними, і це одразу видно.
Друга умова більш практична: установа має вміти публікувати сама. Оголошення про тендер, проєкт рішення, винесений на консультацію, фотографія з події — якщо кожен етап проходить через розробника, інформація суспільного інтересу залишається на папері або в групі соціальної мережі, а сайт стає мертвою вітриною. Ми навмисно розділили два типи контенту: редакційний, що змінюється рідко — географія, історія, установи, контакти, бюджет — зберігається в одному файлі конфігурації, який читається безпосередньо шаблонами; той, що змінюється часто, зберігається в базі даних і редагується з панелі.
Третя умова — та, про яку ніхто не питає в технічному завданні: що відбувається з даними. Панель адміністрації публічної установи потребує ліміту на спроби автентифікації — на шостому запиті за хвилину з тієї самої адреси відповідь 429, і це покрито автоматичним тестом, а не припущено. Журнал аудиту містить IP-адреси, тобто це персональні дані: заплановане завдання щодня очищає його від усього, що старше дванадцяти місяців, з правовою підставою, записаною в коментарі коду, а не в окремому документі, який ніхто не відкриває.
І, нарешті, частина, про яку ми воліємо говорити до тендеру: сумісність із державними сервісами. Федеративна автентифікація та електронний підпис у нас написані й протестовані, але вимкнені з перемикача, бо бракує договору з органом і системного сертифіката — бракує паперу, не коду. Для державної платіжної платформи, шини сумісності та кабінету громадянина ми не маємо жодного коду, у жодному репозиторії, і пишемо це як є.