
# تشخیص پیوسته انحراف سیاست با هوش مصنوعی برای دقت پرسشنامه زمان واقعی

## مقدمه  

پرسشنامه‌های امنیتی، حسابرسی‌های انطباق و ارزیابی‌های فروشنده، حیات اعتماد در اکوسیستم SaaS B2B هستند. با این حال **طبیعت ایستایی** اکثر ابزارهای خودکارسازی پرسشنامه، ریسکی پنهان ایجاد می‌کند: پاسخ‌های تولید‑شده می‌توانند بلافاصله پس از تغییر یک سیاست، انتشار یک مقررات جدید یا به‌روزرسانی یک کنترل داخلی کهن شوند.  

**انحراف سیاست** – اختلاف بین سیاست‌های مستند و وضعیت واقعی سازمان – یک قاتل ساکن انطباق است. بازبینی‌های دستی سنتی تنها پس از یک نقص یا حسابرسی ناموفق انحراف را می‌دانند و هزینه‌های رفع هزینه‌بر را به دنبال دارند.

ورودی **تشخیص پیوسته انحراف سیاست (CPDD)**، یک موتور مجهز به هوش مصنوعی است که در قلب پلتفرم Procurize قرار دارد. CPDD به‌صورت مستمر تمام منابع سیاست را نظارت می‌کند، تغییرات را بر روی یک گراف دانش متحد می‌نگارد و سیگنال‌های تأثیر را به قالب‌های پرسشنامه در زمان واقعی منتقل می‌کند. نتیجه **پاسخ‌های همیشه تازه و آمادۀ حسابرسی** بدون نیاز به بازنگری دستی کامل در هر فصل است.

در این مقاله ما:

1. توضیح می‌دهیم چرا انحراف سیاست برای دقت پرسشنامه مهم است.  
2. معماری CPDD را مرور می‌کنیم؛ شامل جذب داده، همگام‌سازی گراف دانش، و تحلیل تأثیر مبتنی بر هوش مصنوعی.  
3. نشان می‌دهیم CPDD چگونه با جریان کاری موجود Procurize (تخصیص کار، نظرگذاری و پیوند شواهد) یکپارچه می‌شود.  
4. راهنمای پیاده‌سازی دقیق، شامل نمودار Mermaid و نمونه کدها ارائه می‌دهیم.  
5. مزایای قابل اندازه‌گیری و نکات بهترین‌روش برای تیم‌های پذیرنده CPDD را بحث می‌کنیم.

---

## 1. چرا انحراف سیاست یک آسیب‌پذیری بحرانی است  

| علامت | ریشه‌ی مشکل | تأثیر تجاری |
|-------|--------------|-------------|
| **کنترل‌های امنیتی قدیمی** در پاسخ‌های پرسشنامه | به‌روزرسانی سیاست‌ها در مخزن مرکزی اما عدم انعکاس در قالب پرسشنامه | حسابرسی‌های ناموفق، از دست دادن معاملات |
| **عدم تطابق با مقررات** | انتشار مقررات جدید اما تازه‌سازی ماتریس انطباق انجام نشده | جریمه‌ها، مواجهه قانونی |
| **ناسازگاری شواهد** | شواهد (مانند گزارش‌های اسکن) تاریخ‌گذشته اما همچنان به‌عنوان جاری ارجاع داده می‌شود | آسیب به اعتبار |
| **افزایش کارهای دستی** | تیم‌ها ساعت‌ها صرف جستجوی «چه تغییری رخ داد؟» پس از ارتقای نسخه سیاست می‌کنند | کاهش بهره‌وری |

**به صورت عددی**، گارتنر پیش‌بینی می‌کند تا سال ۲۰۲۶ **۳۰ ٪ از شرکت‌ها حداقل یک رخداد عدم انطباق ناشی از مستندات سیاست قدیمی را تجربه خواهند کرد**. هزینه پنهان فقط نقص نیست؛ بلکه **زمان صرف شده برای تطبیق پس از وقوع** نیز است.

