BatchPulse היא פלטפורמת automation מלאה שתורמת תבנית בקשת HTTP אחת ל”רצים” מקבילים מרובי־שורות. נבנתה מאפס: backend FastAPI אמיתי שרץ עכשיו על zbang-api, ארבע טבלאות PostgreSQL (batchpulse_batches, batchpulse_runs, batchpulse_rows, batchpulse_settings), סקדולר אסינכרוני שעובד כל 5 שניות, ופרונט גלאסמורפי עם 6 sections, 4 גרפי SVG ייחודיים ו־4 codex images.
5+ יכולות נפרדות שעובדות יחד:
- קונסולה רב־פאנלית — רשימת batches, טבלת ריצות, ופאנל דריל־דאון לכל שורה בריצה. בחירה ב־run מציגה את כל השורות עם קוד תגובה, latency ופלט מקוצר.
- קומפוזר תבניות — עורך URL/headers/body בסגנון Jinja
{{ var }}עם תצוגה מקדימה חיה מ־/api/batchpulse/compose/preview. רנדר וריאבלים בלי לשגר בקשה. - אנליטיקה חיה — 4 גרפים: timeline של avg ו־p95 latency, donut של status codes, throughput bars לפי run, ו־health rings עם 4 KPIs. הכל מ־
compute_analytics()על SQL. - ניהול הגדרות רב־שלבי — 3 tabs (כללי / אבטחה / התראות), שמירה ב־
/api/batchpulse/settingsעם תקרת RPS, SSRF blocklist, webhook callback ואחוז שגיאות להתראה. - סקדולר אסינכרוני — לולאת
asyncioשמגלה ריצות בתור, מפיצה למשימות מקבילות עם rate-limit ו־retry אקספוננציאלי, ומעדכנת DB אחרי כל שורה. - הגנת SSRF משוכבת — חסימת private IPs (10.x/172.16-31/192.168.x/127.x), metadata endpoints של AWS/GCP, ו־allowlist מותאם אישית — לפני כל שיגור.
ניתן לקנפג:
- שם workspace, אימייל אופרטור, User-Agent ברירת מחדל
- תקרת RPS גלובלית ומקסימום שורות לריצה
- Hosts חסומים (CSV)
- Webhook callback URL בסיום ריצה
- סף אחוז שגיאות להתראה
תוצאות אמיתיות (e2e שאומת בזמן build):
- POST
/api/batchpulse/runsעם 4 שורות ← הסקדולר אסף, ביצע בקשות אמיתיות ל־httpbin.org, וקיבל 3 הצלחות + 1 שגיאת 404 שעברה retry. avg latency 324ms, p95=406ms. - 3 batches שנזרעו אוטומטית + 70 שורות היסטוריות שאוכלסו את הגרפים.
- כל endpoint שני (
/bootstrap,/batches,/runs/{id}/rows,/settings,/compose/preview,/analytics) מגיב 200.
ארכיטקטורה: FastAPI · SQLAlchemy · PostgreSQL · httpx async · asyncio scheduler · Pydantic schemas · Nginx alias · frontend vanilla JS + Heebo/Frank Ruhl Libre/IBM Plex Mono. מערכת אמיתית מותקנת ופעילה ב־zbang-api בקונטיינר production.