
# AI motor odlučivanja za prioritetizaciju upitnika dobavljača u stvarnom vremenu i ocjenjivanje rizika

Sigurnosni upitnici, revizije usklađenosti i procjene dobavljača ključni su čuvari za svaku B2B SaaS transakciju. Međutim, ručna triage dolaznih zahtjeva često stvara skriveni trošak: odgođeni poslovi, fragmentirani uvid u rizik i preopterećeni timovi za usklađenost. **Procurize** već pruža jedinstveni hub za organiziranje upitnika, ali sljedeći evolucijski korak je *sloj odlučivanja* koji zna **koji** upitnik riješiti **kada**, i **koliko** je svaki dobavljač stvarno rizičan.

Ovaj članak vodi vas kroz dizajn, implementaciju i poslovni učinak **AI motora odlučivanja** koji:

1. **Prikuplja** vendor signale u stvarnom vremenu ([SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) izvještaje, [ISO 27001](https://www.iso.org/standard/27001) certifikate, [GDPR](https://gdpr.eu/) DPO atestacije).  
2. **Ocjenjuje** rizik koristeći hibridni Graph Neural Network (GNN) + Bayesov model.  
3. **Prioritetizira** zadatke upitnika putem rasporeda vođenog učenjem pojačanja.  
4. **Vraća** odluke natrag u Procurize‑ov kolaborativni radni prostor za besprijekornu provedbu.

Na kraju ćete razumjeti kako pretvoriti more zahtjeva u podatkovno‑vođen, kontinuirano optimiziran tijek rada koji skraćuje cikluse odgovora i do **70 %** povećava točnost odgovora.

---

## Zašto je prioritetizacija u stvarnom vremenu važna

| Problem | Konvencionalni pristup | Transformacija s AI-om |
|------------|------------------------|---------------------------|
| **Nagli porast volumena** tijekom rundi financiranja ili lansiranja proizvoda | Red po principu tko prvi dođe, prvi bude poslužen | Dinamičko raspoređivanje uzimajući u obzir opterećenje |
| **Sjene rizika** – timovi tretiraju sve dobavljače jednako | Ručna ocjena rizika (često zastarjela) | Kontinuirano ocjenjivanje rizika uz žive podatke |
| **Gubitak resursa** – junior analitičari odgovaraju na upitnike niskog utjecaja | Dodjeljivanje po pravilima | Dodjela zadataka prema vještinama |
| **Trenutci otpora u poslovanju** – spori odgovori dovode do izgubljenih prilika | Reaktivno praćenje | Proaktivna upozorenja za visoko vrijedne dobavljače |

Motor odlučivanja uklanja mentalitet „jedna veličina za sve“ stalnim preispitivanjem **rizika dobavljača** i **kapaciteta tima**. Rezultat je *živi popis prioriteta* koji se razvija kako se pojavljuju novi podaci — upravo ono što moderna, sigurnosno‑prve organizacije zahtijevaju.

---

## Pregled arhitekture

Ispod je visokorazinski Mermaid dijagram koji prikazuje ključne komponente i tokove podataka AI motora odlučivanja, usko integriranog s postojećom platformom Procurize.

```mermaid
graph LR
    subgraph Prikupljanje podataka
        A[""Signali dobavljača u stvarnom vremenu""]
        B[""Repozitorij politika""]
        C[""Izvor obavijesti o prijetnjama""]
        A --> D[""Tok događaja (Kafka)""]
        B --> D
        C --> D
    end

    subgraph Ocjenjivanje rizika
        D --> E[""Trgovina značajkama (Delta Lake)""]
        E --> F[""Hibridni GNN + Bayesov model""]
        F --> G[""Rizik ocjena (0‑100)""]
    end

    subgraph Raspored prioritetizacije
        G --> H[""Agent učenja pojačanja""]
        H --> I[""Red prioriteta""]
        I --> J[""Dispečer zadataka (Procurize)""]
    end

    subgraph Povratna sprega
        J --> K[""Korisnička akcija & povratna informacija""]
        K --> L[""Signal nagrade (RL)""]
        L --> H
    end
```

*Svaki naziv čvora je dvostruko naveden, što je potrebno za Mermaid sintaksu.*

### Ključni elementi

1. **Tok događaja** – Apache Kafka (ili Pulsar) bilježi svaku promjenu: novi revizijski izvještaji, upozorenja o ranjivostima, ažuriranja ugovora.  
2. **Trgovina značajkama** – Centralizirani Delta Lake pohranjuje inženjerske značajke (npr. starost dobavljača, zrelost kontrola, razina izloženosti).  
3. **Hibridni GNN + Bayesov model** – GNN širi rizik kroz graf znanja međusobno povezanih kontrola, dok Bayesov komponent ubrizgava prethodno regulatorno znanje.  
4. **RL raspoređivač** – Algoritam multi‑armed bandit uči koje prilagodbe prioriteta dovode do najbržeg *zaključenja posla* ili *smanjenja rizika*, koristeći nagrade iz povratne sprege.  
5. **Dispečer zadataka** – Kroz Procurize‑ov API, motor gura visokoprioritetne tikete upitnika izravno na nadzornu ploču odgovarajućeg dionika.

---

## Prikupljanje podataka u stvarnom vremenu

### 1. Signali dobavljača

- **Sigurnosni artefakti**: [SOC 2](https://secureframe.com/hub/soc-2/what-is-soc-2) Type II, [ISO 27001](https://www.iso.org/standard/27001) certifikati, [GDPR](https://gdpr.eu/) DPO atestacije.  
- **Operativna telemetrija**: CloudTrail dnevnici, SIEM upozorenja, inventari imovine.  
- **Vanjski izvori**: CVE feed‑ovi, monitori tamnog weba, ocjene rizika trećih strana.

Svi signali se normaliziraju u **kanonički JSON shemu** i objavljuju na Kafka teme pod nazivima `vendor.signals`, `policy.updates` i `threat.intel`.

### 2. Inženjering značajki

Spark Structured Streaming job kontinuirano obogaćuje sirove događaje:

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

# Primjer: izračun dana od posljednje revizije
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")
```

Rezultirajuća **Delta Lake tablica** postaje izvor za model rizika.

---

## AI motor za ocjenjivanje rizika

### Hibridni Graph Neural Network

Graf znanja dobavljača‑kontrola povezuje entitete:

- **Dobavljač → Kontrole** (npr. „Dobavljač X primjenjuje enkripciju‑u‑miru”).  
- **Kontrola → Regulator** (npr. „Enkripcija‑u‑miru zadovoljava GDPR Art. 32”).  
- **Kontrola → Dokaz** (npr. „Dokaz #1234”).

Korištenjem **PyG** (PyTorch Geometric), dvoslojni GCN propagira ocjene rizika:

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

Izlazni vektor `x` predstavlja **normalizirani rizik** po čvoru dobavljača.

### Bayesov prior sloj

Regulatorni stručnjaci pružaju **prior**‑e (npr. „Svi dobavljači koji obrađuju PHI započinju s baznim rizikom od 0,65”). Bayesova ažuriranja spajaju ove prior‑e s posterior‑om GNN‑a:

\[
P(Rizik \mid Podaci) = \frac{P(Podaci \mid Rizik) \cdot P(Rizik)}{P(Podaci)}
\]

Implementacija koristi `pymc3` za uzorkovanje posterior‑a, isporučujući **interval povjerenja** uz točnu procjenu.

---

## Raspored prioritetizacije uz Reinforcement Learning

### Formulacija multi‑armed bandita

Svaka **ručka** odgovara prioritetnoj razini (npr. **Hitno**, **Visoko**, **Srednje**, **Nisko**). Agent bira razinu za određeni upitnik, promatra **nagradu** (zaključenje posla, smanjenje rizika, zadovoljstvo analitičara) i ažurira svoju politiku.

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

**Signal nagrade** objedinuje više KPI‑ja:

- **Smanjenje vremena odgovora (TTA)**.  
- **Usklađenost ocjene rizika** (koliko odgovor smanjuje procijenjeni rizik).  
- **Ocjena povratne informacije korisnika** (ocjena analitičara relevantnosti zadatka).

### Kontinuirano učenje

Svaki 5 minuta RL agent ponovno trenira koristeći najnoviji batch nagrada pohranjenih u **Delta Lake tablicu nagrada**. Ažurirana politika zatim se prosljeđuje servisu **Priority Queue**, odmah utječući na sljedeću seriju zadataka.

---

## Integracija s Procurize‑om

Procurize već nudi:

- **`/api/v1/questionnaires`** – popis, kreiranje, ažuriranje upitnika.  
- **`/api/v1/tasks/assign`** – dodjela upitnika korisniku/timu.  
- Webhook‑ove za događaje dovršetka zadataka.

Decision Engine koristi ove API‑e putem laganog **FastAPI** omotača:

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

Kada se upitnik označi **završetkom**, Procurize‑ov webhook aktivira ažuriranje tablice nagrada, zatvarajući povratnu spregu.

---

## Poslovni učinci

| Metrika | Prije motora | Nakon motora (30 dana) |
|--------|---------------|------------------------|
| Prosječno vrijeme odgovora po upitniku (TTA) | 4,3 dana | **1,2 dana** |
| % dobavljača s visokim rizikom obrađenih u roku od 48 h | 22 % | **68 %** |
| Zadovoljstvo analitičara (1‑5) | 3,1 | **4,6** |
| Povećanje brzine sklapanja poslova (stopa dobitka) | 31 % | **45 %** |

**Kompozitni učinak** bržih odgovora, bolje usklađenosti rizika i zadovoljnijih analitičara pretvara se u mjerljiv rast prihoda i smanjenje pravnih rizika.

---

## Plan implementacije (12‑tjedna sprint)

| Tjedan | Milestone |
|------|-----------|
| 1‑2 | Postaviti Kafka teme, definirati shemu vendor‑signala |
| 3‑4 | Izgraditi Delta Lake trgovinu značajkama, napisati streaming poslove |
| 5‑6 | Razviti GNN model, trenirati na povijesnim podacima upitnika |
| 7 | Dodati Bayesov prior sloj, kalibrirati pragove povjerenja |
| 8‑9 | Implementirati bandit raspoređivač, integrirati prikupljanje nagrada |
| 10 | Povezati s Procurize API‑jima, testirati end‑to‑end dispečer |
| 11 | Provesti A/B pilot s podskupom timova za usklađenost |
| 12 | Globalni rollout, uspostaviti nadzor i dashboarde za upozorenja |

Ključni kriteriji uspjeha: **latencija modela < 500 ms**, **konvergencija rasporeda unutar 200 interakcija**, i **≥ 80 % kvalitete podataka** u trgovini značajkama.

---

## Perspektiva za budućnost

1. **Proširenje federiranog učenja** – Omogućiti više SaaS partnera zajedničko poboljšavanje modela rizika bez dijeljenja sirovih podataka.  
2. **Sloj objašnjive AI** – Generirati prirodni jezik razloge (npr. „Dobavljač X dobiva visoku ocjenu zbog nedavnog CVE‑2024‑1234”).  
3. **Integracija s Zero‑Trust** – Spojiti motor odlučivanja s Zero‑Trust mrežom za automatsko provisioniranje najmanjih privilegija za dohvat dokaza.  
4. **Digitalni blizanac regulatora** – Simulirati buduće regulatorne scenarije i proaktivno re‑prioritizirati upitnike.

Motor odlučivanja postaje **mozak** proaktivnog ekosustava usklađenosti — pomičući se od reaktivnog generiranja odgovora prema anticipativnom upravljanju rizikom.

---

## Zaključak

Automatizacija odgovora na upitnike je tek pola bitke. Prava konkurentska prednost leži u **znanju koji upitnik odgovoriti prvo i zašto**. Spojivanjem prikupljanja podataka u stvarnom vremenu, graf‑baziranog ocjenjivanja rizika i rasporeda vođenog učenjem pojačanja, AI motor odlučivanja pretvara funkciju usklađenosti iz uskog grla u strateški akcelerator.

Implementacija ovog motora na vrhu Procurize‑ove kolaborativne platforme osnažuje timove za sigurnost, pravne i prodaju da rade sinkronizirano, brže zaključe poslove i ostanu ispred stalno mijenjajućih regulatornih zahtjeva. U svijetu gdje sekunde odlučuju, AI‑vođen, rizikom‑svjestan red prioriteta je sljedeći ključni sloj moderne automatizacije usklađenosti.

---

## Pogledajte još

- [NIST SP 800‑53 Rev 5 – Okvir upravljanja rizicima](https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final)  
- [ISO/IEC 27001:2022 – Sustav upravljanja informacijskom sigurnošću](https://www.iso.org/standard/73906.html)  
- [Google Cloud Blog: Izgradnja real‑time ML pipeline‑ova s Kafka‑om i Vertex AI](https://cloud.google.com/blog/topics/inside-google-cloud/building-real-time-ml-pipelines)