
# AI‑движок принятия решений для приоритизации и оценки риска вопросов поставщиков в реальном времени

Security‑questionnaires, compliance audits и vendor assessments являются важными контролирующими механизмами для каждой B2B SaaS‑транзакции. Однако ручная сортировка входящих запросов часто создаёт скрытую стоимость: задержки сделок, фрагментарное представление о риске и перегрузка команд комплаенса. **Procurize** уже предоставляет единый центр для организации вопросов, но следующий эволюционный шаг —  *слой принятия решений*, который знает **какой** вопрос решать **когда** и **насколько** рискован каждый поставщик.

В этой статье мы пройдемся по дизайну, реализации и бизнес‑влиянию **AI‑движка принятия решений**, который:

1. **Приём** сигналы поставщиков в реальном времени (отчёты [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2), сертификаты [ISO 27001](https://www.iso.org/standard/27001), подтверждения DPO по [GDPR](https://gdpr.eu/)).  
2. **Оценка** риска с помощью гибридной модели Graph Neural Network (GNN) + Bayesian.  
3. **Приоритизация** распределения вопросов через планировщик, основанный на обучении с подкреплением.  
4. **Обратная связь**: решения автоматически попадают в совместную рабочую область Procurize для бесшовного исполнения.

К концу вы поймёте, как превратить океан запросов в управляемый, постоянно оптимизируемый процесс, сокращающий циклы ответов до **70 %** при росте точности ответов.

---

## Почему приоритизация в реальном времени имеет значение

| Проблема | Традиционный подход | AI‑трансформация |
|----------|----------------------|-------------------|
| **Всплески объёма** во время раундов финансирования или запусков продуктов | Очередь «первый пришёл — первый обслужен» | Динамическое планирование с учётом нагрузки |
| **Слепые зоны риска** — команды одинаково относятся ко всем поставщикам | Ручная оценка риска (часто устаревшая) | Непрерывная оценка риска на основе живых данных |
| **Трата ресурсов** — младшие аналитики отвечают на малозначимые вопросы | Правила‑основанное распределение | Распределение задач по навыкам |
| **Трение в сделке** — медленные ответы приводят к упущенным возможностям | Реактивное последующее взаимодействие | Проактивные оповещения о поставщиках с высоким потенциалом |

Движок принятия решений устраняет мышление «один размер подходит всем», постоянно переоценивая **риск поставщика** и **вместимость команды**. Результат —  *живой список приоритетов*, который меняется по мере появления новых данных, что идеально подходит современным организациям, ставящим безопасность на первое место.

---

## Обзор архитектуры

Ниже представлена диаграмма Mermaid высокого уровня, иллюстрирующая основные компоненты и потоки данных AI‑движка принятия решений, тесно интегрированного с платформой Procurize.

```mermaid
graph LR
    subgraph Data Ingestion
        A[""Real‑Time Vendor Signals""]
        B[""Policy Repository""]
        C[""Threat Intel Feed""]
        A --> D[""Event Stream (Kafka)""]
        B --> D
        C --> D
    end

    subgraph Risk Scoring
        D --> E[""Feature Store (Delta Lake)""]
        E --> F[""Hybrid GNN + Bayesian Model""]
        F --> G[""Risk Score (0‑100)""]
    end

    subgraph Prioritization Scheduler
        G --> H[""Reinforcement Learning Agent""]
        H --> I[""Priority Queue""]
        I --> J[""Task Dispatcher (Procurize)""]
    end

    subgraph Feedback Loop
        J --> K[""User Action & Feedback""]
        K --> L[""Reward Signal (RL)""]
        L --> H
    end
```

*Все подписи узлов заключены в двойные кавычки, как того требует синтаксис Mermaid.*

### Ключевые элементы

1. **Event Stream** — Apache Kafka (или Pulsar) фиксирует каждое изменение: новые аудиторские отчёты, оповещения об уязвимостях, обновления контрактов.  
2. **Feature Store** — централизованный Delta Lake хранит инженерные признаки (например, возраст поставщика, зрелость контроля, уровень экспозиции).  
3. **Hybrid GNN + Bayesian Model** — GNN распространяет риск по графу знаний контролей, а Bayesian‑компонент привносит ранее заданные регуляторные знания.  
4. **RL Scheduler** — алгоритм multi‑armed bandit учится, какие корректировки приоритета приводят к самым быстрым *закрытиям сделок* или *снижению риска*, используя реальные награды из обратной связи.  
5. **Task Dispatcher** — используя API Procurize, движок отправляет билеты с высоким приоритетом непосредственно в дашборд соответствующего сотрудника.

---

## Приём данных в реальном времени

### 1. Сигналы поставщиков

- **Артефакты комплаенса**: отчёты [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) Type II, сертификаты [ISO 27001](https://www.iso.org/standard/27001), подтверждения DPO по [GDPR](https://gdpr.eu/).  
- **Оперативная телеметрия**: логи CloudTrail, сигналы SIEM, инвентари активов.  
- **Внешний интеллект**: фиды CVE, мониторинг тёмных веб‑источников, сторонние рейтинги риска.

Все сигналы нормализуются в **каноничную JSON‑схему** и публикуются в топики Kafka `vendor.signals`, `policy.updates` и `threat.intel`.

### 2. Инжиниринг признаков

Задача Spark Structured Streaming постоянно обогащает сырые события:

```python
from pyspark.sql import functions as F

# Пример: вычисление дней с последнего аудита
df = spark.readStream.format("kafka").option("subscribe", "vendor.signals").load()
parsed = df.selectExpr("CAST(value AS STRING) as json").select(F.from_json("json", schema).alias("data"))
features = parsed.withColumn(
    "days_since_audit",
    F.datediff(F.current_date(), F.col("data.last_audit_date"))
)
features.writeStream.format("delta").option("checkpointLocation", "/tmp/checkpoints").start("/mnt/feature-store")
```

Получившаяся **таблица Delta Lake** становится источником для модели риска.

---

## AI‑движок оценки риска

### Гибридная графовая нейронная сеть

Граф знаний «поставщик ↔ контроль» связывает сущности:

- **Поставщик → Контролли** (например, «Поставщик X реализует шифрование‑при‑хранении»).  
- **Контроль → Регуляция** (например, «Шифрование‑при‑хранении удовлетворяет GDPR Art. 32»).  
- **Контроль → Доказательство** (например, «Доказательство #1234»).

С помощью **PyG** (PyTorch Geometric) реализуем двухслойный GCN, распространяющий оценки риска:

```python
import torch
from torch_geometric.nn import GCNConv

class RiskGNN(torch.nn.Module):
    def __init__(self, in_dim, hidden_dim, out_dim):
        super().__init__()
        self.conv1 = GCNConv(in_dim, hidden_dim)
        self.conv2 = GCNConv(hidden_dim, out_dim)

    def forward(self, x, edge_index):
        x = torch.relu(self.conv1(x, edge_index))
        x = torch.sigmoid(self.conv2(x, edge_index))
        return x
```

Вектор `x` после выхода представляет **нормализованный риск** для каждого узла‑поставщика.

### Байесовский слой приоритов

Эксперты регуляторов задают **приориты** (например, «Все поставщики, работающие с PHI, начинают с базового риска 0.65»). Байесовское обновление объединяет эти приориты с постериорным распределением GNN:

\[
P(Risk | Data) = \frac{P(Data | Risk) \cdot P(Risk)}{P(Data)}
\]

Реализация использует `pymc3` для выборки постериорных распределений, выдавая **интервал доверия** вместе с точечной оценкой.

---

## Планировщик приоритизации с обучением с подкреплением

### Формулировка задачи как multi‑armed bandit

Каждая **рука** соответствует уровню приоритета (например, **Срочно**, **Высокий**, **Средний**, **Низкий**). Агент выбирает уровень для конкретного вопроса, наблюдает **награждение** (закрытие сделки, снижение риска, удовлетворённость аналитика) и обновляет свою политику.

```python
import numpy as np

class BanditAgent:
    def __init__(self, n_arms=4):
        self.n = n_arms
        self.counts = np.zeros(n_arms)
        self.values = np.zeros(n_arms)

    def select_arm(self):
        epsilon = 0.1
        if np.random.rand() > epsilon:
            return np.argmax(self.values)
        else:
            return np.random.randint(0, self.n)

    def update(self, chosen_arm, reward):
        self.counts[chosen_arm] += 1
        n = self.counts[chosen_arm]
        value = self.values[chosen_arm]
        self.values[chosen_arm] = ((n - 1) / n) * value + (1 / n) * reward
```

**Наградный сигнал** агрегирует несколько KPI:

- **Time‑to‑Answer (TTA)** — сокращение времени ответа.  
- **Risk‑Score Alignment** — насколько ответ снижает рассчитанный риск.  
- **User‑Feedback Score** — оценка аналитиком релевантности задачи.

### Непрерывное обучение

Каждые 5 минут агент переобучается на последнем батче наград, хранящихся в **таблице наград Delta Lake**. Обновлённая политика тут же передаётся в сервис **Priority Queue**, мгновенно влияя на следующий набор заданий.

---

## Интеграция с Procurize

Procurize уже предоставляет API:

- **`/api/v1/questionnaires`** — список, создание, обновление вопросов.  
- **`/api/v1/tasks/assign`** — назначение вопроса пользователю/команде.  
- Webhook‑и для событий завершения задач.

Движок использует эти API через лёгкую обёртку на **FastAPI**:

```python
import httpx

async def dispatch_task(vendor_id, priority):
    payload = {
        "vendor_id": vendor_id,
        "priority": priority,
        "due_date": (datetime.utcnow() + timedelta(days=2)).isoformat()
    }
    async with httpx.AsyncClient() as client:
        await client.post("https://api.procurize.com/v1/tasks/assign", json=payload, headers=auth_header)
```

Когда вопрос помечен как **завершён**, webhook Procurize генерирует запись в таблице наград, завершая обратный цикл.

---

## Бизнес‑выгоды

| Метрика | До внедрения | После (30 дней) |
|---------|--------------|----------------|
| Среднее время ответа (TTA) | 4.3 дня | **1.2 дня** |
| % поставщиков с высоким риском, обработанных в течение 48 ч | 22 % | **68 %** |
| Удовлетворённость аналитиков (1‑5) | 3.1 | **4.6** |
| Рост скорости сделок (win‑rate) | 31 % | **45 %** |

**Суммарный эффект** — быстрее ответы, лучшая согласованность с риском и более довольные сотрудники, что переводится в измеримый рост выручки и снижение юридических рисков.

---

## План реализации (12‑недельный спринт)

| Неделя | Этап |
|--------|------|
| 1‑2 | Настройка топиков Kafka, определение схемы vendor‑signal |
| 3‑4 | Создание хранилища признаков Delta Lake, написание streaming‑задач |
| 5‑6 | Разработка модели GNN, обучение на исторических данных вопросов |
| 7 | Добавление Bayesian‑слоя, калибровка порогов уверенности |
| 8‑9 | Реализация bandit‑планировщика, сбор наградных метрик |
| 10 | Подключение к API Procurize, тест сквозного диспетчеринга |
| 11 | A/B‑пилот с небольшой группой аналитиков комплаенса |
| 12 | Глобальный rollout, настройка мониторинга и дашбордов |

Ключевые критерии успеха: **задержка модели < 500 мс**, **конвергенция планировщика после ≤ 200 интеракций**, и **≥ 80 % качества данных** в хранилище признаков.

---

## Перспективы развития

1. **Federated Learning** — возможность совместного улучшения модели risk‑scoring между несколькими SaaS‑партнёрами без обмена сырыми данными.  
2. **Explainable AI** — генерация естественноязыковых объяснений (например, «Поставщик X получил высокий риск из‑за недавней уязвимости CVE‑2024‑1234»).  
3. **Zero‑Trust интеграция** — парное использование движка с Zero‑Trust сетью для автоматического предоставления минимально‑необходимого доступа к доказательствам.  
4. **Digital Twin регуляций** — симуляция будущих нормативных сценариев и проактивная пере‑приоритизация вопросов.

В конечном итоге движок станет **мозгом** проактивной экосистемы комплаенса — перемещая её от реактивного ответа к предвидящему управлению рисками.

---

## Заключение

Автоматизация ответов на вопросы — это только половина задачи. Истинное конкурентное преимущество заключается в **понимании, какой вопрос отвечать первым и почему**. Объединив приём данных в реальном времени, графовую оценку риска и планирование на основе обучения с подкреплением, AI‑движок превращает функцию комплаенса из узкого места в стратегический ускоритель.

Внедрение этого движка поверх совместной платформы Procurize даёт возможность security, legal и sales‑командам работать в унисон, быстрее закрывать сделки и опережать постоянно меняющиеся требования регуляторов. В мире, где секунды имеют значение, AI‑управляемая, риск‑ориентированная очередь приоритетов — это следующий обязательный слой современной автоматизации комплаенса.

---

## Смотрите также

- [NIST SP 800‑53 Rev 5 – Risk Management Framework](https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final)  
- [ISO/IEC 27001:2022 – Information Security Management](https://www.iso.org/standard/73906.html)  
- [Google Cloud Blog: Building Real‑Time ML Pipelines with Kafka and Vertex AI](https://cloud.google.com/blog/topics/inside-google-cloud/building-real-time-ml-pipelines)