
# מנוע החלטות AI לתעדוף שאלונים בזמן אמת של ספקים והערכת סיכון

שאלוני אבטחה, בדיקות ציות והערכות ספקים הם כשערים הכרחיים עבור כל עסקת 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. **מאמד** סיכון באמצעות מודל משולב של רשת נוירונים גרפית (GNN) + מודל בייזיאני.  
3. **מתעדף** משימות שאלון דרך מתזמן מבוסס למידת חיזוק.  
4. **מאכלס** את ההחלטות חזרה למרחב העבודה השיתופי של Procurize לביצוע חלק וזרם.

בסיום, תבינו כיצד להפוך ים של בקשות לזרימת עבודה מונעת-נתונים ומותאמת באופן רציף, שמקצרת מחזות תגובה עד **70 %** תוך עליה בדיוק התשובות.

---

## מדוע תעדוף בזמן אמת הוא קריטי

| נקודת כאב | גישה קונבנציונלית | שינוי מבוסס AI |
|------------|------------------------|---------------------------|
| **קפיצות בנפח** בתקופות גיוס הון או השקות מוצר | תור של “מבקר קודם קיבל קודם” | תזמון דינמי מודע לעומס |
| **נקודות עיוורון בסיכון** – צוותים מתייחסים לכל הספקים באופן שווה | דירוג סיכון ידני (לעיתים מיושן) | דירוג סיכון רציף עם נתונים חיה |
| **בזבוז משאבים** – אנליסטים זוטרים משיבו על שאלונים בעלי השפעה נמוכה | הקצאת משימות על‑סיסה חוקים | הקצאת משימות תואמת מיומנויות |
| **חיכוך בעסקה** – תגובות איטיות גורמות להפסד הזדמנויות | מעקב תגובה תגובתי | התראות יזומות על ספקים בעלי ערך גבוה |

מנוע החלטות מבטל את החשיבה “מידה‑אחת‑מתאימה‑לכולם” על‑ידי הערכה מתמדת של **סיכון ספק** ו**קיבולת צוות**. התוצאה היא *רשימת עדיפות חיה* המתעדכנת ככל שמתקבל ממצאי חדשים – בדיוק מה שמאגרי ארגונים מודרניים הממוקדים באבטחה צריכים.

---

## סקירת ארכיטקטורה

להלן תרשים מרמיד ברמה גבוהה המתאר את הרכיבים המרכזיים והזרמת הנתונים של מנוע החלטות 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
```

*כל תוויות הצמתים מצוטטים במירכאות כפולות כפי שנדרש בתחביר מרמיד.*

### מרכיבים מרכזיים

1. **Event Stream** – Apache Kafka (או Pulsar) קולט כל שינוי: דוחות ביקורת חדשים, התראות פגיעות, עדכוני חוזה.  
2. **Feature Store** – Delta Lake מרוכז מחזיק תכונות מהונדסות (גיל הספק, בגרות בקרה, רמת חשיפה).  
3. **Hybrid GNN + Bayesian Model** – ה‑GNN מעביר סיכון דרך גרף הידע של בקרים משותפים, בעוד שהרכיב הבייזיאני מכניס ידע רגולטורי קודם.  
4. **RL Scheduler** – אלגוריתם רצועת‑קשת‑מרובה לומד אילו התאמות עדיפות מובילות לסגירת עסקה מהירה יותר או להקטנת סיכון, בעזרת תגמול מהעולם האמיתי בלולאת המשוב.  
5. **Task Dispatcher** – בהתבסס על API של Procurize, המנוע מזרים כרטיסי שאלון בעדיפות גבוהה ישירות ללוח המחוונים של בעלי תפקיד המתאימים.

---

## קלט נתונים בזמן אמת

### 1. אותות ספקים

- **מאגרי ציות**: תאריכי SOC 2, תעודות ISO 27001, תעודות DPO תחת GDPR.  
- **טלמטיה תפעולית**: יומני CloudTrail, התרעות SIEM, רשימות נכסים.  
- **מודיעין חיצוני**: פידים של CVE, מנטרי פרצות ברשת האפלה, דירוגי סיכון של צד שלישי.

כל האותות מנורמלים לסכמה JSON קנונית ומפורסמים לנושאים ב‑Kafka בשם `vendor.signals`, `policy.updates`, ו‑`threat.intel`.

### 2. הנדסת תכונות

משימת Spark Structured Streaming מעשירה באופן רציף אירועים גולמיים:

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

# Example: calculate days since last audit
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 סעיף 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` לדגימת הפוסטיריור, ומספק **מרווח בטחון** יחד עם ההערכה הנקודתית.

---

## מתזמן תעדוף באמצעות למידת חיזוק

### מודל רצועת‑קשת‑מרובה

כל **זרוע** מייצגת רמת עדיפות (למשל **דחוף**, **גבוה**, **בינוני**, **נמוך**). הסוכן בוחר רמה עבור שאלון ספק מסוים, צופה **תגמול** (עסקה נסגרה, סיכון הורד, שביעות רצון אנליסט) ומעדכן את המדיניות שלו.

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