تشخیص پیوسته این پارادایم *پس از وقوع* را از بین می‌برد. با نمایش انحراف **در همان لحظه‌ای که اتفاق می‌افتد**، CPDD امکان می‌دهد:

- **به‌روزرسانی خودکار پاسخ‌ها** – هنگام تغییر کنترل، پاسخ‌ها به‌صورت خودکار به‌روز می‌شوند.  
- **امتیازدهی ریسک پیش‌گیرانه** – نمرات اطمینان بخش‌های تاثیر‌دیده فوراً بازمحاسبه می‌شوند.  
- **یکپارچگی ردپای حسابرسی** – هر رویداد انحراف با شواهد قابل ردیابی ثبت می‌شود و نیازهای «چه کسی، چه چیزی، چه زمان، چرا» رگولاتورها را برآورده می‌کند.

---

## 2. نمای کلی معماری CPDD  

در زیر نمای سطح بالای موتور CPDD داخل Procurize نشان داده شده است.  

```mermaid
graph LR
    subgraph "Source Ingestion"
        A["Policy Repo (GitOps)"] 
        B["Regulatory Feed (RSS/JSON)"]
        C["Evidence Store (S3/Blob)"]
        D["Change Logs (AuditDB)"]
    end

    subgraph "Core Engine"
        E["Policy Normalizer"] 
        F["Knowledge Graph (Neo4j)"]
        G["Drift Detector (LLM + GNN)"]
        H["Impact Analyzer"]
        I["Auto‑Suggest Engine"]
    end

    subgraph "Platform Integration"
        J["Questionnaire Service"]
        K["Task Assignment"]
        L["Comment & Review UI"]
        M["Audit Trail Service"]
    end

    A --> E
    B --> E
    C --> E
    D --> E
    E --> F
    F --> G
    G --> H
    H --> I
    I --> J
    J --> K
    K --> L
    H --> M
```

**اجزای کلیدی شرح داده شده**

1. **منابع ورودی** – داده‌ها از مخازن سیاست مبتنی بر Git، فیدهای قانونی (مثلاً NIST، GDPR)، مخازن شواهد (S3) و لاگ‌های تغییرات CI/CD جمع‌آوری می‌شوند.  
2. **نرمالایزر سیاست** – اسناد متنوع (Markdown، YAML، PDF) را به قالب کاننیکال JSON‑LD تبدیل می‌کند تا برای بارگذاری در گراف آماده باشد. متادیتاهایی همچون نسخه، تاریخ اعتبار و مالک نیز استخراج می‌شود.  
3. **گراف دانش (Neo4j)** – سیاست‌ها، کنترل‌ها، شواهد و بندهای قانونی به‌صورت **گره‌ها** و **روابط** (مانند *“implements”*، *“requires”*، *“affects”*) ذخیره می‌شوند؛ این گراف منبع واحد حقیقت برای معنای انطباق است.  
4. **تشخیص انحراف** – مدل ترکیبی:
   - **LLM** توصیفات متنی تغییرات را تجزیه و تحلیل می‌کند و انحراف معنایی را نشانه می‌گیرد.  
   - **GNN** با مقایسه تعبیه‌های گره‌های نسخه قبلی و جدید، انحراف ساختاری را محاسبه می‌کند.  
5. **تحلیل تأثیر** – گراف را برای پیدا کردن آیتم‌های پرسشنامه، شواهد و نمرات ریسک وابسته به انحراف مرور می‌کند.  
6. **موتور پیشنهاد خودکار** – به‌روزرسانی‌های پیشنهادی برای پاسخ‌های پرسشنامه، پیوندهای شواهد و نمرات ریسک را با استفاده از **تولید تقویت‌شده با بازیابی (RAG)** تولید می‌کند.  
7. **یکپارچگی پلتفرم** – پیشنهادات را به سرویس پرسشنامه می‌فرستد، برای صاحبان ایجاد کار می‌کند، در UI نظرات را نشان می‌دهد و همه چیز را در سرویس ردپای حسابرسی ثبت می‌کند.

