# الرؤية المحلية (VLM) — خصوصية قصوى للمدارس والصحة (PDPL)

> الكشف السلوكي (عراك/تنمّر/سقوط/`custom_vlm`) يمرّ عبر مزوّد رؤية قابل للتبديل
> (`app/vlm.py`). لأقصى خصوصية: **شغّل النموذج على خادم داخل المنشأة/داخل السعودية**
> فلا تغادر الصور المبنى — يقفل ورقة PDPL للمدارس والصحة، ويبقى النظام edge-first حتى في الذكاء.

## النموذج الموصى (2026): SmolVLM2-Video ⭐

| النموذج | الحجم | لماذا |
|---|---|---|
| **SmolVLM2-256M/500M-Video** (Apache, ONNX) | 256M/500M | **صغير جداً + يفهم الفيديو/اللقطات المتتالية** — يعمل على صندوق الحافة/Mini PC. مثالي للخصوصية القصوى بموارد محدودة. |
| **Qwen2.5-VL-3B/7B** (Apache) | 3–7B | جودة حكم أعلى + عربي قوي + JSON — لخادم فرع أقوى أو GPU. |
| moondream-2b | 2B | **واصف فقط** (لا يُصدر حكم JSON) — لا يصلح للأحكام؛ اختبار العرض فقط. |

> `HuggingFaceTB/SmolVLM2-500M-Video-Instruct` · `HuggingFaceTB/SmolVLM2-256M-Video-Instruct`

## التشغيل (واجهة متوافقة مع OpenAI)

**vLLM** (يُنصح — يخدم SmolVLM2/Qwen-VL بواجهة OpenAI):
```bash
vllm serve HuggingFaceTB/SmolVLM2-500M-Video-Instruct --port 8000
# → http://<server>:8000/v1  (chat/completions مع صور)
```
**بدائل:** LM Studio / Ollama (عند توفّر GGUF)، أو llama.cpp server.

## ربطه بـ Veedon (بلا تغيير كود)
```powershell
$env:VEEDON_VLM_PROVIDER = "ollama"        # أي مزوّد OpenAI-compatible
$env:VEEDON_VLM_URL      = "http://<server>:8000/v1"
$env:VEEDON_VLM_MODEL    = "HuggingFaceTB/SmolVLM2-500M-Video-Instruct"
```
يُضبط على **السيرفر السحابي** (حيث يعمل `/api/device/analyze`). لخصوصية قصوى اجعل هذا
الخادم **داخل الفرع/داخل السعودية** — فيبقى الاستدلال في بنيتك لا عند طرف ثالث.

## ملاحظات
- مسار الكود (`vlm._openai_compatible`) يرسل **لقطات متتالية**؛ SmolVLM2/Qwen متعدد الصور
  فيحلّل التسلسل الزمني (عراك/سقوط)، وموندريم أحادي فيسقط لآخر لقطة تلقائياً.
- القوالب عربية وتطلب JSON — تحتاج نموذجاً يتبع التعليمات (SmolVLM2/Qwen، لا moondream).
- بديل الجودة القصوى: مفتاح Claude (`ANTHROPIC_API_KEY`) — سحابي.
