
# Dirbtinio intelekto sprendimų variklis realiojo laiko tiekėjo klausimynų prioritetizavimui ir rizikos įvertinimui

Saugumo klausimynai, atitikties auditai ir tiekėjų vertinimai yra būtinos vartų saugotojai kiekvienam B2B SaaS sandoriui. Vis dėlto rankinis įeinančių užklausų triage dažnai sukelia paslėptą kainą: vėluojančius sandorius, fragmentišką rizikos įžvalgą ir perkrautą atitikties komandą. **Procurize** jau suteikia vieningą centrą klausimynų organizavimui, tačiau kitas evoliucijos žingsnis yra *sprendimų priėmimo sluoksnis*, kuris žino **kurį** klausimyną spręsti **kada** ir **kiek** rizikingas kiekvienas tiekėjas iš tikrųjų.

Šiame straipsnyje supažindinsime jus su **AI Decision Engine** dizainu, įgyvendinimu ir verslo poveikiu, kuris:

1. **Surinks** tiekėjų signalus realiu laiku ([SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) ataskaitas, [ISO 27001](https://www.iso.org/standard/27001) sertifikatus, [GDPR](https://gdpr.eu/) DPO patvirtinimus).  
2. **Įvertins** riziką naudojant hibridinį grafų neuroninį tinklą (GNN) + Bayeso modelį.  
3. **Nustatys** klausimynų prioritetus per stiprinamo mokymosi planuotoją.  
4. **Perduos** sprendimus atgal į Procurize bendradarbiavimo darbo vietą sklandžiam vykdymui.

Po šio skaitymo suprasite, kaip iš šimto užklausų padaryti duomenimis pagrįstą, nuolat optimizuojamą procesą, kuris sutrumpina atsakymo ciklus iki **70 %** ir padidina atsakymo tikslumą.

---

## Kodėl svarbu realaus laiko prioritetizavimas

| Problema | Tradicinis požiūris | AI sprendžiamas transformacija |
|----------|----------------------|--------------------------------|
| **Srauto viršūnės** finansavimo raundų ar produktų pradžios metu | Eilė pagal atvykimo laiką | Dinaminis krūvio suvokimas |
| **Rizikos aklumai** – komandos traktuojamos visi tiekėjai vienodai | Rankinis rizikos įvertinimas (dažnai pasenęs) | Nuolatinis rizikos įvertinimas su tiesioginiais duomenimis |
| **Išteklių švaistymas** – jaunesni analitikai atsako į mažai svarbius klausimynus | Taisyklėmis pagrįsta paskirstymo sistema | Užduočių paskirstymas pagal įgūdžius |
| **Sandorių trukdžiai** – lėti atsakymai sukelia prarastus galimybes | Reaktyvių pratęsimų sistema | Proaktyvūs įspėjimai apie aukštos vertės tiekėjus |

Sprendimų variklis pašalina „vieno dydžio visiems“ požiūrį, nuolat persvarstydamas **tiekėjo riziką** ir **komandos pajėgumus**. Rezultatas – *gyvas prioritetų sąrašas*, kuris keičiasi, kai tik atsiranda naujų įrodymų – būtent to, ko reikia šiuolaikinėms saugumas pirmaujančioms organizacijoms.

---

## Architektūros apžvalga

Žemiau pateiktas aukšto lygio Mermaid diagrama, kuri parodo pagrindinius komponentus ir duomenų srautus, susijusius su AI Decision Engine, glaudžiai integruotą į esamą Procurize platformą.

```mermaid
graph LR
    subgraph Data Ingestion
        A["Realiojo laiko tiekėjo signalai"]
        B["Politikų saugykla"]
        C["Grėsmės žvalgybos srautas"]
        A --> D["Įvykių srautas (Kafka)"]
        B --> D
        C --> D
    end

    subgraph Risk Scoring
        D --> E["Savybių saugykla (Delta Lake)"]
        E --> F["Hibridinis GNN + Bayeso modelis"]
        F --> G["Rizikos įvertinimas (0‑100)"]
    end

    subgraph Prioritization Scheduler
        G --> H["Stiprinamo mokymosi agentas"]
        H --> I["Prioritetų eilė"]
        I --> J["Užduočių siųstėjas (Procurize)"]
    end

    subgraph Feedback Loop
        J --> K["Vartotojo veiksmas ir atsiliepimai"]
        K --> L["Apdovanojimo signalas (RL)"]
        L --> H
    end
```

*Visi mazgų pavadinimai yra dvigubomis kabutėmis, kaip reikalauja Mermaid sintaksė.*

### Pagrindiniai elementai

1. **Įvykių srautas** – Apache Kafka (arba Pulsar) fiksuoja kiekvieną pakeitimą: naujas audito ataskaitas, pažeidžiamumo įspėjimus, sutarties atnaujinimus.  
2. **Savybių saugykla** – Centralizuota Delta Lake saugo išgautas funkcijas (pvz., tiekėjo amžių, kontrolės brandumą, eksponavimo lygį).  
3. **Hibridinis GNN + Bayeso modelis** – GNN skleidžia riziką per žinių grafiką, susietą kontrolėmis, o Bayeso komponentas įterpia ankstesnę reguliacinę žinią.  
4. **Stiprinamo mokymosi planuotojas** – Multi‑armed bandit algoritmas mokosi, kurie prioritetų koregavimai veda prie greičiausio *sandorio užbaigimo* arba *rizikos mažinimo*, naudojant realaus pasaulio apdovanojimus iš atgalinio ryšio.  
5. **Užduočių siųstėjas** – Pasinaudodamas Procurize API, variklis tiesiogiai paslepia aukštų prioritetų klausimynų bilietus atitinkamų suinteresuotų šalių skydeliuose.

---

## Realiojo laiko duomenų surinkimas

### 1. Tiekėjo signalai

- **Atitikties artefaktai**: [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) Type II, [ISO 27001](https://www.iso.org/standard/27001) sertifikatai, [GDPR](https://gdpr.eu/) DPO patvirtinimai.  
- **Operaciniai telemetrijos duomenys**: CloudTrail įrašai, SIEM įspėjimai, turto inventoriai.  
- **Išoriniai šaltiniai**: CVE srautai, tamsaus tinklo įsilaužimų monitoriai, trečiųjų šalių rizikos įvertinimai.

Visi signalai normalizuojami į **kanoninę JSON schemą** ir skelbiami į Kafka temas: `vendor.signals`, `policy.updates` ir `threat.intel`.

### 2. Funkcijų inžinerija

„Spark Structured Streaming“ darbas nuolat praturtina žaliuosius įvykius:

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

# Pavyzdys: apskaičiuoti dienų skaičių nuo paskutinio audito
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")
```

Gautas **Delta Lake lentelė** tampa rizikos modelio šaltiniu.

---

## Dirbtinio intelekto rizikos įvertinimo variklis

### Hibridinis grafų neuroninis tinklas

Tiekėjo‑kontrolės žinių grafas susieja:

- **Tiekėjas → Kontrolės** (pvz., „Tiekėjas X įgyvendina šifravimą poilsio metu“).  
- **Kontrolė → Reguliavimas** (pvz., „Šifravimas atitinka GDPR 32 straipsnį“).  
- **Kontrolė → Įrodymas** (pvz., „Įrodymas #1234“).

Naudojant **PyG** (PyTorch Geometric), dviejų sluoksnių GCN skleidžia rizikos įvertinimus:

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

Išvesties vektorius `x` - tai **normuotas rizikos įvertinimas** kiekvienam tiekėjo mazgui.

### Bayeso prioro sluoksnis

Reguliavimo ekspertai pateikia **priorus** (pvz., „Visi tiekėjai, kurie tvarko PHI, pradedami su bazine rizika 0,65“). Bayeso atnaujinimas sujungia šiuos priorus su GNN posteriorais:

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

Implementacija naudojant `pymc3` generuoja **pasitikėjimo intervalą** kartu su taškiniu įvertinimu.

---

## Prioritetų planuotojas su stiprinamu mokymusi

### Multi‑Armed Bandit formulavimas

Kiekviena **ranka** atitinka prioritetų lygį (pvz., **Skubūs**, **Aukšti**, **Vidutiniai**, **Žemi**). Agentas pasirenka lygį konkrečiam klausimynui, stebi **apdovanojimą** (užbaigtas sandoris, sumažinta rizika, analitiko pasitenkinimas) ir atnaujina politiką.

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

**Apdovanojimo signalas** apima keletą KPI:

- **Atsakymo laiko (TTA)** sumažinimas.  
- **Rizikos įverčio atitikimas** (kaip gerai atsakymas sumažina skaičiuotą riziką).  
- **Vartotojo atsiliepimai** (analitiko įvertinimas, kaip svarbi buvo užduotis).

### Nuolatinis mokymasis

Kas 5 minutes RL agentas perskaito naujausią apdovanojimų paketą, saugomą **Delta Lake** apdovanojimų lentelėje, atnaujina politiką ir įraukia ją į **Prioritetų eilės** servisą – tokiu būdu iš karto veikia kitos užduotys.

---

## Integracija su Procurize

Procurize jau siūlo:

- **`/api/v1/questionnaires`** – klausimynų sąrašas, kūrimas, atnaujinimas.  
- **`/api/v1/tasks/assign`** – užduoties paskirstymas naudotojui / komandai.  
- Webhook’us užbaigtoms užduotims.

Sprendimų variklis naudoja šias API per lengvą **FastAPI** wrapperį:

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

Kai klausimynas pažymimas **baigtu**, Procurize webhook'as atnaujina apdovanojimo lentelę, užbaigiant atgalinį ciklą.

---

## Verslo nauda

| Metriška | Prieš variklį | Po variklio (30 d.) |
|----------|----------------|---------------------|
| Vidutinis TTA vienam klausimynui | 4,3 dienos | **1,2 dienos** |
| % aukštos rizikos tiekėjų, atsakytų per 48 h | 22 % | **68 %** |
| Analitiko pasitenkinimas (1‑5) | 3,1 | **4,6** |
| Sandorio greičio padidėjimas (užbaigimo rodiklis) | 31 % | **45 %** |

**Sujungtos priemonės** – greitesni atsakymai, geresnis rizikos susiejimas ir laimingesnės komandos – virsta realiais pajamų augimo ir sumažintų atitikties išlaidų rezultatais.

---

## Įgyvendinimo planas (12‑ savaitės sprintas)

| Savaitė | Etapas |
|---------|--------|
| 1‑2 | Sukurti Kafka temas, apibrėžti tiekėjo signalų schemą |
| 3‑4 | Įgyvendinti Delta Lake savybių saugyklą, parašyti srauto darbus |
| 5‑6 | Parengti GNN modelį, išmokyti su istoriniais klausimynų duomenimis |
| 7 | Pridėti Bayeso priorų sluoksnį, sukalibruoti pasitikėjimo slenksčius |
| 8‑9 | Įdiegti banditų planuotoją, integruoti apdovanojimų rinkimą |
| 10 | Prijungti prie Procurize API, atlikti end‑to‑end testus |
| 11 | Vykdyti A/B pilotą su dalimi atitikties analitikų |
| 12 | Visuotinai įdiegti, sukurt monitoringo ir įspėjimų skydelius |

Svarbūs sėkmės rodikliai: **modelio vėlavimas < 500 ms**, **planuotojo konvergencija per 200 interakcijų**, ir **≥ 80 % duomenų kokybės** savybių saugykloje.

---

## Ateities perspektyvos

1. **Federacinio mokymosi plėtra** – leisti kelioms SaaS partnerystėms kartu tobulinti rizikos modelį be žaliavinių duomenų dalijimosi.  
2. **Paaiškinamo AI sluoksnis** – generuoti natūralaus kalbos pagrindus (pvz., „Tiekėjas X įvertintas aukštai dėl neseniai aptikto CVE‑2024‑1234“).  
3. **Zero‑Trust integracija** – susieti sprendimų variklį su Zero‑Trust tinklu, automatiškai suteikti minimalias prieigos teises į įrodymus.  
4. **Reguliacinio skaitmeninio dvynio modelis** – simuliuoti ateities reguliavimo scenarijus ir iš anksto perskirstyti klausimynų prioritetus.

Sprendimų variklis tampa **protinga** ir **risikos‑orientuota** atitikties ekosistemos „smegenimi“ – perkeliant komandą iš reakcijos į proaktyvų rizikos valdymą.

---

## Išvada

Automatizuoti klausimynų atsakymus – tik pusė kovos. Tikras konkurencinis pranašumas slypi **žinant, kurį klausimyną atsakyti pirmiausia ir kodėl**. Sujungiant realiojo laiko duomenų surinkimą, grafų pagrindu veikiančius rizikos įvertinimus ir stiprinamo mokymosi prižiūrimą prioritetų nustatymą, AI Decision Engine paverčia atitikties funkciją iš spausdinimo įgertį į strateginį akseleratorių.

Įgyvendinus šį variklį ant Procurize bendradarbiavimo platformos, saugumo, teisinių ir pardavimų komandos veikia sinchroniškai, užbaigia sandorius greičiau ir išlieka priekyje nuolat kintančių reguliacinių reikalavimų. Ten, kur sekundės svarbios, AI‑pagrįsta, rizika‑orientuota prioritetų eilė tampa būtinu šiuolaikinės atitikties automatizacijos sluoksniu.