Skip to content

RTM — матрица трассируемости требований

This content is not available in your language yet.

Статус реализации (матрица трассируемости требований, RTM). BRD описывает, что должна уметь система; этот документ — что реально реализовано на текущий момент, с трассировкой к требованиям FR-NN. Источник истины по объёму — BRD, по дизайну — LLD.

Проект: Система интеллектуального мониторинга мерчантов — сервис мониторинга контента сайтов мерчантов для банков-эквайеров и PSP.

Детерминированный поиск по стоп-листам + рабочее место комплаенс-офицера.

ОбластьЧто реализованоFR
Мультитенантность и доступtenant-scope на всех бизнес-таблицах; RBAC на ролях/пермишенах (Filament Shield): роли super_admin/admin/officer/auditor (read-only), управление ролями и правами в UI, доступ гейтят политики; приглашения (invite-flow), 2FA (email-OTP), отключение пользователейFR-01
СайтыCRUD + CSV-импорт, реквизиты мерчанта, частота мониторинга (none/daily/weekly/monthly)FR-03, FR-13
Краулmulti-page обход (BFS) + sitemap.xml, robots.txt, throttle, лимиты по тарифуFR-02, FR-05
Извлечение текстаtrafilatura — стрип nav/menu/footerFR-07
Матчингморфология ru (pymorphy3), be (UDPipe belarusian-hse, задеплоена в образ сканера), en + Aho-Corasick, whole-word; диспетчер по языку сайтаFR-08
Анти-обфускацияразрядка к а з и н о, гомоглифы кaзиноказино, транслит kazinoказиноFR-09
Стоп-листысвои списки/фразы, категории, портфели, skip-правила (подавление ложных)FR-04
Evidenceimmutable HTML-снимок страницы, подсветка найденного словаFR-12
Ревью офицераочередь срабатываний, статусы, дедлайны, ремарки, historical alertsFR-18, FR-20
Отчётыэкспорт в Excel и PDF «Alert Report», статистика (диапазон дат, HBR/Watch List)FR-19
Алерты / почтауведомления комплаенса, шаблоны писем (FinMail), очередь HorizonFR-17

Дорогой AI-слой по кандидатам первого слоя; провайдер — Mistral, vector DB — Qdrant. Вся AI/vector-логика — в admin (сканер ходит только по HTTP).

ОбластьЧто реализованоFR
AI-классификацияразбор срабатываний LLM — по клику, bulk и авто в фоне (отсев ложных)FR-10
Семантический поискэмбеддинги + Qdrant ловят нарушения без точного слова (за флагом QDRANT_ENABLED)FR-21
SPA-детекцияэвристика «похоже на SPA» (флаг is_spa) + диагностика robots_blockedFR-06
Скриншоты в evidenceполностраничный снимок флагнутой Premium-страницы (headless-Chromium/Playwright) → MinIO, показ в карточке хита; SSRF-фильтр на недоверенные URLFR-12
ОбластьСтатусFR
Headless-рендеринг текста SPA (Playwright)детекция и скриншоты есть, переэкстракции текста нетFR-06

Инвариант себестоимости сохраняется: дешёвый детерминированный проход (Aho-Corasick + морфология) — для всех тарифов; дорогой AI-слой — только Premium и только по кандидатам.

Модули Андеррайтинг + Onboarding — реализовано

Заголовок раздела «Модули Андеррайтинг + Onboarding — реализовано»

Расширение до полного жизненного цикла мерчанта (по образцу Web Shield). Всё — в admin, в одной панели, разделено nav-группами «Мониторинг / Андеррайтинг / Онбординг». План — admin/ROADMAP-modules.md.

