RTM — матрица трассируемости требований
Статус реализации (матрица трассируемости требований, RTM).
BRDописывает, что должна уметь система; этот документ — что реально реализовано на текущий момент, с трассировкой к требованиямFR-NN. Источник истины по объёму — BRD, по дизайну — LLD.
Проект: Web Shield AI — сервис мониторинга контента сайтов мерчантов для банков-эквайеров и PSP.
Фаза 1 (MVP, тариф Basic) — работает
Заголовок раздела «Фаза 1 (MVP, тариф Basic) — работает»Детерминированный поиск по стоп-листам + рабочее место комплаенс-офицера.
| Область | Что реализовано | 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/footer | FR-07 |
| Матчинг | морфология ru (pymorphy3), be (UDPipe belarusian-hse, задеплоена в образ сканера), en + Aho-Corasick, whole-word; диспетчер по языку сайта | FR-08 |
| Анти-обфускация | разрядка к а з и н о, гомоглифы кaзино → казино, транслит kazino → казино | FR-09 |
| Стоп-листы | свои списки/фразы, категории, портфели, skip-правила (подавление ложных) | FR-04 |
| Evidence | immutable HTML-снимок страницы, подсветка найденного слова | FR-12 |
| Ревью офицера | очередь срабатываний, статусы, дедлайны, ремарки, historical alerts | FR-18, FR-20 |
| Отчёты | экспорт в Excel и PDF «Alert Report», статистика (диапазон дат, HBR/Watch List) | FR-19 |
| Алерты / почта | уведомления комплаенса, шаблоны писем (FinMail), очередь Horizon | FR-17 |
Фаза 2 (Premium, AI-слой) — работает
Заголовок раздела «Фаза 2 (Premium, AI-слой) — работает»Дорогой 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_blocked | FR-06 |
| Скриншоты в evidence | полностраничный снимок флагнутой Premium-страницы (headless-Chromium/Playwright) → MinIO, показ в карточке хита; SSRF-фильтр на недоверенные URL | FR-12 |
В планах (фаза 2 — доработки)
Заголовок раздела «В планах (фаза 2 — доработки)»| Область | Статус | FR |
|---|---|---|
| Headless-рендеринг текста SPA (Playwright) | детекция и скриншоты есть, переэкстракции текста нет | FR-06 |
Инвариант себестоимости сохраняется: дешёвый детерминированный проход (Aho-Corasick + морфология) — для всех тарифов; дорогой AI-слой — только Premium и только по кандидатам.
Модули InvestiGate + Onboarding — реализовано
Заголовок раздела «Модули InvestiGate + Onboarding — реализовано»Расширение до полного жизненного цикла мерчанта (по образцу Web Shield). Всё — в admin, в одной
панели, разделено nav-группами «Мониторинг / InvestiGate / Онбординг». План — admin/ROADMAP-modules.md.
| Область | Что реализовано | FR |
|---|---|---|
| Домен Merchant/Entity | мерчант + директора/UBO, адреса, документы, сайты (FK), контакты (телефон/email/расчётный счёт); бэкфилл из sites.entity | FR-33, FR-34 |
| Onboarding intake | заявка (manual/CSV/API/form) → convert() → мерчант (+структура) + кейс; CSV-импорт мерчантов (дедуп по УНП) | FR-30, FR-32 |
| Кейс InvestiGate | жизненный цикл open→approved/declined/terminated; decision-workspace; решение проецируется на мерчанта | FR-40, FR-45 |
| Каталог индикаторов | 51 индикатор, 4 группы, traffic-light, ручная разметка | FR-41, FR-43 |
| Раннер анализа кейса | кнопка «Запустить анализ» — все деривации последовательно (прогресс) или точечно; детальная страница каждой проверки (/cases/{id}/check/{key}) | FR-50 |
| Карточка кейса (UI) | оформление в стиле Web Shield: бренд мерчанта в шапке, крупный риск-скор, сводка по индикаторам, панель 4 групп 2×2, секции CREM/OSINT/MCC | FR-47 |
| Контент-индикаторы из сканера | авто-деривация Business Classification (MCC-KB) + Content Violation (hits) + Website Compliance (наличие обязательных разделов сайта: Условия/Конфиденциальность/Возврат/Контакты/Доставка → WC%), не затирая ручное | FR-42 |
| Dynamic risk score | вычитательная модель (старт 100%, пол 1%), на кейс и на сайт, уровень LOW/MEDIUM/HIGH | FR-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 + детекция резкого скачка), 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 |
В планах (расширение продукта)
Заголовок раздела «В планах (расширение продукта)»| Область | Статус | FR |
|---|---|---|
| Остаток контент-индикаторов (Deceptive Marketing, Subscription, Price Point) | нужны новые HTML-эвристики сканера | FR-42 |
| Углублённый OSINT при онбординге (авто-поиск с кандидатами) | есть OSINT-помощник (готовые запросы по реквизитам); авто-поиск — provider (search API) | FR-30 |
| Биллинг/метеринг объёмов | учёт проверок по видам услуг, квоты/overage, Акт сверки, месячный отчёт по ОТС — admin-side, без внешних ключей | — |
| AML/sanctions, реестры/UBO, traffic-метрики Similarweb, Verdict API | требуют внешних провайдеров/ключей или вне области | FR-48, FR-49 |
Вне области (по решению заказчика)
Заголовок раздела «Вне области (по решению заказчика)»| Область | FR |
|---|---|
| OCR / vision по фото товаров — заказчику не требуется | FR-11 |
| Verdict API + Redis-кэш для PSP-шлюза | FR-15, FR-16 |
Контракты/требования остаются зафиксированными в BRD/LLD на будущее, но в работу не берём.