---

## 3. CPDD در عمل: جریان کامل  

### گام ۱: راه‌اندازی ورودی  
یک توسعه‌دهنده فایل سیاست جدید `access_logging.yaml` را به مخزن GitOps ادغام می‌کند. وب‌هوک مخزن، سرویس جذب ورودی Procurize را مطلع می‌سازد.

### گام ۲: نرمال‌سازی و به‌روزرسانی گراف  
نرمالایزر سیاست موارد زیر را استخراج می‌کند:

```yaml
policy_id: "POL-00123"
title: "Access Logging Requirements"
effective_date: "2025-10-15"
controls:
  - id: "CTRL-LOG-01"
    description: "All privileged access must be logged for 12 months"
    evidence: "logging_config.json"
```

این گره‌ها در Neo4j به‌روزرسانی می‌شوند و به گرهٔ موجود `CTRL-LOG-01` لینک می‌شوند.

### گام ۳: تشخیص انحراف  
GNN تعبیهٔ گرهٔ `CTRL-LOG-01` قبل و بعد از ادغام را مقایسه می‌کند. پیام کمیت: “Extend log retention from 6 months to 12 months”. هر دو مدل به وجود **انحراف معنایی** توافق می‌دهند.

### گام ۴: تحلیل تأثیر  
پیمایش گراف موارد زیر را شناسایی می‌کند:

- پرسشنامه **Q‑001** («چقدر زمان لاگ‌های دسترسی ویژه نگهداری می‌شود؟») که در حال حاضر با «6 ماه» پاسخ داده شده است.  
- شواهد **E‑LOG‑CONFIG** که هنوز به `retention: 6m` اشاره دارد.

### گام ۵: پیشنهاد خودکار و ایجاد کار  
موتور پیشنهاد خودکار موارد زیر را تهیه می‌کند:

- **به‌روزرسانی پاسخ**: «ما لاگ‌های دسترسی ویژه را به مدت **12 ماه** نگهداری می‌کنیم.»  
- **به‌روزرسانی شواهد**: پیوست آخرین `logging_config.json` با تنظیم نگهداری جدید.  
- **تنظیم نمره ریسک**: افزایش اطمینان از ۰.۸۴ به ۰.۹۶.

یک کار برای صاحب انطباق با مهلت ۲۴ ساعت ایجاد می‌شود.

### گام ۶: مرور انسانی و ثبت  
صاحب انطباق پیشنهاد را در UI مرور می‌کند، تایید می‌کند و نسخهٔ پرسشنامه به‌صورت خودکار به‌روز می‌شود. ردپای حسابرسی رویداد انحراف، پیشنهادها و اقدام تایید را ثبت می‌کند.

### گام ۷: حلقه مستمر  
اگر رگولاتوری جدیدی در NIST منتشر شود که الزامات لاگینگ را جایگزین کند، همان جریان دوباره اجرا می‌شود و اطمینان می‌شود که پرسشنامه هرگز از هماهنگی خارج نمی‌شود.

---

## 4. راهنمای پیاده‌سازی  

### ۴.۱. پیکربندی خط لوله جذب  

```goat
pipeline:
  - name: git_poll
    type: webhook
    repo: "git@github.com:company/policies.git"
    branch: "main"
  - name: regulator_feed
    type: http_poll
    url: "https://api.regulators.io/v1/updates"
    schedule: "hourly"
  - name: evidence_sync
    type: s3_sync
    bucket: "company-evidence"
    prefix: "compliance/"
```

### ۴.۲. نمونه نرمالایزر (Python)

