Дозор — 152-ФЗ Compliance SaaS
Платформа автоматизации 152-ФЗ, Приказа ФСТЭК № 117, DPIA, реестров согласий, инцидентов с уведомлениями РКН (24/72 ч), AI-юрист на GigaChat.
Задача клиента
AI-юрист (RAG-чат по 152-ФЗ)
GigaChat-2-Max + KB из 249 чанков + 5 слоёв защиты
RAG-pipeline: sanitize (2000 chars, strip HTML, control chars) → homoglyph normalization (18 пар) → 53 INJECTION_PATTERNS regex (33 EN + 20 RU) → obfuscated injection (base64-decode keywords) → embedding Qwen3 → cosine top-K=10 (порог 0.3) → история Redis (last 20, TTL 24h) → chooseModel (GigaChat-2-Max если длинный/сравни/анализ, иначе GigaChat-2) → response filter (8 leak + 7 code patterns).
Compliance-документы (60 шаблонов)
От политик и приказов до журналов и моделей угроз
60 TS-шаблонов в 7 файлах (templates-orders, consents, fstek117, instructions-journals, regulations, acts-misc). 13 категорий: POLICY / ORDER / CONSENT / AGREEMENT / ACT / REGULATION / INSTRUCTION / NOTIFICATION / JOURNAL / NDA / PLAN / MODEL / OTHER. XSS-защита через helper sanitizeVar. Вариативные поля: orgName, orgInn, orgAddress, responsibleName, websiteUrl и др.
Инциденты с авто-уведомлениями РКН
Дедлайны 24/72 часа, формат Приказа № 180
4 severity (low/medium/high/critical), 5 типов (leak/unauthorized_access/loss/destruction/other), 6 статусов (detected → investigating → notified_rkn → notified_gosopka → resolved → closed). Жёсткие константы RKN_DEADLINE_MS=24h, INVESTIGATION_DEADLINE_MS=72h. Webhook incident.created. Модуль rkn-integration: валидация 17 обязательных полей с regex, генерация XML urn:rkn:notification:v1, HTML-экспорт.
Мониторинг сайтов на 14 проверок
Cron EVERY_HOUR, проверка cookie-баннера, форм, HTTPS, заголовков
Cron сканирует monitoring_sites где истёк check_interval. fetchPage() с User-Agent DozorBot/1.0, timeout 15s, SSRF-блок (10/127/172.16-31/192.168/169.254/cloud-metadata). 14 параллельных проверок возвращают {status: pass|fail|warning, score: 0-100, details}. Результаты в monitoring_checks.checks JSONB, overall_score (среднее), issues_count.
152-ФЗ Compliance Score
Сводная оценка 0:100 по 6 категориям с весами. Жёлтое предупреждение по согласиям, красное по cross-border — сразу видно, где требуется внимание DPO.
Реестр инцидентов: дедлайны 24/72 ч
Жёсткие константы RKN_DEADLINE_MS=24h и INVESTIGATION_DEADLINE_MS=72h в коде. Авто-генерация XML по Приказу № 180 для РКН, экспорт PDF.
Инциденты ПДн
4 активных, 1 закрыт| ID | Описание | Severity | Тип | Статус | 24 ч РКН | 72 ч |
|---|---|---|---|---|---|---|
| INC-2425 | Утечка email-базы через старую форму | critical | leak | РКН уведомлён | осталось 11 ч | осталось 59 ч |
| INC-2418 | Неавторизованный экспорт CRM | high | unauthorized_access | расследование | просрочен 1 ч | осталось 47 ч |
| INC-2412 | Утрата ноутбука сотрудника | medium | loss | закрыт | уведомлено | закрыто |
| INC-2401 | Удаление архива без согласования | low | destruction | обнаружен | осталось 18 ч | осталось 66 ч |
Мониторинг сайта: 14 проверок
DozorBot/1.0 сканирует сайт по cron EVERY_HOUR с SSRF-блоком cloud-metadata. Cookie-баннер проверяется 16 regex, JS-зависимости сверяются с CVE-базой.
Фреймворки и реестры
6 compliance-фреймворков + DPIA + DSR + Cross-border
Архитектура
NestJS 11 Backend
PM2 comply-backend :3010, 38 модулей
PostgreSQL 15 + pgvector
48 таблиц, HNSW m=16 ef=64
Redis 7
AOF, max 128MB, allkeys-lru + GigaChat lock
React 19 + Vite
Tailwind 4, 27 499 LOC, 45 страниц + 9 admin
Prerender :3031
Express + puppeteer-core для SEO-ботов
OrganizationGuard
X-Organization-Id + JwtAuthGuard global APP_GUARD