ОбластьЧто реализованоFR
Домен Merchant/Entityмерчант + директора/UBO, адреса, документы, сайты (FK), контакты (телефон/email/расчётный счёт); бэкфилл из sites.entityFR-33, FR-34
Onboarding intakeзаявка (manual/CSV/API/form) → convert() → мерчант (+структура) + кейс; CSV-импорт мерчантов (дедуп по УНП)FR-30, FR-32
Кейс Андеррайтингжизненный цикл open→approved/declined/terminated; decision-workspace; решение проецируется на мерчантаFR-40, FR-45
Каталог индикаторов52 индикатора, 4 группы, traffic-light, ручная разметкаFR-41, FR-43
ЕГР Беларусисверка мерчанта с госреестром по УНП (открытое API egr.gov.by): существование, состояние (ликвидация → red), наименование, дата регистрации (молодое юрлицо → red/amber); справка ЕГР на детальной странице проверкиFR-48
AML-скрининг (санкции/PEP)директора/UBO/entity по консолидированным санкционным (OFAC/ЕС/ООН/UK…) и PEP-спискам через OpenSanctions Match API (или self-hosted yente); уверенное санкционное совпадение → red, PEP/неточное → amber-кандидаты с находками на детальной страницеFR-48
FATF-риск страныстрана хостинга доменов мерчанта (GeoIP) против чёрного/серого списков FATF (ревизия окт. 2025)FR-49
Раннер анализа кейсакнопка «Запустить анализ» — все деривации последовательно (прогресс) или точечно; детальная страница каждой проверки (/cases/{id}/check/{key})FR-50
Карточка кейса (UI)оформление в стиле Web Shield: бренд мерчанта в шапке, крупный риск-скор, сводка по индикаторам, панель 4 групп 2×2, секции CREM/OSINT/MCCFR-47
Контент-индикаторы из сканераавто-деривация Business Classification (MCC-KB) + Content Violation (hits) + Website Compliance (наличие обязательных разделов сайта: Условия/Конфиденциальность/Возврат/Контакты/Доставка → WC%), не затирая ручноеFR-42
AI-подсказка MCC (Premium)Mistral читает контент сайтов мерчанта → черновой MCC с категорией/уверенностью/обоснованием; расхождение с заявленным MCC подсвечивается (misclassification). Анти-SSRF guard на загрузку контентаFR-10, FR-42
Авто-OSINT (Reputation)web-поиск кандидатов по аспектам: наименование, адрес, контакты, директора, сайты, соцсети (instagram/vk/facebook/telegram/tiktok), отзовики (отзывы/жалобы); находки amber-кандидаты + AI-оценка Mistral (Premium)FR-30
Dynamic risk scoreвычитательная модель (старт 100%, пол 1%), на кейс и на сайт, уровень LOW/MEDIUM/HIGHFR-44
CREMкредитная экспозиция: FEaD, EtPR, сценарии, рекомендуемые залоги (сверено с отчётом)FR-44a
MCC Knowledge Baseрегуляторная справка по MCC (MRP/VIRP, страновые правила)FR-44b
Recommendation checklist + PDFавто-чеклист из не-зелёных индикаторов; многосекционный PDF-отчёт по кейсу (серверный dompdf, формат по образцу loto.by)FR-47
Onboarding: форма + APIпубличная token-based форма мерчанта (/onboarding/{token}) → Application; partner API ingest (per-tenant Bearer-токен) → Application; аккаунт не создаётсяFR-30, FR-31
Связка кейс ↔ мониторингрескан сайта обновляет открытый кейс (индикаторы+score); ежегодный rerun high-risk; частота мониторинга per risk-категория (auto)FR-46
Transaction Laundering (детерминированный контур)portfolio cross-check, corporate structure, whois (регистрант + entity mismatch), IP Scan (соседи по подсети, reverse-IP, добавление в кейс), возраст домена (whois) и возраст SSL (Certificate Transparency / crt.sh), анализ трафика (Tranco топ-1M — локальный снимок или API + детекция резкого скачка), SiteReveal, гео-клоакинг, Load Balancing, мобильные приложения / партнёрские сети, historic TL violations, outgoing/backlinks, редиректы/related-domains, входные слова (УНП/ФИО/email/телефон/счёт на внешних ресурсах), тест-карты (ручной ввод офицера). Reverse-IP/passive-DNS — pluggable (OTX бесплатно, ViewDNS/SecurityTrails по ключу)FR-50
RBACроли super_admin/admin/officer/auditor (read-only); политики Merchant/InvestigateCase/Application; отключение пользователей (блок входа); назначение тенанта + страница тенанта со связанными разделамиFR-01

Модуль Фишинг-детектор — реализовано (admin v1.8.x + scanner v0.33.0)

Заголовок раздела «Модуль Фишинг-детектор — реализовано (admin v1.8.x + scanner v0.33.0)»

Защита брендов банка от фишинговых клонов: актив → отпечатки → тикет угрозы → доказательства → takedown. Реализованы и control plane в admin (UI + Scanner API), и авто-мониторы на стороне сканера (домены / веб / приложения + канарейка), плюс dark web-контур, threat-intel обогащение и первый шаг интеграции с SOC (STIX).