- **קיצור זמן תגובה (TTA)**.  
- **התאמת דירוג סיכון** (כמה טוב התשובה מצמצמת את הסיכון המחושב).  
- **ציון משוב משתמש** (אנליסט מדרג רלוונטיות המשימה).

### למידה מתמשכת

כל 5 דקות הסוכן משחזר את עצמו בעזרת אצווה חדשה של תגמולים המוחזקים בטבלת **Delta Lake** של תגמולים. המדיניות המעודכנת נדחפת לשירות **תור עדיפות**, ומשפיעה מיידית על הקצאת המשימות הבאה.

---

## אינטגרציה עם Procurize

Procurize כבר חשוף:

- **`/api/v1/questionnaires`** – רשימה, יצירה, עדכון של שאלונים.  
- **`/api/v1/tasks/assign`** – הקצאת שאלון למשתמש/צוות.  
- Webhooks לאירועי סיום משימה.

מנוע ההחלטות צורך את ה‑APIs הללו בעזרת עטיפה קלה של **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** |
| עלייה במהירות עסקה (שיעור נצח) | 31 % | **45 %** |

**האפקט המשולב** של תגובות מהירות יותר, התאמת סיכון מדויקת יותר, וצוותים מרוצים מתורגם לתוספת רווח משמעותית והפחתת סיכון ציות.

---

## מפת דרכים ליישום (ספרינט של 12 שבוע)

| שבוע | מטרה |
|------|-----------|
| 1‑2 | הקמת נושאי Kafka, הגדרת סכמת אותות ספק |
| 3‑4 | בניית מאגר תכונות Delta Lake, כתיבת עבודות זרימה |
| 5‑6 | פיתוח מודל GNN, אימון על נתוני שאלונים היסטוריים |
| 7 | הוספת שכבת בייזיאן קודמת, כוונון סף בטחון |
| 8‑9 | מימוש מתזמן רצועת‑קשת, איסוף תגמול |
| 10 | חיבור ל‑APIs של Procurize, בדיקת השלמת‑ל‑השלמת |
| 11 | פיילוט A/B על קבוצה מצומצמת של אנליסטי ציות |
| 12 | השקה גלובלית, הקמת לוחות ניטור והתראות |

קריטריוני הצלחה כוללים **זמני השיהוי של המודל < 500 מ'\**', **קונברגציה של המתזמן תוך 200 אינטראקציות**, ו-**≥ 80 % איכות נתונים** בחנות התכונות.

---

## מבט לעתיד

1. **הרחבת למידה פדרטיבית** – לאפשר למספר ספקי SaaS לשפר את מודל הסיכון במשותף ללא שיתוף נתונים גולמיים.  
2. **שכבת AI מוסברת** – להפיק נימוקים בשפה טבעית (לדוגמה, “ספק X קיבל דירוג גבוה עקב חשיפה לאחרונה ל‑CVE‑2024‑1234”).  
3. **אינטגרציית Zero‑Trust** – לשלב את מנוע ההחלטות עם רשת Zero‑Trust לאספקת גישה של מינימום הרשאות לאיסוף ראיות.  
4. **תאום דיגיטלי רגולטורי** – לדמות תרחישי רגולציה עתידיים ולתעדף שאלונים מראש.

המנוע הופך ל‑**מוח** של מערכת ציות פרואקטיבית—מעביר את המיקוד מהתשובה למענה על **איזה** שאלון לענות **מתי** ולמה. כך צוותי אבטחה, משפטי ומכירות פועלים בתיאום, סוגרים עסקאות מהר יותר ונשארים צעד אחד לפני הדרישות הרגולטוריות המשתנות.

---

## סיכום

אוטומציה של מתן תשובות לשאלונים היא רק המחצית מהאתגר. היתרון האמתי נעוץ ב‑**ידע איזה שאלון לענות ראשית ולמה**. על‑ידי מיזוג קלט בזמן אמת, דירוג סיכון מבוסס גרף, ותזמון מבוסס למידת חיזוק, מנוע החלטות AI משנה את פונקציית הציות מנקודת חונק למאיץ אסטרטגי.

הטמעת מנוע זה על גבי פלטפורמת העבודה השיתופית של Procurize מאפשרת לצוותי אבטחה, משפט ו‑sales לעבוד בתיאום, לסגור עסקאות מהר יותר, ולהקדים את דרישות הרגולציה המתפתחות. בעולם שבו שניות קובעות, תור עדיפות מבוסס AI, מודע לסיכון, הוא השכבה החיונית הבאה באוטומציה של ציות מודרני.

---

## ראה עוד

- [NIST SP 800‑53 Rev 5 – מסגרת ניהול סיכון](https://csrc.nist.gov/publications/detail/sp/800-53/rev-5/final)  
- [ISO/IEC 27001:2022 – ניהול אבטחת מידע](https://www.iso.org/standard/73906.html)  
- [Google Cloud Blog: בניית צינור ML בזמן אמת עם Kafka ו‑Vertex AI](https://cloud.google.com/blog/topics/inside-google-cloud/building-real-time-ml-pipelines)