```python
import yaml, json, hashlib
from pathlib import Path

def load_policy(file_path: Path):
    raw = yaml.safe_load(file_path.read_text())
    # تبدیل به فرمت کاننیکال
    canon = {
        "id": raw["policy_id"],
        "title": raw["title"],
        "effective": raw["effective_date"],
        "controls": [
            {
                "id": c["id"],
                "desc": c["description"],
                "evidence": c["evidence"]
            } for c in raw.get("controls", [])
        ],
        "checksum": hashlib.sha256(file_path.read_bytes()).hexdigest()
    }
    return canon

def upsert_to_neo4j(policy_json):
    # شبه‑کد، فرض می‌کنیم یک درایور Neo4j به نام `graph` داریم
    graph.run("""
        MERGE (p:Policy {id: $id})
        SET p.title = $title,
            p.effective = $effective,
            p.checksum = $checksum
        WITH p
        UNWIND $controls AS ctrl
        MERGE (c:Control {id: ctrl.id})
        SET c.desc = ctrl.desc
        MERGE (p)-[:IMPLIES]->(c)
        MERGE (c)-[:EVIDENCE]->(:Evidence {path: ctrl.evidence})
    """, **policy_json)
```

### ۴.۳. تشخیص انحراف (مدل ترکیبی)

```python
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch
import torch_geometric.nn as geom_nn

# LLM برای تشخیص متنی
tokenizer = AutoTokenizer.from_pretrained("google/flan-t5-base")
model = AutoModelForSequenceClassification.from_pretrained("flan-t5-base-finetuned-drift")

def textual_drift(commit_msg: str) -> bool:
    inputs = tokenizer(commit_msg, return_tensors="pt")
    logits = model(**inputs).logits
    prob = torch.softmax(logits, dim=-1)[0,1].item()   # اندیس 1 = drift
    return prob > 0.7

# GNN برای تشخیص ساختاری
class DriftGNN(geom_nn.MessagePassing):
    # مثال ساده
    ...

def structural_drift(old_emb, new_emb) -> bool:
    distance = torch.norm(old_emb - new_emb)
    return distance > 0.5
```

### ۴.۴. کوئری تحلیل تأثیر (Cypher)

```cypher
MATCH (c:Control {id: $control_id})-[:EVIDENCE]->(e:Evidence)
MATCH (q:Questionnaire)-[:ASKS]->(c)
RETURN q.title AS questionnaire, q.id AS qid, e.path AS outdated_evidence
```

### ۴.۵. پیشنهاد خودکار با RAG

```python
from langchain import OpenAI, RetrievalQA

vector_store = ...   # تعبیه‌های پاسخ‌های موجود
qa = RetrievalQA.from_chain_type(
    llm=OpenAI(model="gpt-4o-mini"),
    retriever=vector_store.as_retriever()
)

def suggest_update(question_id: str, new_control: dict):
    context = qa.run(f"Current answer for {question_id}")
    prompt = f"""The control "{new_control['id']}" changed its description to:
    "{new_control['desc']}". Update the answer accordingly and reference the new evidence "{new_control['evidence']}". Provide the revised answer in plain text."""
    return llm(prompt)
```

### ۴.۶. ایجاد کار (REST)

```http
POST /api/v1/tasks
Content-Type: application/json

{
  "title": "Update questionnaire answer for Access Logging",
  "assignee": "compliance_owner@example.com",
  "due_in_hours": 24,
  "payload": {
    "question_id": "Q-001",
    "suggested_answer": "...",
    "evidence_path": "logging_config.json"
  }
}
```

---

## 5. مزایا و معیارها  

| معیار | پیش از CPDD | پس از CPDD (متوسط) | بهبود |
|-------|--------------|-------------------|--------|
| **زمان تکمیل پرسشنامه** | ۷ روز | ۱.۵ روز | ۷۸ % سریع‌تر |
| **ساعات مراجعه دستی به انحراف** | ۱۲ ساعت / ماه | ۲ ساعت / ماه | ۸۳ % کاهش |
| **امتیاز اطمینان آماده‑حسابرسی** | ۰.۷۱ | ۰.۹۴ | +۰.۲۳ |
| **رویدادهای نقص مقررات** | ۳ / سال | ۰ / سال | ۱۰۰ % حذف |

### چک‌لیست بهترین‌روش  

