
# AI Otsustusmootor reaalajas tarnija küsimustiku prioriteetide seadmiseks ja riskihindamiseks

Turvaküsimustikud, nõuetele vastamise auditid ja tarnijate hindamised on iga B2B SaaS‑tehingu olulised väravad. Käsitsi sissetulevate taotluste triage tekitab siiski varjatud kulu: viivitunud tehingud, killustatud riskiteave ja ülekoormatud nõuetele vastamise meeskonnad. **Procurize** pakub juba ühtset keskpunkti küsimustike korraldamiseks, kuid järgmine evolutsiooniline samm on *otsustuskiht*, mis teab **millise** küsimustiku millega **kui** ja **kui** riskantne iga tarnija tegelikult on.

See artikkel juhatab teid **AI Otsustusmootori** kavandi, rakenduse ja äritegevusliku mõju kaudu, mis:

1. **Vastuvõtab** tarnijate signaale reaalajas ([SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) aruanded, [ISO 27001](https://www.iso.org/standard/27001) sertifikaadid, [GDPR](https://gdpr.eu/) DPO kinnitusdokumendid).  
2. **Hindab** riski hübriidse graafilise närvivõrgu (GNN) + Bayesi mudeli abil.  
3. **Prioriteedib** küsimustike jaotusi tugevdatud‑õppe ajastaja kaudu.  
4. **Süstitab** otsused tagasi Procurize’i koostöökeskkonda sujuvaks teostamiseks.

Lõpus mõistate, kuidas muuta võrgustik taotlusi andme‑põhiseks, pidevalt optimeeritavaks töövooguks, mis lühendab vastamistsükleid **kuni 70 %** ning suurendab vastuste täpsust.

---

## Miks reaalajas prioriteetimine on oluline

| Probleem | Traditsiooniline lähenemine | AI‑põhine transformatsioon |
|----------|-----------------------------|------------------------------|
| **Mahtude tõus** rahastamisvoorude või toodete käivitamise ajal | Esimesena siseneja järjekord | Dünaamiline koormustundlik ajastamine |
| **Riskide pimedad kohad** – meeskonnad kohtlevad kõiki tarnijaid võrdselt | Käsitsi riskihindamine (tihti aegunud) | Pidev riskihindamine reaalajas andmetega |
| **Ressursside raiskamine** – nooremad analüütikud vastavad madala mõjuga küsimustikele | Reeglipõhine jaotus | Oskustele vastav ülesannete jaotus |
| **Tehingu pinged** – aeglased vastused põhjustavad kaotatud võimalusi | Reaktiivne järeltegevus | Proaktiivsed teavitused kõrge väärtusega tarnijatele |

Otsustusmootor kõrvaldab „ühte suurust kõigile“ mõtteviisi, hinnates pidevalt **tarnija riski** ja **meeskonna võimekust**. Tulemuseks on *elav prioriteediloend*, mis areneb koos uue tõendiga – täpselt see, mida kaasaegsed turvalisuse‑esmased organisatsioonid vajavad.

---

## Arhitektuuri ülevaade

Allpool on kõrge taseme Mermaid‑diagramm, mis illustreerib AI Otsustusmootori põhikomponente ja andmevooge, tihedalt integreeritud olemasoleva Procurize platvormiga.

```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
```

*Kõik sõlmede silbid on topeltjutumärkidega, nagu Mermaid‑süntaks nõuab.*

### Põhilised elemendid

1. **Event Stream** – Apache Kafka (või Pulsar) püüab iga muudatuse: uued auditi aruanded, haavatavuste hoiatused, lepingumuudatused.  
2. **Feature Store** – Keskne Delta Lake hoiab kujundatud tunnuseid (nt. tarnija vanus, kontrolli küpsus, kokkupuute tase).  
3. **Hübriidne GNN + Bayesi mudel** – GNN levitab riski läbi teadmiste graafiku, samas kui Bayesi komponent lisab reguleerimise eelnevaid teadmisi.  
4. **RL Ajastaja** – mitme‑käe bandiit‑algoritm õpib, millised prioriteedimuudatused viivad kõige kiirema *tehingu sulgemise* või *riskikõikumise* vähendamiseni, kasutades tagasiside silmust päriselus.  
5. **Task Dispatcher** – kasutades Procurize’i API‑d lükkab mootor kõrge prioriteediga küsimustike piletid otse asjakohase huvirühma töölauale.

---

## Reaalajas andmete vastuvõtt

### 1. Tarnija signaalid

- **Nõuetele vastamise artefaktid**: [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) Type II, [ISO 27001](https://www.iso.org/standard/27001) sertifikaadid, [GDPR](https://gdpr.eu/) DPO kinnitusdokumendid.  
- **Operatiivne telemeetriad**: CloudTrail logid, SIEM‑hoiatused, varade inventaarid.  
- **Väline intelligentsus**: CVE‑voog, tumeda veebiruumi lekete jälgijad, kolmandate osapoolte riskiskoorid.

Kõik signaalid normaliseeritakse **kanonilisse JSON‑skeemisse** ning avaldatakse Kafka‑teemades `vendor.signals`, `policy.updates` ja `threat.intel`.

### 2. Tunnuste põhimine

Spark Structured Streaming töötab pidevalt toorandmete rikastamisega:

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

# Näide: arvutada päevade arv alates viimase auditi kuupäevast
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")
```

Selle tulemusena loodud **Delta Lake tabel** on riskimudeli allikaks.

---

## AI riskihindamise mootor

### Hübriidne graafiline närvivõrk

Tarnija‑kontrolli teadmisgraafik ühendab entiteedid:

- **Tarnija → Kontrollid** (nt „Tarnija X kasutab andmete krüpteerimist”).  
- **Kontroll → Regulatsioon** (nt „Krüpteerimine vastab GDPR artikkel 32”).  
- **Kontroll → Tõendid** (nt „Tõend #1234”).

Kasutades **PyG** (PyTorch Geometric) on kaks‑kihiline GCN riskiskoorid levitamiseks:

```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
```

Väljundvektor **x** esindab **normeeritud riski** iga tarnija sõlme puhul.

### Bayesi eelnevaasta kiht

Regulatiivsed eksperdid annavad **eelnevad tõenäosused** (nt „Kõik PHI‑käsitlevad tarnijad algavad riskiga 0,65”). Bayesi värskendus ühendab need eeldused GNN‑posteriorksi:

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

Rakendamine kasutab `pymc3` posteriori jaotuselt **usaldusvahemiku** pakkumiseks koos punktihinnanguga.

---

## Prioriteedijaja tugevdatud‑õppega

### Mitme‑käe bandiit‑modell

Iga **käsi** esindab prioriteeditaset (nt **Kiire**, **Kõrge**, **Keskmine**, **Madal**). Agent valib taseme, jälgib **tasust** (tehingu sulgemine, riskikõikumise vähenemine, analüütiku rahulolu) ja uuendab oma poliitikat.

```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
```

**Tasustamise signaal** koondab mitu KPI‑d:

- **Vastamisaeg (TTA)** vähenemine.  
- **Riskihinna vastavus** (kui hästi vastus hindatud riski leevendab).  
- **Kasutaja‑tagasiside skoor** (analüütiku hinnang ülesande olulisusele).

### Pidev õppimine

Iga 5‑minuti järel treenib RL‑agent uuesti kasutades viimase batchi tasudesid **Delta Lake** tasustustabelist. Uuendatud poliitika lükatakse **Prioriteedijärjekord** teenusesse, mõjutades koheselt järgmise batchi jaotusi.

---

## Integratsioon Procurize’iga

Procurize pakub juba:

- **`/api/v1/questionnaires`** – loetleb, loob, uuendab küsimustikke.  
- **`/api/v1/tasks/assign`** – määrab küsimustiku kasutajale/tiimile.  
- Veebikonksud (webhooks) ülesannete lõpetamise sündmusteks.

Otsustusmootor kasutab neid API‑sid ühes kergekaalulises **FastAPI** liideses:

```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)
```

Kui küsimustik märgitakse **lõpetatuks**, käivitab Procurize’i veebikonks värskenduse tasustustabelisse, sulgedes tagasiside silmu.

---

## Ärilised eelised

| Mõõdik | Enne mootorit | Pärast (30 päeva) |
|--------|---------------|-------------------|
| Keskmine TTA küsimustiku kohta | 4,3 päeva | **1,2 päeva** |
| % kõrge riskiga tarnijad käsitletud 48 h jooksul | 22 % | **68 %** |
| Analüütiku rahulolu (1‑5) | 3,1 | **4,6** |
| Tehingu kiiruse kasv (võidetud pakkumised) | 31 % | **45 %** |

**Kombineeritud mõju** – kiired vastused, parem riskikattuvus ja rahulolevamad analüütikud – annavad mõõdetavat tulude kasvu ja vähendavad nõuetele vastamise õiguslikke riske.

---

## Rakendamise ajakava (12‑nädalane sprint)

| Nädal | Tulemuseks |
|------|-------------|
| 1‑2 | Kafka‑teemade loomine, tarnija‑signaali skeemi defineerimine |
| 3‑4 | Delta Lake’i tunnuste poes, voogude kirjutamine |
| 5‑6 | GNN‑mudeli arendus, treenimine ajalooliste küsimustike andmetel |
| 7 | Bayesi eelnevaasta kiht, usaldusvahemikute kalibreerimine |
| 8‑9 | Bandiit‑ajastaja, tasuste kogumine |
| 10 | Ühendamine Procurize’i API‑dega, lõpp‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑­­— |
| 11 | A/B‑piloot superset-analüütikute grupiga |
| 12 | Globaalne käivitamine, tööstus‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑​\"|

Olulised edukuskriteeriumid: **mudeli latentsus < 500 ms**, **ajastaja konvergeerimine ≤ 200 interaktsioonis**, ning **≥ 80 % andmekvaliteet** tunnuste poes.

---

## Tulevikuväljavaated

1. **Föderaalne õppimine** – võimaldada mitmetel SaaS‑partneritel ühiselt riskimudelit parandada, jagamata toorandmeid.  
2. **Selgitav AI‑kiht** – genereerida loomuliku keele põhjendusi (nt „Tarnija X skoor on kõrge, sest viimane CVE‑2024‑1234 puudumine”).  
3. **Zero‑Trust integratsioon** – siduda otsustusmootor Zero‑Trust võrguga, et automaatselt pakkuda vähimõõdus juurdepääsu tõendite hankimiseks.  
4. **Regulatiivne digitaalne kaksik** – simuleerida tulevasi regulatsioone ja ennetavalt uuendada küsimustike prioriteete.

Otsustusmootor muutub **intelligentseks ajuks** proaktiivses nõuetele vastamise ökosüsteemis – nihutades fookust reaktsioonivastusest riskijuhtimise ennetavaks optimeerimiseks.

---

## Kokkuvõte

Küsitluste automatiseerimine on vaid pool võitu. Tõeline konkurentsieelis peitub **teadmisel, milline küsimustik vastata esimesena ja miks**. Kombineerides reaalajas andmete vastuvõtu, graafikupõhist riskihindamist ja tugevdatud‑õppe‑põhist prioriteedistamist, muundab AI Otsustusmootor nõuetele vastamise funktsiooni kitsaskeseks strateegiliseks kiirendajaks.

Selle mootori rakendamine Procurize’i koostööplatvormi peal annab turva‑, õigus‑ ja müügimeeskondadele võimaluse töötada kooskõlas, sulgeda tehinguid kiiremini ja püsida sammu ees muutuvas regulatiivses maastikus. Maailmas, kus sekundid loevad, on AI‑põhine, riskiteadlik prioriteedijärjekord järgmine hädavajalik kiht kaasaegses nõuetele vastamise automatiseerimises.

---

## Lisalugemine

- [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)