פיתוח פורטל ממשלתי
גופים ממשלתיים נתקלים לעיתים קרובות בבעיה: האתר נכשל בבדיקות נגישות, נתוני אזרחים מאוחסנים בצורה לא תקינה, וחיפוש מסמכים לא מוצא את הצווים הנדרשים. אנו מתמחים בפרויקטים כאלה ויודעים כיצד להימנע משגיאות אלה. הניסיון שלנו משתרע על פני יותר מעשור ועשרות פורטלים שהושלמו עבור ארגונים ממשלתיים ברוסיה ובלארוס. אנו מכסים את המסגרת הרגולטורית, דרישות WCAG, אינטגרציית ESIA והגנה על נתונים אישיים.
מסגרת חקיקה
בבלארוס, הדרישות מוגדרות בחוק 'על מסמך אלקטרוני וחתימה דיגיטלית אלקטרונית' ובצווים על משאבי מידע ממלכתיים. ברוסיה — החוק הפדרלי 149 'על מידע', החוק הפדרלי 152 'על נתונים אישיים', תקנה מס' 477 (גרסה עדכנית). הסעיפים החובה לאתרים ממשלתיים רשמיים כוללים: מידע על הרשות, מסמכים רגולטוריים, שירותים ציבוריים, תוצאות בדיקות, חומרים נגד שחיתות. אנו מתחשבים בכל הנורמות בשלב התכנון כדי להימנע מעבודה חוזרת לאחר ביקורת.
מדוע WCAG 2.1 AA הוא חובה לאתרים ממשלתיים?
זו לא המלצה אלא חוק. GOST R 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 חייבים להיות PDF מתויגים עם מבנה לוגי וטקסטים חלופיים. אנו בודקים כל אלמנט לעמידה ב-WCAG. קבלו ייעוץ על הפרויקט שלכם כדי להימנע משגיאות אלה.
כיצד אינטגרציית ESIA משפרת את חוויית המשתמש?
עבור חשבונות אישיים של אזרחים, אינטגרציה עם מערכת הזיהוי הממלכתית היא חובה. בבלארוס — ESIA או כרטיס ID, ברוסיה — פורטל Gosuslugi באמצעות SAML 2.0 או OpenID Connect. דוגמה לחיבור ESIA באמצעות 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 לעומת PostgreSQL
גופים ממשלתיים צוברים אלפי מסמכים. חיפוש SQL פשוט מתמודד בצורה גרועה עם מורפולוגיה רוסית. אנו משתמשים בשתי גישות. עבור ארכיונים מעל 100 אלף מסמכים, Elasticsearch מהיר פי 4 במהירות החיפוש מאשר PostgreSQL.
| מאפיין | PostgreSQL FTS | Elasticsearch |
|---|---|---|
| מורכבות הגדרה | נמוכה | בינונית |
| מורפולוגיה רוסית | מובנית | באמצעות תוסף analysis-morphology |
| מהירות על 100 אלף מסמכים | ~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;עבור ארכיונים מעל 100 אלף מסמכים, אנו משתמשים ב-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 נפרדות (<!-- Неправильно: форма поиска без 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> , // 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)); } , 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; ), localStorage לשמירת שפה. לפי SLA, זמינות חייבת להיות 99.5% ומעלה — אנו מגדירים יתירות שרתים וניטור עם התראות.
מה כלול בעבודה?
- ניתוח דרישות וסקירת מסגרת רגולטורית
- עיצוב ארכיטקטורה (מסד נתונים, תשתית, אינטגרציות)
- עיצוב ופריסה תואמי WCAG 2.1 AA (פריסה לפי GOST)
- פיתוח צד שרת ב-Laravel / Django
- אינטגרציה עם ESIA / Gosuslugi
- חיפוש טקסט מלא (Elasticsearch או PostgreSQL)
- בדיקות (a11y, עומס, אבטחה)
- פריסה על שרתי הלקוח
- תיעוד והכשרת צוות
- תמיכה באחריות ל-6 חודשים
לוח זמנים
| סוג פורטל | לוח זמנים |
|---|---|
| אינפורמטיבי + ארכיון + חיפוש | 6–10 שבועות |
| עם אינטגרציית ESIA וחשבון אישי | 3–5 חודשים |
| פלטפורמת ממשל אלקטרוני מלאה | מ-6 חודשים |
העלות מחושבת באופן אישי לאחר ביקורת דרישות. צרו קשר — נעריך את הפרויקט שלכם תוך יומיים. המהנדסים שלנו מחזיקים בתעודות אבטחת מידע ויש להם ניסיון עם לקוחות ממשלתיים. הזמינו פיתוח פורטל מפתח — קבלו פתרון אמין העומד בכל החוקים.







