מדי יום, מחלקות הרכש מטפלות בעשרות מחירונים ובמאות שורות פריטים. מחירו של רכיב מרכזי עולה ב-12% — ואתה מגלה זאת רק כעבור שבוע, כשהספק כבר הוציא חשבונית חדשה. בוט טלגרם לניטור מחירים פותר זאת: הוא בודק את ממשקי ה-API של הספקים, מנתח קבצי CSV/XLSX, או טוען מחירונים דרך FTP בלוח זמנים קבוע. כאשר מתגלה סטייה משמעותית (למשל, עלייה של מעל 5%), הוא שולח הודעה מיידית לערוץ. הבוט בודק עד 1000 פריטים (SKU) תוך 2 שניות, והקונה משקיע רק 10 דקות בהתקנה.
הבוט בנוי על Laravel 11 עם תורי Redis לעיבוד אסינכרוני. כל ספק מטופל בג'וב נפרד, מה שמאפשר הרחבה למאות ספקים על שרת אחד. פיתחנו למעלה מ-30 בוטים כאלה עבור קמעונאות ותעשייה. עם יותר מ-5 שנות ניסיון בשוק ולמעלה מ-50 פרויקטים של אוטומציה לרכש, אנו מספקים פעילות יציבה בעומסים של עד 1000 בדיקות לדקה, כפי שמאושר על ידי ניטור. אנו מבטיחים שלא תפספס אף שינוי מחיר.
קבל ייעוץ ממהנדס אוטומציה לרכש — ננתח את הספקים שלך ונציע את הפתרון האופטימלי תוך יום אחד.
כיצד בדיוק הבוט עוקב אחר שינויים?
הבוט פועל בלוח זמנים קבוע. בכל הרצה הוא עובר על כל הספקים הפעילים. עבור כל פריט (SKU), הוא משווה את המחיר העדכני למחיר הקודם. אם הסטייה חורגת מהסף המוגדר (ברירת מחדל 5%), הוא יוצר הודעה עם אינדיקטור אמוג'י וההפרש המדויק.
קוד הבדיקה נשאר גמיש:
class SupplierPriceMonitor { public function checkChanges(Supplier $supplier): void { $newPrices = $this->fetchPrices($supplier); foreach ($newPrices as $sku => $newPrice) { $oldPrice = SupplierPrice::where([ 'supplier_id' => $supplier->id, 'sku' => $sku, ])->value('price'); if ($oldPrice === null) continue; // новая позиция — не уведомляем $changePercent = abs($newPrice - $oldPrice) / $oldPrice * 100; if ($changePercent >= config('suppliers.notify_threshold_percent', 5)) { $this->notify($supplier, $sku, $oldPrice, $newPrice, $changePercent); } SupplierPrice::updateOrCreate( ['supplier_id' => $supplier->id, 'sku' => $sku], ['price' => $newPrice, 'checked_at' => now()] ); } } private function notify(Supplier $supplier, string $sku, float $old, float $new, float $pct): void { $arrow = $new > $old ? '📈' : '📉'; $direction = $new > $old ? 'вырос' : 'снизился'; $message = "{$arrow} <b>Цена {$direction}</b>\n\n" . "Поставщик: {$supplier->name}\n" . "SKU: <code>{$sku}</code>\n" . "Было: " . number_format($old, 2) . " $\n" . "Стало: " . number_format($new, 2) . " $\n" . "Изменение: <b>" . round($pct, 1) . "%</b>"; $this->telegram->sendToChannel(config('telegram.pricing_channel'), $message); } } הסף ניתן להתאמה לכל ספק: 2% לפריטים קריטיים, 10% לפריטים משניים. ניתן גם לאגד הודעות (למשל, פעם בשעה) ולסנן לפי ספק.
למה טלגרם במקום אימייל או SMS?
טלגרם מספקת הודעות מיידיות עם עיצוב (מודגש, קוד, אמוג'ים) — נוח יותר מאימייל, שלעתים קרובות מגיע לספאם. SMS יקר ומוגבל באורך. הבוט משתלב בקלות דרך Telegram Bot API. להתראות מחירים, טלגרם היא הערוץ האופטימלי.
אילו מקורות נתונים נתמכים?
| סוג מקור | דוגמאות | פורמטים | מורכבות אינטגרציה |
|---|---|---|---|
| ממשק API של ספק | JSON REST, SOAP | JSON, XML | בינונית (דורש תיעוד) |
| ניתוח HTML | אתרים עם מחירונים | HTML | גבוהה (מבנה משתנה) |
| העלאת קבצים | FTP, SFTP, אימייל | CSV, XLSX, XML, YML | נמוכה |
| הזנה ידנית | פאנל ניהול של הבוט | — | אין (הוספה ידנית) |
הבוט יכול להתמודד עם כל פורמט ספק — פשוט שלח קובץ לדוגמה. הוא יכול לעקוב לא רק אחרי מחירים אלא גם אחרי רמות מלאי ותאריכי אספקה, אם הם זמינים במקור.
הגדרת סף ההתראות
הסף מוגדר ב-class SupplierPriceMonitor { public function checkChanges(Supplier $supplier): void { $newPrices = $this->fetchPrices($supplier); foreach ($newPrices as $sku => $newPrice) { $oldPrice = SupplierPrice::where([ 'supplier_id' => $supplier->id, 'sku' => $sku, ])->value('price'); if ($oldPrice === null) continue; // новая позиция — не уведомляем $changePercent = abs($newPrice - $oldPrice) / $oldPrice * 100; if ($changePercent >= config('suppliers.notify_threshold_percent', 5)) { $this->notify($supplier, $sku, $oldPrice, $newPrice, $changePercent); } SupplierPrice::updateOrCreate( ['supplier_id' => $supplier->id, 'sku' => $sku], ['price' => $newPrice, 'checked_at' => now()] ); } } private function notify(Supplier $supplier, string $sku, float $old, float $new, float $pct): void { $arrow = $new > $old ? '📈' : '📉'; $direction = $new > $old ? 'вырос' : 'снизился'; $message = "{$arrow} <b>Цена {$direction}</b>\n\n" . "Поставщик: {$supplier->name}\n" . "SKU: <code>{$sku}</code>\n" . "Было: " . number_format($old, 2) . " $\n" . "Стало: " . number_format($new, 2) . " $\n" . "Изменение: <b>" . round($pct, 1) . "%</b>"; $this->telegram->sendToChannel(config('telegram.pricing_channel'), $message); } } . עבור כל ספק, הגדר את הפרמטר config/suppliers.php. לאחר שינוי התצורה, הפעל מחדש את הבוט עם threshold_percent. דוגמה לתצורה עבור ספק אחד:
{ "supplier": "Поставщик А", "url": "https://api.supplier-a.com/prices", "format": "json", "threshold": 5, "check_interval": 60 } מה כלול בעבודה
| רכיב | תיאור |
|---|---|
| מקורות נתונים | אינטגרציה עם ממשקי API של ספקים, ניתוח CSV/XLSX, העלאת FTP |
| לוגיקת השוואה | סף ניתן להתאמה, דילוג על פריטים חדשים, איגוד הודעות |
| ממשק הבוט | פקודות php artisan bot:restart, { "supplier": "Поставщик А", "url": "https://api.supplier-a.com/prices", "format": "json", "threshold": 5, "check_interval": 60 } , ביטול הרשמה לספק |
| DevOps | קונטיינר Docker, ניטור Grafana, גיבויי מסד נתונים |
| תיעוד | מדריך התקנה, תיאור תצורה, סכמת נתונים |
| הדרכה | מדריך וידאו לקונים, העברת גישה |
| תמיכה | אחריות לחודש, ולאחר מכן חוזה תחזוקה |
ניטור ידני מול בוט
ניטור ידני של 5000 פריטים אורך 3 שעות; הבוט עושה זאת ב-2 שניות — מהיר פי 360. שגיאת הזנה ידנית עולה בממוצע 450–650 דולר. הבוט מבטל שגיאות אנוש, וחוסך עד 1.4–1.9 אלף דולר בחודש בעלויות עבודה ושגיאות.
לוח זמנים לביצוע
הפיתוח אורך בין 2 ל-5 ימי עסקים, תלוי במספר המקורות. העלות מחושבת באופן אישי לפי התרחיש שלך.
תהליך הפיתוח בשלבים
| שלב | משך | תוצאה |
|---|---|---|
| ניתוח | 0.5 יום | רשימת מקורות, פורמטים, קריטריונים |
| עיצוב | 0.5 יום | סכמת DB, תצורות, ארכיטקטורה |
| יישום | 1–3 ימים | בוט עובד עם ניתוח והתראות |
| בדיקות | 0.5 יום | בדיקות יחידה, בדיקות אינטגרציה |
| פריסה | 0.5 יום | הגדרת שרת, הגדרת ניטור |
שלח בקשה — ננתח את הספקים שלך ונציע פתרון תוך יום אחד. קבל ייעוץ ממהנדס אוטומציה לרכש.







