# GVSS Vaidio Agent

סוכן מקומי (relay) שמחבר שרת **Vaidio** שחסום מהענן (geo-block / firewall) אל מערכת
הספירה בענן. הסוכן רץ **בתוך רשת המשרד** (שמורשית להגיע ל-Vaidio), מושך זיהויים
מקומית, ושולח אותם **החוצה** ל-`/api/vaidio/ingest`. הענן לעולם לא מתחבר פנימה.

## למה זה בטוח
- **רק יוצא** — לסוכן אין פורט מאזין; אי אפשר להגיע אליו מבחוץ.
- **HTTPS עם אימות תעודה** לענן; **טוקן ייחודי לכל סוכן** (Bearer) שתואם למערכת בענן.
- **ללא תלויות צד-ג'** — נבנה מספריית התקן של Go בלבד (קוד פתוח לביקורת).
- מומלץ חשבון Vaidio **קריאה-בלבד**. סודות יושבים ב-`config.json` בלבד (לא נכתבים ללוג) —
  שמור על הרשאות הקובץ; אל תעלה אותו ל-git (כבר ב-`.gitignore`).

## מודל "אפס-תחזוקה" (zero-touch)
מגרסה 1.2: **כל ההגדרות מנוהלות בממשק הענן** (כתובת Vaidio, שם משתמש, סיסמה, מצלמה,
LPR/פנים). הקובץ המקומי `config.json` מחזיק **רק זהות** — כתובת הענן והטוקן:
```json
{ "cloud_url": "https://count.gvss.co.il", "agent_token": "<הטוקן ממסך המערכת>" }
```
הסוכן מושך את שאר ההגדרות מהענן בכל מחזור. שינית מצלמה/כתובת בדפדפן? הסוכן מתעדכן לבד —
בלי לגעת במחשב.

## התקנה (חד-פעמית, על מחשב במשרד/חנות שדלוק תמיד)
> אין צורך להתקין Go — קובץ `vaidio-agent.exe` כבר כלול בחבילה.
>
> ⚠ **Windows 11 + Smart App Control:** ה-exe אינו חתום, ולכן SAC יחסום אותו
> ("Smart App Control blocked an app…", בלי כפתור Run anyway). הדרך החינמית: הרץ
> `setup-agent.ps1 -Token "..."` כ-Administrator — מטפל ב-SAC אוטומטית בהתקנה.
> פירוט מלא + מסלול החתימה לעתיד: **WINDOWS-SAC-SIGNING.md**.

1. בממשק הענן: **הוספת מערכת → Vaidio → סוכן** — מלא כתובת/משתמש/סיסמה/מצלמה ושמור. הטוקן מוצג שם.
2. חלץ את ה-ZIP לתיקייה קבועה (לדוגמה `C:\GVSS\vaidio-agent`).
3. צור `config.json` מתוך `config.example.json` והדבק את הטוקן (זה כל מה שצריך למלא).
4. הרץ פעם אחת לבדיקה: לחיצה כפולה על `vaidio-agent.exe`.
   - יופיע **אייקון נקודה צבעונית ליד השעון** שמשנה צבע לפי המצב (ראה למטה). לחיצה ימנית → סטטוס חי.
   - הסטטוס אמור להפוך **🟢 ירוק = "✓ פעיל"**. אפשר "פתח קובץ לוג" לראות `heartbeat ok`.
   - אם האייקון **⚪ אפור** ("טרם הוגדר") — חזור לשלב 1 והשלם את פרטי ה-Vaidio בממשק.
5. עליה אוטומטית בכל הפעלה + restart-on-failure:
   ```powershell
   powershell -ExecutionPolicy Bypass -File .\install-task.ps1
   ```
   הסוכן עולה אוטומטית בכניסת המשתמש וחוזר מעצמו מכל כשל: יציאה/קריסה → עולה שוב תוך
   דקה; **תקוע אבל חי** (לולאת הדגימה נתקעה) → watchdog פנימי מפיל את התהליך כדי שיעלה
   טרי; רץ גם **על סוללה** ולא נעצר במעבר לסוללה (לפטופ / UPS / הבהוב חשמל).
   > הערה: ההפעלה היא בכניסת המשתמש (כדי שאייקון השעון יופיע). במחשב חנות ודא
   > **התחברות אוטומטית (Auto-Login)** כדי שהסוכן יעלה כבר עם הדלקת המחשב, בלי המתנה לכניסה ידנית.

## אייקון ליד השעון (system tray)
**צבע האייקון = מצב הסוכן (מגרסה 1.4):**
- 🟢 **ירוק** — הכול תקין: הסוכן מושך מ-Vaidio ושולח לענן בהצלחה.
- 🔴 **אדום** — תקלה: הענן לא נגיש או Vaidio לא מגיב (ראה שורת הסטטוס/הלוג).
- ⚪ **אפור** — טרם הוגדר: הסוכן עלה אך עדיין חסרות הגדרות Vaidio בממשק הענן (השלם אותן ושמור).

לחיצה ימנית על האייקון:
- **שורת סטטוס** — ✓ פעיל / ✗ Vaidio לא נגיש / ✗ הענן לא נגיש / ⚙ טרם הוגדר (עם שעת עדכון).
- **רענן חיבור עכשיו** — מושך מ-Vaidio ושולח לענן מיד.
- **פתח קובץ לוג** — `vaidio-agent.log` (יומן הפעילות).
- **עצור סוכן…** — מציג אזהרה ברורה ("הספירה תיפסק") ורק אז עוצר. יעלה שוב בהפעלה הבאה.

## מופע יחיד
לא ניתן להריץ שני עותקים של אותו סוכן (אותו `counter_id`) על אותו מחשב — הניסיון השני
נעצר מיד (נרשם ביומן). כך נמנע בלבול וכפילויות. אפשר כן להריץ סוכנים שונים (מצלמות/חנויות
שונות) על אותו מחשב.

## איפה הסוכן רץ
הסוכן מדווח לענן את **שם המחשב, כתובת ה-IP והגרסה** בכל heartbeat. במסך ניהול המערכות
בענן רואים ליד כל מערכת היכן הסוכן רץ ומתי דיווח לאחרונה.

## ניטור
הסוכן שולח heartbeat כל 30 שניות (גם בלי זיהויים, וגם אם Vaidio לא מגיב — עם דגל שגיאה).
אם הענן לא מקבל heartbeat מעל **10 דקות** → המערכת מסמנת תקלה בדשבורד ושולחת מייל
לגלעד וללקוח המשויך (וחוזרת בתדירות שנקבעה בממשק — ברירת מחדל 120 דק', 0=כיבוי — + מייל התאוששות).

## הסרה
```powershell
Unregister-ScheduledTask -TaskName "GVSS Vaidio Agent" -Confirm:$false
```

---
### בנייה מחדש (למפתחים בלבד)
נבנה בלי תלויות חיצוניות. במחשבים עם Smart App Control שחוסם את `asm.exe`, אפשר לבנות
דרך toolchain של Linux (למשל WSL/קונטיינר) בהצלבה ל-Windows:
```bash
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags "-H windowsgui -s -w" -o vaidio-agent.exe .
```