1. **تمام سیاست‌ها را در سیستم کنترل نسخه نگهداری کنید** – Git با کامیت‌های امضا شده.  
2. **فیدهای قانونی را هم‌راستا کنید** – از RSS/JSON رسمی استفاده کنید.  
3. **مالکیت واضح تعریف کنید** – هر گره سیاست به یک فرد مسئول مرتبط شود.  
4. **آستانه‌های انحراف را تنظیم کنید** – آستانه‌های اطمینان LLM و فاصله GNN را برای جلوگیری از نویز تنظیم کنید.  
5. **با CI/CD یکپارچه کنید** – تغییرات سیاست را به عنوان دارایی‌های اولویت‌دار در نظر بگیرید.  
6. **ردپای حسابرسی را نظارت کنید** – اطمینان حاصل کنید که هر رویداد انحراف غیرقابل تغییر و جستجو باشد.

---

## 6. مطالعه موردی واقعی (مشتری Procurize X)

**پیش‌زمینه** – مشتری X، یک ارائه‌دهندهٔ SaaS متوسط، ۱۲۰ پرسشنامه امنیتی را در ۳۰ فروشنده مدیریت می‌کرد. آن‌ها میانگین تاخیر ۵ روز بین به‌روزرسانی سیاست و اصلاح پرسشنامه داشتند.

**پیاده‌سازی** – CPDD بر روی نمونهٔ موجود Procurize نصب شد. سیاست‌ها از مخزن GitHub جذب شد، فید قانونی اتحادیه اروپا متصل شد و پیشنهاد خودکار برای به‌روزرسانی پاسخ‌ها فعال شد.

**نتایج (پایلوت ۳ ماهه)**  

- **زمان تکمیل** از ۵ روز به ۰.۸ روز کاهش یافت.  
- **ساعات صرف‑شده توسط تیم انطباق** ۱۵ ساعت در ماه صرفه‌جویی شد.  
- **هیچ یافته حسابرسی** مرتبط با محتوای منقضی پرسشنامه گزارش نشد.  

مشتری بیشترین ارزش را در **قابلیت شفافیت ردپای حسابرسی** یافت که نیاز **ISO 27001** برای «مدارک مستند تغییرات» را برآورده می‌کرد.

---

## 7. پیشرفت‌های آینده  

1. **یکپارچه‌سازی اثبات صفر‑دانش** – اعتبار شواهد را بدون افشای داده‌ها تأیید کنید.  
2. **یادگیری فدرال بین مشتریان** – مدل‌های تشخیص انحراف را به‌اشتراک بگذارید در حالی که حریم خصوصی حفظ می‌شود.  
3. **پیش‌بینی انحراف سیاست** – با مدل‌های سری‑زمانی پیش‌بینی کنید که چه مقرراتی به‌زودی تغییر می‌کنند.  
4. **بررسی صوتی** – به صاحبان انطباق اجازه دهید پیشنهادها را با فرمان‌های صوتی امن تأیید کنند.

---

## نتیجه‌گیری  

تشخیص پیوسته انحراف سیاست رویکرد انطباق را از **مقابل‌عملی به پیشگیرانه** تبدیل می‌کند. ترکیب تجزیه و تحلیل معنایی مبتنی بر هوش مصنوعی، انتشار تأثیر مبتنی بر گراف و یکپارچگی روان با پلتفرم، اطمینان می‌دهد که هر پاسخ پرسشنامه امنیتی بازتاب دقیق وضعیت جاری سازمان باشد.

پذیرش CPDD نه تنها **هزینه‌های دستی را به‌طور چشمگیر کاهش** می‌دهد و **اعتماد حسابرسی را تقویت** می‌کند، بلکه **پست‌قوت سازمانی** شما را در برابر موج بی‌وقفهٔ تغییرات قانونی آماده می‌سازد.

*آماده‌اید تا انحراف سیاست را از جریان کاری پرسشنامه‌تان حذف کنید؟* با تیم Procurize تماس بگیرید و نسل جدید خودکارسازی انطباق را تجربه کنید.