כל שאלה שנשלחת לעוזר בממשק עוברת לאחד משני פלואים. הבחירה נעשית בקליינט לפי תפקיד המשתמש: בעל העסק (CUSTOMER) שולח את נקודת הכניסה customer_chat_message ומגיע לפלואו 58. כל שאר התפקידים (מנהלת תזרים, יועץ, אדמין) שולחים chat_message ומגיעים לפלואו 56. שני הפלואים בנויים סביב אותו סוכן, האקי, ואותם כלים כמעט. ההבדל הוא במה שהסוכן יודע, במה שמותר לו לעשות, ובסדר שבו הדברים רצים.
מי שואל: מנהלת תזרים של HK, יועץ במשרד הייעוץ, אדמין. האקי מדבר איתם "כמו עמית". ההמלצות מנוסחות כ"פעולות לנציג", ויש לו כלי לפתיחת משימה.
מי שואל: בעל העסק. האקי הוא "היועץ שלו", מדבר בגוף שני על "העסק שלך". אין לו כלי משימות, יש לו סעיף גבולות תפקיד, והוא מקבל את רשימת הקטגוריות של החברה ואת תאריך תחילת הנתונים.
העתק מלא של צ'אט היועץ. מקבל תנועה רק דרך כלל ניתוב: המשתמש של אייל (user 65) בנקודת הכניסה chat_message מגיע לכאן. כל שאר המשתמשים ממשיכים ל-56.
העתק מלא של צ'אט הלקוח, ועליו הצעת ההנחיות המעודכנות לאקי (haki-58-instructions.md). המשתמש של אייל ב-customer_chat_message מגיע לכאן, עם היסטוריית שיחה מלאה. תוצאות ההשוואה בדף בנק השאלות.
איך זה בנוי: יצירה דרך POST /flows ואז PUT /flows/:id עם המעטפת המלאה; כלל ניתוב ראשון ב-routing/config לפי user.id (אומת 28.09: משתמש אחר, 163, נשלח בשתי נקודות הכניסה והגיע ל-56 ול-58; המשתמש 65 מגיע ל-57 ול-59); כל שינוי נרשם בהיסטוריית הגרסאות של הפלואו. קידום ל-58 נעשה רק אחרי אישור של אייל, ב-PUT /flows/58 לשני העותקים של הסוכן. התיעוד של עומרי: hk-server/docs/ai-flow-editing.md.
| המסך | מה שואלים שם | מה נוסף לשיחה |
|---|---|---|
| עוזר AI | שאלות חופשיות על העסק: יתרה, הכנסות, הוצאות, פגישות | שיחה כללית, בלי type |
| תמונת תזרים · על הדוח | שאלות על הדוח שמוצג, והפאנל מצהיר שהוא עונה רק ממנו | type: cashflow ומטען הדוח ב-chat_context |
| התזרים קדימה | מה צפוי, למה החריגה, הנגררות | לפי תיעוד הקליינט. לא נבדק בהגדרה זו |
| הכנה לפגישה | מה חשוב לפני הפגישה הבאה | לפי תיעוד הקליינט. לא נבדק בהגדרה זו |
ה-chat_context וה-type מגיעים לנקודת הכניסה של שני הפלואים כשדות, אבל אף node בהגדרה לא קורא אותם. לפי תיעוד השרת הם מוזרקים להיסטוריית השיחה כבלוק "הקשר:" בסקיל טעינת ההיסטוריה, שאינו חלק מהפלואו. מה-JSON לבד אי אפשר לאמת שזה קורה.
type ו-chat_context מגיעים, אך לא נקראים בפלואו.sum. אם נמצאה שאלה מסוג "רשימה", הוא שולח רשימת וואטסאפ.save_chat_message. זו ההודעה שהמשתמש רואה.| כלי | מתי האקי בוחר בו | 56 | 58 |
|---|---|---|---|
| search_transactions · פלואו 36 | כל שאלה על תנועות. עם נושא (ספק, קטגוריה, כותרת, אמצעי תשלום) הוא מסנן לפי topics. בלי נושא, topics: [] ומחזיר את כל התנועות בטווח. הכלי היחיד שמחזיר תנועות בודדות | ✓ | ✓ |
| get_monthly_report | שאלות דוחיות: רווח והפסד, רווח גולמי, סך הכנסות או הוצאות לתקופה, יתרת פתיחה וסגירה. סכומים מחושבים מראש בשלוש רמות, בלי תנועות | ✓ | ✓ |
| cashflow_analyze | שאלות מצב וניתוח: "איך התזרים", חריגה, יתרה צפויה, מסגרת פנויה. וגם כשצריך יתרה כדי לענות על שאלה אחרת. מחזיר אובייקט נתונים, האקי מעצב | ✓ | ✓ |
| cashflow_report | בקשה להציג או לשלוח את התזרים עצמו, גם בלי המילה "דוח". מחזיר מחרוזת מוגמרת שמשולבת מילה במילה | ✓ | ✓ |
| get_company_meetings | סיכומים, החלטות, הכנה לפגישה. מחזיר פגישות שהיו, החדשות ראשונות | ✓ | ✓ |
| get_company_accounts | רק כשהשאלה מציינת חשבון בנק מסוים, כדי להשיג את המזהה שלו לכלי אחר | ✓ | ✓ |
| create_task | "בכל פעם שיש צורך ביצירת משימה לנציג אנושי". ההגדרה לא מפרטת יותר | ✓ | ✗ |
כל הכלים כאן מוגדרים בתוך הסוכן (function calling). מלבד פלואו 36 ופלואו 35, שאר המיומנויות הן קוד בשרת, והפלואו רואה רק את החתימה שלהן. מה שקורה בתוכן, כולל סינון לפי הרשאות, לא נראה בהגדרה.
| מה | 56 · יועץ | 58 · בעל העסק | למה זה משנה |
|---|---|---|---|
| מי מדבר עם מי | "עמית" מקצועי מטעם HK | "היועץ שלו", גוף שני, "העסק שלך" | בעל העסק לא אמור לשמוע על תהליכים פנימיים או על "נציג" |
| מתי האקי רץ | תמיד, במקביל לבסיס הידע | רק אם בסיס הידע לא ענה | ב-56 עד 14 קריאות מודל נזרקות כשיש שאלה מוכנה. ב-58 זה נחסך |
| פתיחת משימות | כלי create_task | אין. סעיף "גבולות התפקיד" אוסר במפורש | בעל העסק לא יכול להפעיל את צוות HK דרך הצ'אט. הוא מופנה ליועץ שלו |
| רשימת קטגוריות | לא נטענת | נטענת ומוזרקת לאקי | קובעת אם נושא נשלח כ-header או כ-category. ב-56 ההנחיה מפנה לרשימה שלא קיימת |
| גבול תחילת הנתונים | אין | תג data_available_from מוזרק, והאקי חייב לבדוק אותו לפני שליפה | מונע "אין נתונים" מבלבל על תקופות שלפני הצטרפות החברה |
| הפרופיל הפנימי | מוצג כרקע, כולל "כאבי לקוח" | מוצג כרקע, עם איסור לצטט רשמים פנימיים של HK | אותו סקיל טוען את הפרופיל בשניהם. הסינון הוא בהנחיה לסוכן, לא בנתונים |
| כותרות ההמלצות | "המלצות", "פעולות לנציג" | "תובנות", "מה כדאי לעשות" | נוסח |
| חיפוש חופשי לפי תאריך | מצב ב' של פלואו 36 | מצב ב' של פלואו 36 | פלואו 46 כבר לא כלי נפרד באף אחד מהם |
load_company_profile_categories מסנן לפי נראות, זה לא נראה בהגדרה.found is_true ∧ is_list is_false → סינתוז ושמירה, ו-found is_false → האקי, ו-default: end. המקרה found ∧ is_list לא תואם אף מקרה. ב-56 ה-default הוא goto ל"שמירת תשובת האקי".
מסקנה: ב-58 באותו מקרה אף step שמכיל save_chat_message לא רץ, ולכן לשיחה בממשק לא נכתבת הודעה מהפלואו. מה שכן קורה: פלואו 35 מפעיל בפנים send_whatsapp_list. אם משהו מחוץ לפלואו שומר הודעה, זה לא נראה בהגדרה. לאימות: להריץ ב-58 שאלה שתואמת נתיב רשימה ולבדוק את השיחה.company_categories שהסוכן לא מקבל
כלל "רמת החיפוש נקבעת לפי company_categories בלבד" קיים בהנחיות של האקי בשני הפלואים. ב-58 יש סקיל שטוען את הרשימה וקלט בשם הזה. ב-56 אין לא סקיל ולא קלט.
מה יקרה: ביועץ, האקי ינחש אם "חומרי גלם" הוא header או category. ניחוש שגוי מסנן לכלום בפלואו 36.sum ו-userMessage בלבד, עם includeHistory: false. ההנחיות שלו מתארות טבלאות, גרפים ומגמות, אבל אין לו ממה לבנות אותם.
מה יקרה: "כמה הכנסתי חודש שעבר" יקבל מספר בלי ציון החודש. שאלת המשך קצרה ("וזה כולל מע"מ?") שתתאים לנתיב מוכן תיענה בלי הקשר.tense מתואר רק כ"זמן". selected_action "אופציונלי, רלוונטי רק לחיפוש נושאי", אבל בתוך הפלואו הוא נכנס לסקיל הסינון בכל המסלולים. account_id מסומן חובה ומותר להעביר ריק, בניגוד להנחיית האקי לא להעביר מחרוזות ריקות לפרמטרי חובה.
מה יקרה: האקי ממציא ערך. אם הסקיל מצפה ל-past/future או ל-finance_summary/finance_list, ערך אחר יחזיר ריק בלי שגיאה.topics חסר לגמרי נופל ל-default שהוא end
התנאי אחרי איסוף הנתונים בודק length_gt 0 או length_eq 0. הפרמטר אופציונלי, כך שהאקי יכול לא לשלוח אותו בכלל. איך length מתנהג על ערך חסר לא ברור מההגדרה.
מה יקרה: אם זה נופל ל-default, הפלואו מסתיים בלי תוצאה והאקי מקבל פלט ריק ועונה "לא נרשמו תנועות". צריך לבדוק בקוד.onLimit: best_effort אומר שהסוכן יענה עם מה שיש.
מה יקרה: טבלה חודשית חסרה בלי שהסוכן אומר זאת. תלוי אם המנוע מריץ קריאות מקבילות באיטרציה אחת, וזה לא נראה בהגדרה.get_company_meetings מחזיר פגישות שהיו. אין כלי ליומן. השאלה מופיעה ברשימת השאלות המוצעות של מסך העוזר של בעל העסק.
מה יקרה: האקי יענה מהפרופיל או יגיד שאין לו מידע.data_available_from
הסעיף שמלמד את הסוכן לבדוק מאיזה תאריך יש נתונים קיים רק ב-58.
מה יקרה: יועץ ששואל על תקופה שלפני ההצטרפות יקבל "0" או "אין נתונים" בלי הסבר.טבלת השאלות המוכנות נשלפת בזמן ריצה בסקיל fetchFlowPaths. לפי הקוד בשרת, הסקיל קורא מהטבלה flow_paths ומחזיר לכל שורה פעילה (is_active) ארבעה שדות: שאלה לדוגמה (prompt), הפלואו שאליו היא מובילה (flow_id), הערה, וסף התאמה (match_threshold). התוכן של הטבלה לא נכלל בדף: אין נקודת קצה ב-API שחושפת אותה, והדרך היחידה היא מסך הניהול או גישה ישירה לבסיס הנתונים.
מה שכן ידוע: בדוגמאות שבהנחיות השומר מופיעות "כמה הכנסות היו לי חודש קודם" ו"כמה צ'קים יש לי בחוץ". ברשימת הפלואים בשרת יש פלואים בלי נקודת כניסה שנראים כמועמדים: 32 (הכנסות חודש קודם), 41 (כמה צ'קים בחוץ), 45 (צפייה בדוח תזרים). זו הסקה מהשמות, לא מהטבלה.
השומר פוסל התאמה בכל אחד מהמקרים: מונח פיננסי שונה, כוונה שונה (דיווח במקום שאלה), זמן שונה, צורת תשובה שונה (סכום מול פירוט), ותאריך מפורש מול זמן יחסי. כלומר "כמה הכנסתי באוגוסט" לא יתאים לנתיב "חודש קודם" גם אם אוגוסט הוא החודש הקודם.
GET /api/ai-flow-manager/flows בסביבת הייצור, קריאה בלבד, 28.09.2026. פלואים 56, 58, 35, 36, 38, 39, 46. מה שלא כתוב בהגדרות מסומן כ"לא ברור" או "לפי תיעוד". בלי שמות לקוחות ובלי נתונים אמיתיים.