ОбластьЧто реализованоFR
Защищаемые активыреестр: сайт / мобильное приложение / соцаккаунт, статус active/paused, canary-сниппетFR-60
Web-отпечаткиверсионируемые: favicon hash, DOM-сигнатура, палитра, бренд-слова, паттерны форм; Scanner API снятия/чтенияFR-61
Mobile-отпечаткиpackage/bundle, cert SHA-256, icon hash, store-ссылки; версионируютсяFR-62
Мониторинг доменов (scanner)тайпосквоттинг (omission/transposition/QWERTY/homoglyphs/TLD/prefix-suffix) + CT-логи crt.sh по бренд-слову + DNS-фильтр → тикеты type=domain (scanner v0.27.0)FR-63
Детект веб-клонов (scanner)сравнение отпечатка кандидата с эталоном (favicon/keywords/палитра) + перцептивный хэш иконки/логотипа (ловит пересохранённую копию, FR-65 ф.1) по порогу → тикет + HTML-evidence (scanner v0.27.0, перцептив v0.32.0)FR-64, FR-65
Детект клонов приложений (scanner)поиск в iTunes / Google Play + сторонние агрегаторы (Aptoide, FR-84), сравнение по иконке и названию → тикеты type=app (scanner v0.27.0, агрегаторы v0.32.0)FR-66, FR-84
Оркестрация мониторинга (scanner)phishing_scheduler по очереди phishing-due / phishing-monitored; CLI scan-phishing-due / watch-phishing (scanner v0.27.0)FR-63
Канарейка (M7)публичный beacon /api/canary/{token}: клон сам сообщает о себе с любого домена и чистого HTTP; нормализация URL, дедуп, анти-флуд потолок на актив/сутки — расширение FR-64FR-64
Канарейка mobile (M10, ур. 1–2)repackage/resign-клоны: self-check в официальном приложении → beacon → тикет type=app + evidence. Android — Kotlin, сверка package + SHA-256 подписи APK (?p=&s=); iOS — Swift, сверка bundle ID + Apple Team ID через code-signing (?p=&t=, Team ID задаёт офицер вручную). Платформа — по снятому отпечатку. Honeytoken cfg.json в ресурсах пакета ловит разбор (ответ всегда 200 {}) — расширение FR-64/FR-66FR-64, FR-66
Тикеты угроздедуп по (актив, URL), источники auto/canary/manual, бэйдж открытых в навигации, ручная регистрация офицеромFR-68
Lifecycle тикетаmonitoring → in_progress → blocked; false_positive = whitelist (повторные обнаружения копятся в счётчике, тикет не возвращается в очередь)FR-69
Доказательстваскриншот + HTML-снимок + признак гео-клоакинга, append-only (read-only relation manager)FR-70
Takedown (ассистированный + 2.0)abuse-письмо по шаблонам (регистратор/хостер/платформа), RDAP-подсказка abuse-контакта из реестров (+DoH), фолбэк на нац-CERT для зон .by/.бел (FR-71), справочник платформ, статусы ответов. SLA-дашборд + авто-эскалация черновиков жалоб (FR-75) и подача в браузерные блок-листы/фиды (FR-76, спит до ключей провайдеров). Авто-email abuse@ — в планах (оргпредусловия)FR-71, FR-75, FR-76
Dark web-мониторингwatchlist тенанта (домены / БИН-диапазоны / бренд / email-домены) → находки утечек (креды, данные карт, упоминания бренда, продажа наборов для подделок) из Telegram-контура; сырьё шифруется, раскрытие аудируется (99-З). Связка находки с тикетом клона-источника — «жертвы этого клона» (FR-72.5)FR-72
Обогащение угрозы (threat-intel)к тикету добавляется возраст инфраструктуры (из логов сертификатов) и риск-подсказка для приоритизации — для доменов и веб-клоновFR-74
Экспорт угроз в SOCSTIX 2.1 экспорт тикетов/IOC (phishing:export-stix), детерминированные id для дедупа в SIEM; клиентский pull-API / вебхуки / TAXII — следомFR-86
Watermark провенансаподбор лого-кандидатов с офиц. сайта + подтверждение / загрузка / скачивание в UI (FR-77.1). Запечатывание невидимой метки (seal) — на активации (extra + мастер-ключ)FR-77
RBAC модуляправа ролей на ProtectedAssets/PhishingTickets (auditor — read-only)FR-01
ОбластьСтатусFR
Фишинг: доработка мониторов сканераперцептивный хэш иконки/логотипа (FR-65 ф.1) — реализован (scanner v0.32.0, см. детект веб-клонов); embedding-детекция визуально изменённых клонов (FR-65 ф.2) — каркас есть, спит (ждёт Qdrant + модель); мониторинг соцсетей/мессенджеров (FR-67) — не начат; CT-стриминг certstream + NRD-фиды и favicon-поиск urlscan.io — расширения FR-63/64FR-65, FR-67
Фишинг: takedown уровни 1–2авто-подача в блоклисты (Safe Browsing, PhishTank, Netcraft, APWG) и авто-email abuse@shield.by — см. организационные предусловия в BRD (SPF/DKIM/DMARC, PhishTank-аккаунт, членство APWG)FR-71
Остаток контент-индикаторов (Price Point и пр.)Deceptive Marketing / Subscription — структурные dark-patterns добавлены (обратный отсчёт распродажи, ложный дефицит, предотмеченное авто-продление; scanner v0.33.0); остаток — новые HTML-эвристикиFR-42
Биллинг/метеринг объёмовучёт проверок по видам услуг, квоты/overage, Акт сверки, месячный отчёт по ОТС — admin-side, без внешних ключей
Traffic-метрики Similarweb, live MATCH/VMSS (списки МПС)требуют внешних провайдеров/ключей эквайера или вне областиFR-48, FR-49
ОбластьFR
OCR / vision по фото товаров — заказчику не требуетсяFR-11
Verdict API + Redis-кэш для PSP-шлюзаFR-15, FR-16

Контракты/требования остаются зафиксированными в BRD/LLD на будущее, но в работу не берём.