לעדן

חזרה למסמך הראשי

רוזטה ו־Wildfire

נכתב בידי עוזר AI שעובד עם יוסף, מתוך תיעוד העבודה במרכז, כרקע לפגישה ב־20.10.

רוזטה היא שכבת הגישה של המרכז למידע הקליני של שיבא: משטח אחד שאפשר לתשאל, מעל מערכות הרשומה של בית החולים, כך שאף אפליקציה של המרכז לא מדברת איתן ישירות. Wildfire הוא שם השירות והמאגר שמתחתיה, ובמרכז משתמשים בשני השמות לסירוגין. כל המידע הקליני של אליס, של SmartER ו־TMR ושל AI Flows עובר דרכה, ולצד המערכות משתמשים בה ישירות אנשי דאטה סיינס, מוצר, מחקר ותיוג. העמוד מספר איך היא נוצרה, עם נקודות המפנה המתוארכות ומי הוביל כל אחת מהן, איך היא בנויה היום, מה למדו עליה בפרודקשן ומה פתוח. הדעות וההמלצות בעמוד הן של הסוכן, ומסומנות ככאלה.

איך זה התחיל: 2025

הצורך קדם למערכת. ב־9.5.2025 ניסח גל גושן, מנהל בשיבא, את האילוץ שכל השכבה קיימת בגללו: אי אפשר לתת לכל מוצר גישה ישירה למסדי הנתונים של בית החולים, וצריך מטרייה אחת שדרכה עוברים. עוד קודם, ב־3.4.2025, יוסף בן יהודה העלה בפני גל את הרעיון של שכבת שליפה אחידה מעל קמיליון, הרשומה הרפואית של שיבא.

נקודת הפתיחה הפורמלית היא 9.4.2025. פרויקט שספק חיצוני בנה למחלקה לרפואה דחופה, Project K, הפסיק לעבוד, ובאותו יום התקבל אישור מיערה כץ ומאיילת להתחיל לבנות בבית שכבה שתעביר את קמיליון לפורמט FHIR או דמוי FHIR. ב־10.4 גיא דולינסקי, ארכיטקט המרכז, הקים שלד של מאגר בשם wildfire, ויוסף כתב בו באותו יום שרת FHIR עם סוגי המשאבים הבסיסיים. ב־13.4 דחף יוסף את העבודה עם README שמתאר אילו משאבי FHIR נחוצים ואיך הם מתחברים, וב־15.4 הוסיף בדיקות לפעולות וחיפוש כללי על מטופל ואבחנה. הבנייה מחדש של K נעצרה אחרי שבועיים, אבל שכבת ה־FHIR והשם Wildfire נשארו. מי בחר בשם Wildfire לא מתועד; ההסבר הסביר הוא שזה היה שם המאגר, והוא שרד כי השכבה הזו הייתה החלק ששרד ממנו.

באותו קיץ Wildfire לא היה שירות. הוא חי בתוך סמי, מסלול הסיכומים של הקרדיולוגיה, כמחלקה של שליפות, ויערה תיארה אותו כך ב־17.7.2025. ב־5.5.2025 קבעה רחל ויטיס מהדאטה סיינס את חלוקת העבודה הראשונה: היא לוקחת את הנתונים והדרישות הקליניות, ויוסף את הצנרת. ב־8.6.2025 נוסה כיוון של היתלות על המסכים של קמיליון והגעה מהם לטבלאות; הוא לא הבשיל אחרי יום וחצי, ורוב השאילתות נכתבו ביד. ב־25.8.2025 כתב יוסף בקבוצת המפתחים שהחלק שהוא מארגן יהיה בעתיד Wildfire, והסיבה נכתבה באותה הודעה: כל השליפות ישבו כמחרוזות קשיחות בקובץ אחד, והצד של הדאטה סיינס לא יכול היה לעבוד איתן. ב־17.10.2025 גיא הציע שכבת MCP מעל קמיליון, ובאותו דיון קבע שהיעד הנכון הוא MCP מעל Wildfire, כי שם המידע כבר מובנה עם סכמה ידועה.

נקודת המפנה של השנה היא 22.11.2025. בזמן חיפוש אחר מצא יוסף בכונן משותף תיעוד פנימי של קמיליון מהדרכה שנעשתה ב־2015. התיעוד הסביר איך קמיליון מרכיב את המסכים שלו מתוך הרשומה, כלומר שאפשר לבנות כל מסך מאפס בהינתן רשומה ולשלוף גיליון שלם ולא שדות בודדים. אלון אגמון, מהנהלת המרכז, קבע באותה שעה שזו הזדמנות לבנות את השליפה מחדש בצורה נכונה, ומכאן המיפוי הפך מכלי עבודה של אדם אחד לנכס של המרכז. התיעוד נכנס ל־AI-Docs כבר ב־23.11. לפי עדותו של יוסף מ־27.8.2026, המיפוי שבא אחרי זה לקח יותר משלושים לילות. גיא הכיר חלק מהמבנה מקודם, ובמהלך דצמבר הביא את הסמנטיקה של הרבה שדות, למשל של ערכי מעבדה חריגים.

סוף דצמבר 2025 סגר את השלב הזה. ב־22.12 כמעט לא היה שדה בקמיליון שלא נשלף, והיה ממשק שמציג עץ מטופל. ב־25.12 עברו יוסף ושי גנכיל שדה אחר שדה על השליפות שהיו בשימוש, והגיעו למסקנה שצריך לכתוב אותן מחדש. ב־27.12 מופיע לראשונה בתיעוד השם רוזטה, כבר כשם מוכר; לפי יוסף, הכוונה לאבן הרוזטה, תרגום משפה מוכרת לכתב שקשה לקרוא. באותו יום עלה הממצא שחייב שאילתות דינמיות: השדה שמתחת לכותרת אינו קבוע בין רשומות. ב־30.12 רחל קבעה את הדרישות הקליניות, כמו פיצול כל סקשן במקום שרשור, אבחנות שחרור בלבד ומעבדות לפי ביקור, והכריזה על הקפאת קוד.

מבטא לפרודקשן: ינואר–יוני 2026

ב־17.1.2026 עלתה לבטא שכבת GraphQL עובדת, כשירות עצמאי. ב־19.1 נעשתה הבדיקה הראשונה על כל הקורפוס: כמעט אלפיים אשפוזים בקרדיולוגיה על פני שנתיים, וכל הטקסט החופשי מכל הגיליונות יצא בארבע דקות. באותו שבוע הוצג הכלי מחוץ לצוות, ושי חיבר את איתן לרוזטה. ב־25–29.1 ביקשה ראש הדאטה סיינס לצרף שניים מאנשיה, ונפתח פיילוט של שלושה אנשים עם הגדרת היקף כתובה. ב־3.2 הגיע התיקון החיצוני הראשון: מומחית ה־SQL של טבלאות קמיליון מצאה שנתוני תוכנית הטיפול יוצאים לא נכון, כתבה את השאילתה הנכונה והציעה לתקן יחד.

השבועות שאחרי עסקו בשאלה אם לאמץ. ב־13.2 גיא ושי עברו על הקוד, פירקו חלק ממנו והחזירו את רובו, ויערה קבעה שהקוד הזה יהיה בבסיס של הכול. ב־17.2 הוחלט, בשיחה בין שי ליערה, לא לאמץ עדיין את רוזטה במוצרים, להמשיך עם SQL ולהמיר אחר כך, כי היא הפכה לצוואר בקבוק במשימות. ב־22.2 גיא ובר סבר הוסיפו את Cato.

מרץ הביא מקורות וצרכן ראשון. ב־2.3 מטוויז׳ן, מערכת טיפול נמרץ, עבדה בתוך Wildfire, וגיא קבע שהגרסה הבאה של TMR תשב מעל רוזטה. ב־4.3 חובר TMR לרוזטה בסביבת show, עם רזולברים לווירולוגיה ולמיקרוביולוגיה, וב־6.3 נוספו מטוויז׳ן ו־Medcon. ב־8.3 נכנס QFlow, מערכת המרפאות, לספרינט. ב־24.3 עלתה בפעם הראשונה השאלה אם רוזטה שבורה; התשובה הייתה שהיא מעבירה כמות שהוא את מה שיש בקמיליון, ויערה שאלה שאלה שחוזרת כל השנה: האם המרכז מעמיס יותר מדי על קמיליון. ב־31.3 קבע גיא את ההחלטה הארכיטקטונית שמאחורי התורים: רוזטה עצמה סינכרונית, וממשק תורים ייבנה מעליה ולא בתוכה. באותו יום תיעד שבקשת GraphQL אחת יכולה להתפרק למספר גדול מאוד של קריאות למסד.

באפריל העומס הפך לנושא. ב־7.4 מופה QFlow במלואו. ב־13–14.4 אלון דיווח על שגיאות HTTP, פודים נוספים פתרו את העומס, ונקבע סדר מיזוג שבו רוזטה קודמת. ב־16.4 גיא זיהה את מקור העלות, מבנה שמחליף רשימה שלמה בכל דקה, וסיכם עם יאיר גינת מהדבאופס להכניס KEDA. בסוף החודש התחילו המוצר הקליני והדאטה סיינס להשתמש ישירות בסייר המטופלים וב־GraphQL.

מאי היה חודש העלייה. ב־10.5, ערב סדנה לרופאים על אליס, מטופלים הפסיקו להיטען. גיא אבחן שינוי שעקף את ה־nginx ואיתו את הכניסה, ובאותו יום נפתחה קבוצת הצוות של רוזטה. ב־11.5 פרסם יוסף את מודל המקביליות שתכנן עם אלירן חדד: הגדלה אוטומטית לפי readiness ולא לפי CPU, pool של threads שירד מחמישה לשניים, ובקשה כבדה על thread משלה שמסמנת את הפוד כלא־מוכן. גיא התבקש להעיר, והמודל מומש באותו ערב. ב־14–15.5 נכנסו Ada ומעבר יחידות במטוויז׳ן וב־QFlow. ב־18.5 הציע אלירן את פיצול התורים, ויוסף הריץ בדיקת עומס על שתי מחלקות ילדים: 51 מטופלים, 969 שאילתות, כשלושה ג׳יגה, על חמישה פודים. ב־19.5 אושרה העלייה לפרודקשן, וב־25.5.2026 רוזטה עלתה לפרוד. ב־27.5 הדבאופס העלו KEDA מבוסס תורים לבטא.

ביוני נבנה רוב מה שרץ היום. ב־2.6 כינסה יערה סקירת תכנון מוקלטת, Rosetta Deep Dive. ב־17.6 נמצא המיפוי הנכון בין QFlow לקמיליון, במקום היוריסטיקה. ב־18.6 עלו שלושת התורים, וב־23.6 השכתוב עלה לבטא: מטופלים שלקחו 120 שניות נטענו בשמונה. ב־25.6 השכתוב עלה לפרוד. ב־21.6 יערה שייכה את רוזטה ליוסף בשמו, בחלוקה של בקשות המיזוג הפתוחות לפי מערכת. ב־26.6 פורסמו אוטומציות אימות לכל צרכן, תיעוד של ה־joins בממשק אחרי שהתברר שמרכז הדאטה משתמש בשאילתות, וקונסולת שאילתות שקיבלה באותו לילה את השם סטודיו.

איך זה עובד היום

העיקרון הראשון הוא שרוזטה היא חזית בלבד. היא לא שומרת עותק של המידע הקליני; כל בקשה מתורגמת בזמן ריצה ל־SQL מול המקור ונענית ממנו. מה שנשמר הוא מטא־דאטה ותוצאות זמניות. העיקרון השני הוא נאמנות למקור. ההמרה ל־FHIR התבררה כקשה מאוד, והצוות בחר להיצמד לסכמה של כל מקור במקום להמציא סכמת ביניים. הסכמה של קמיליון ברוזטה נראית כמו קמיליון, עם אותן כותרות ואותו מבנה, כך שרופא או אחות מזהים את המסך. ב־14.7.2026 נימק יוסף בקבוצת הצוות את ההחלטה להשאיר כך ולבנות FHIR כמסלול נפרד החוצה: אחרת המרכז הופך לבעלים של סכמה חדשה.

המקורות הם קמיליון; מטוויז׳ן; QFlow; איתן; ובנוסף RIS, Medcon, Ada, Cato ומכתבים חיצוניים. הליבה הקשה היא המיפוי. בקמיליון המסכים נכתבים לכל מחלקה בנפרד, כך שאותו שדה לוגי, למשל מחלה נוכחית, יושב במקום אחר ביולדות ובקרדיולוגיה. לכן רוזטה לא ממפה שדה פעם אחת: היא מחזיקה את טבלאות המיפוי של קמיליון עצמו, יודעת איך קמיליון שולף כל שדה ומייצרת את ה־SQL בזמן הבקשה, כך שמסך חדש נכנס כמעט אוטומטית. בחודשים האחרונים חלק מהמיפויים החדשים נכתבים בעזרת Codex, שמושך את ה־HTML של המסך, משתמש בתיעוד המיפוי ובטבלאות ופותח בקשת מיזוג; את ההנדסה ההפוכה הראשונית הוא לא הצליח לעשות.

הממשק הוא GraphQL. השורש הוא אובייקט מטופל. ממנו בוחרים מקור, ובכל מקור יש את האובייקטים שלו: בקמיליון אשפוזים, גיליונות, לשוניות, סקשנים ותוכן, עם פילטרים בכל רמה; ב־QFlow תורים; במטוויז׳ן שהיות. לצד המקורות יש מקור בשם Sheba, ובו לוגיקה של המרכז שאין באף מערכת, למשל האשפוז הנוכחי כרצף אשפוזים שמחבר מערכות. ה־GraphQL מתעד את עצמו ויש לו explorer, ומעליו עץ מטופל שמחקה את קמיליון, שבו כל רכיב מראה את השאילתה שמאחוריו. כשמדביקים ב־Wildfire תוצאה של flow, רואים את ה־GraphQL המדויק ואת ה־SQL שרץ, ובכלי התצפית רואים את ה־SQL של כל בקשה בטרייס. מעל כל זה יש שאילתות שמורות: מגדירים שאילתה פעם אחת, מקבלים לה מזהה, ומוצר או סוכן מבקש אותה עם מזהה מטופל. את השאילתות האלה בונים בסטודיו, שמתואר בעמוד משלו. מאז 29.7.2026 אפשר לבקש שאילתה שמורה מתוך AI Flows.

הביצוע בנוי כך: מאחורי נקודת כניסה אחת יש שלושה תורים, main, interactive ו־bulk. הבקשה מנותבת לפי header, ולכל תור יש autoscaler משלו ב־KEDA, לפי עומק התור ולא לפי CPU. מאז 12.8.2026 יש cache ב־Valkey של מטא־דאטה מבני של קמיליון, כמו יחידות וכותרות, שמתרענן פעם ביום; ויש RustFS ששומר את התוצאות של שאילתות שמורות, עם מזהה תשובה, היסטוריית קריאות ומטא־דאטה, ונמחק אחרי יום. ההגדרות של השאילתות השמורות יושבות ב־Mongo, שעבר באוגוסט–ספטמבר ל־operator של Percona. הסביבות הן show, בטא ופרוד, והקידום ביניהן הוא במיזוג; הדבאופס בודקים וממזגים את ה־charts.

שני פרטים חשובים למי שנכנס. הראשון: הרזולברים מתחילים תמיד ממזהה מטופל, ולכן אין joins רחבים ואי אפשר לבקש מחלקה שלמה בבקשה אחת. כדי לפצות על זה יש batching שאוסף כל חמישים עד מאה מילישניות את השאילתות הממתינות, מאחד מה שאפשר ומפצל את התוצאה חזרה. להערכת הסוכן, זה פתרון ביניים ולא מבנה סופי. השני: המאגר גדול, בערך 1,200 קבצים, מתוכם כארבע מאות מהותיים והשאר בעיקר הגדרות, ובפריסה כשלושה־עשר קונטיינרים, כולל הסטודיו, ה־cache וה־cache warmer.

התקרה היא הרפליקה

הנקודה החשובה ביותר להבנת הביצועים היא שהתקרה לא נמצאת בקוד של המרכז. רוזטה מתשאלת רפליקה של קמיליון שבית החולים מחזיק, והמרכז אורח בה; השרתים של QFlow ושל מערכת ההדמיה חלשים ממנה. ב־17.6.2026 ניסח אלון את הכלל שזמן הריצה של משימה תלוי ברפליקה, ובאותו יום הראה יוסף, עם Pyroscope ועם ה־spans של השירות, שהעומס IO־bound: מוסיפים פודים, ועדיין מחכים לאותו מסד.

ההשלכות אינן רק מהירות. ב־16.6 וב־15.7 נוצר לחץ על המסד של בית החולים, ושני האירועים נסגרו מול ה־DBA של בית החולים בידי אלון. ב־18.7 חסם ה־DBA את הגישה לרפליקה לסוף שבוע. ב־21.7 הייתה תקלה כללית בקמיליון, והבדיקה הראשונה בחדר הייתה אם המרכז גרם לה; הוא לא גרם, כי הוא על הרפליקה ולא על הפרוד. ב־27.7 ניסח אלירן את הכלל שנובע מכאן: כשמתשאלים מסד שאינו שלך, מוציאים את הלוגיקה מהשאילתה. להערכת הסוכן, הגבול בין רפליקה לפרוד הוא ההגנה העיקרית של בית החולים מפני המרכז, וכל תכנון סקייל צריך להתחיל ממנו.

מה למדו בפרודקשן

ההיסטוריה של התקלות מובאת כאן כשיעורים טכניים, כי רובם עדיין רלוונטיים.

ביוני התברר שמספר החיבורים לכל פוד מוכפל בכמות הפודים: pool של מאה חיבורים, כפול כ־140 פודים, השאיר כ־14,000 sessions פתוחים על המסד של בית החולים. ב־16.6 הוריד אלון את ה־pool לעשרים, ונקבע שלא משנים אותו בלי דיון. ב־26.6 התברר שמגבלת הבקשות הממתינות, עשרים, נמוכה מדי לפרוד ומחזירה 503; היא הועלתה ל־2,000.

ב־13.7 עלה לפרוד arc-login, שכבת ההזדהות, ובאותו יום המתייגים של אליס איבדו גישה לרוזטה, אף שהשינוי הוכרז מראש לכל המרכז. בסוף יולי, עם החימום של אליס וה־concurrency שהועלה, עשרה עד חמישה־עשר אחוז מהמטופלים נכשלו בחימום, בעיקר בגלל פודים שנגמר להם הזיכרון. ב־24.7 הקפיא אלון את החימום של שלוש מרפאות כדי להוריד עומס, וב־30.7 נוסח בצוות שיש בעיית תשתית שצריך לפתור לפני פריסה לכל בית החולים.

באוגוסט נסגרו שתי תקלות שמראות כמה המקור רגיש. ב־3.8 מחלקה פנימית לא עלתה בבטא כי רשומת דמה בלי מזהה מטופל נכנסה לשאילתה הבסיסית; יערה הגדירה את התיקון: לסנן, לרשום ולהמשיך. ב־9.8 נסגר באג של שבוע: שם טבלה בקמיליון שנרשם באות גדולה במקום קטנה שבר את ה־batching, ורק לרשומות עם שדה גריאטרי נדיר. ב־12.8 קודמה בטא לפרוד עם ה־cache, מאגר התוצאות ושכתוב של הממשק. ב־19–20.8 בדקו הדבאופס את ה־charts והגישו רשימת תיקונים: פיצול ה־workspace מה־chart של ה־backend, הוצאת הקונפיגורציה מה־charts והקטנת הזיכרון של ה־cache warmer.

בספטמבר הגיע העומס האמיתי. ב־15.9 קודמה בטא לפרוד אף שה־chart עוד לא עמד בסטנדרט, כי בטא כבר שימשה בפועל כפרוד; יערה אישרה את הקידום בגלל זה. טהר אברג׳ל הריץ את הקידום ובנה לשם כך ייצוא וייבוא של שאילתות שמורות, שישבו במסד של בטא. באותו ערב הוכרזה פריסת SmartER לכל בית החולים. למחרת היו מאות timeouts, ונמצאו שתי סיבות: פרמטר מקביליות שעבר מבטא לפרוד עם הערך 5 במקום 1 והוחזר באותו יום, ועשרות אלפי שגיאות חיבור ל־Valkey. ב־16.9 התברר גם שעד אותו קידום, הפרוד של SmartER ו־AI Flows קרא בפועל מרוזטה בטא. ב־17.9 נמצא שכל הרפליקות של Valkey ישבו על אותו node, והוא קפא. על הסיבה העמוקה לא הושגה הסכמה בצוות. המלצת הסוכן מתוך האירוע: anti-affinity לכל רכיב משוכפל, קונפיגורציה מפורשת לכל סביבה מחוץ ל־charts, ובדיקת עומס לפני כל קידום מבטא לפרוד, כפי שהוצע בצוות באותו בוקר.

ב־5.10 נמצא שהמעקבים היומיים של מטופלים מאושפזים נחתכו תמיד ב־42 ימים. היו לזה שתי סיבות: תקרה של שישה שבועות שנקבעה למטופלים בלי תאריך שחרור, ופילטרים של הרזולבר שדרסו את הפילטרים של הקורא. בתיקון, שיוסף כתב, הפילטרים של הקורא עוברים, ו־order ו־limit נפתחו בכל הסכמות, בעוד ההיקף של המטופל והרשומה נשאר נעול. שרון גולדשטיין סקרה ואישרה, רפאל אשורוב בדק את השאילתות של SmartER, והכרטיס נסגר ב־8.10.

שינויים שוברים ובדיקות חוזה

כל שינוי בחוזה של רוזטה מורגש מיד אצל כל הצרכנים. ב־30.8.2026 הקפיא גיא שינויים שוברים בסכמה עד שהמכתב הראשון יעלה לפרוד דרך AI Flows, וב־1.9 קבע כלל בטיחות לשאילתות שמורות, כי סוכנים שמוגדרים ב־git פונים לשאילתות לפי מזהה. ב־22.9 תוקן החוזה בין Wildfire ל־AI Flows אחרי שינוי בצד של רוזטה. ב־7.10 שינוי בחוזה ה־execute החזיר 422 ל־AI Flows בפרוד, והחוזה הישן הוחזר באותו ערב. ב־13.10 עבר הממשק מפרמטרים ישירים לאובייקט filters, כדי לאפשר חיתוך לפי תאריך לאורך כל השאילתה, כפי שרחל ושי דרשו להערכה; השינוי שבר שאילתות שמורות של צרכנים שמשתמשים באשפוז הנוכחי, ותוקן. ב־15.10, בדיון על קמיליון 9, הוחלט ללכת בדרך שלא שוברת אף צרכן: יהיו Chameleon5 ו־Chameleon9, ו־Chameleon יישאר alias ל־5, כך שאף שאילתה קיימת לא צריכה להשתנות ביום המעבר.

השאלה של בדיקות אוטומטיות נדונה ב־18.10, בשיחה מוקלטת עם אלירן, עומר ושי. יוסף הציג את הטענה שרוב התקלות של רוזטה היו תשתיתיות, עומס, זיכרון ופודים, ולא רגרסיות ב־API, והעלה את עלות התחזוקה של בדיקות. אלירן הציג את הצד השני: מי שלא מכיר את המערכת לא יכול לדעת אם שינוי שלו שובר משהו, ובטא היא לא המקום לגלות זאת; הוא הציע כיסוי של הבסיס, שה־API עובד ומחזיק בעומס, בבדיקות אינטגרציה ולא בבדיקות יחידה. בסוף השיחה הוסכם שצריך הגנה בסיסית ושאדם אחד לא יכול לתחזק אותה לבד; לא נקבעו מבצע או מערך בדיקות. יש נקודות פתיחה: האוטומציות של 26.6, שמשוות לכל צרכן SQL ישיר מול תשובת ה־GraphQL, והצעה של אלירן מ־8.7 להכניס אוטומציה של שלמות נתונים לבקשות המיזוג לבטא, שעדיין תקועה.

המלצת הסוכן: להפוך את השאילתות השמורות שכל צרכן באמת מריץ לחוזה. כל מיזוג לרוזטה יריץ אותן מול בטא על קבוצה קבועה של מטופלי בדיקה, ויבדוק שהמבנה לא השתנה ושהתוצאה לא התרוקנה. זה לא מחליף בדיקת עומס, אבל היה תופס את שני המקרים של אוקטובר.

מי מחזיק מה, ומי משתמש

אין כאן אדם עם מסלול אחד, והחלוקה מתועדת מהשיחות בצוות. יוסף כתב את שירות הגרף ואת המיפוי של רוב המקורות: קמיליון, QFlow, מטוויז׳ן, RIS, Medcon, Ada והמכתבים. הוא כתב גם את מודל המקביליות, את שלושת התורים, את ה־cache, את מאגר התוצאות, את עץ המטופל, את הדשבורדים ב־Grafana ואת הגרסאות הראשונות של הסטודיו. גיא, הארכיטקט, הוא סמכות התכנון: שומר הסף של המיזוגים, ה־CI/CD, הסכמה והשינויים השוברים, והוא מחזיק את הקשר עם הספק של קמיליון ואת הסמנטיקה של הרבה מהשדות; גיא ובר כתבו את Cato. שי כתב את חיבור איתן הראשון, את הרזולבר המאוחד של האשפוז הנוכחי, את הזמן היחסי בשאילתות שמורות ואת ברירת המחדל של חיתוך הזמן להערכה. מול ה־DBA של בית החולים ובבקשות הגישה עבד בפועל אלון, למשל בתקריות של יוני ויולי 2026. יערה מחזיקה את ניהול ההנדסה: החדר, השבועי, השחרורים ותהליך השינויים השוברים. יאיר וקווין צימרמן מהדבאופס מחזיקים את הקלאסטר, את KEDA ואת ה־charts. אלירן תכנן את מודל המקביליות עם יוסף, הציע את פיצול התורים ומחזיק את החימום של אליס, אחד הצרכנים הכבדים. טהר בנה את הייצוא והייבוא של שאילתות שמורות והריץ את הקידום של ספטמבר. סלע ענבר מחזיק את האינטגרציה בין TMR ל־Wildfire. ד״ר רועי טונק הוא הבורר הקליני של המיפוי. שרון עובדת על Wildfire מאז תחילת אוקטובר, כולל הרזולבר של קמיליון 9, וב־22.9 יערה ביקשה בכתב שהיא תהיה הבעלים של רוזטה.

הצרכנים מתחלקים לשלוש קבוצות. הראשונה היא המערכות: אליס, כולל החימום של נתוני המטופלים דרך worker של digest; SmartER ו־TMR; AI Flows, שעליו רצים המכתבים; ו־in-the-loop. לכל צרכן יש client משלו. הרשימות המחלקתיות של SmartER עדיין שולפות ישירות מקמיליון. השנייה היא האנשים: הדאטה סיינס, שמתשאלים את ה־GraphQL ישירות; המתייגים של אליס; אנשי המוצר, שבונים שאילתות בסטודיו; הצד הקליני; והמחקר, שמשתמש בשאילתות לייצוא נתונים. השלישית, בעקיפין, היא כל רופא שמקבל מכתב, סיכום או תשובה שנבנו מהמידע הזה.

מה קורה עכשיו: קמיליון 9, איתן, מטוויז׳ן והחפיפה

בית החולים עובר מקמיליון 5 לקמיליון 9, ולצידו נבנית שכבת API חדשה; במרכז קוראים לפרויקט נפטון. ב־4.10 הודיעה יערה לצוות על המעבר ועל יעד של 15.10 ל־Scribe בתוך קמיליון. כדי למפות צריך גישה, וזה לקח זמן: ב־5.10 הגיע חיבור ראשון, ב־8.10 החיבור עבד והמיפוי היה חלקי בלי הרשאה למסד ההגדרות, ב־11.10 נשלחה לאלון רשימה מצומצמת של שלושה מסדים, וב־14.10 הגישה נפתחה. ב־15.10 דיווח יוסף שהמיפוי כמעט גמור, כרזולבר נפרד, ושהסכמה של Wildfire עצמה לא צריכה להשתנות. באותו מיפוי נמצאה בעיה שמקורה במקור: תיאורים זהים לרשומות שונות, כנראה מהמיגרציה של הספק. הוחלט לאפיין אותה בדיוק ולדווח, והדחיפה לבטא נדחתה עד שיהיה ברור מה שבור. ב־19.10 דיווח יוסף ליערה שעבודת רוזטה, כולל הממשק החדש של הסטודיו, הסתיימה וממתינה לבקשת מיזוג ולסקירה. עד שתמוזג ותיבדק אצל הצרכנים, קמיליון 9 עוד לא עובד אצלם.

איתן הוא המקור שהכי הרבה צרכנים מחכים לו. שי חיבר אותו ראשון בינואר, ומאז מופה כמעט כל המסד, כחמש מאות קבצים; שני ירדני מהמוצר כבר משתמשת בחלק מהנתונים. העיכוב הארוך לא נבע מהקוד: הגישה לאיתן מותרת רק ממסלול רשת מצומצם, ולכן ב־show בקשות נחתו לפעמים על node בלי גישה ונכשלו באופן שנראה אקראי. בבטא ובפרוד זה עובד. השרתים של איתן עצמם לא יציבים, ובעבר נדרשו ניסיונות חוזרים רבים סביב כל קריאה. ב־18.10 עלתה שוב בעיה בשליפה מאיתן מתוך AI Flows, ונפתחה פנייה לדבאופס. מטוויז׳ן נמצאת בסכמה מאז מרץ, והמבנה הבסיסי שלה פוצח ב־31.7, אבל היא עוד לא בסטודיו, והסכמה והממשק שלה צריכים תכנון מחדש. ב־15.10 הוחלט שהיא האחרונה בסדר העדיפויות, חוץ משני מדדים שנדרשים עכשיו. באותו יום נכתב גם מפרט לקיבוץ ביקורים, לפי הצעה של גיא מ־14.10: group לצד הפילטרים, עם by, order ו־limit, כדי לשמור את הביקור האחרון מכל סוג כמו שרופא חושב.

הבעיה המרכזית היא ריכוז הידע, והיא מתועדת לאורך השנה. ב־29.6 העלה שי בקבוצת מפתחים שכאשר יוסף יהיה פחות זמין, Wildfire תהיה בעיה, אלא אם יתחילו ללמוד אותה עכשיו. ב־13.7, אחרי לילה של שגיאות 500, הציע אלירן להכשיר עוד אנשים לעומק ולהוסיף סקירת קוד. ב־23.7 בוטלה הפגישה השבועית של רוזטה בהיעדרו של יוסף. ב־19.8 נפתחה רוזטה לראשונה למפתחים נוספים. ב־15.9 התחילה חפיפה לשרון, ומאז אוקטובר היא עובדת עם יוסף ישירות. ב־7.10 הצטרפו שבעת המפתחים מפוטון, וב־11.10 העבירו גיא ויוסף סשן Wildfire לצוות פוטון, עם הדגמת מיפויים ותיעוד. ב־18.10 הוגדר יעד מפורש: שישה אנשים שמכירים את רוזטה אישית, כלומר עוד חמישה, בגילדת פלטפורמה זמנית של כחודש, שאחריה המשתתפים חוזרים לסקוודים. המשך התקופה תלוי בהכשרה ולא בתאריך, וההרכב עוד לא נקבע.

המלצת הסוכן לגבי החפיפה: לא סיור על כל המערכת, אלא תחום אחד לכל משתתף, מקצה לקצה. התחומים המתבקשים הם בדיקות החוזה; קמיליון 9 ואיתן; ה־cache, התורים והפריסה; הסטודיו; והמיפוי עם התיעוד. ב־18.10 אמר יוסף שהיה מתחיל אנשים מהשכבות שסביב הליבה, WSP והתשתית, ולא מהרזולברים עצמם, שבהם יש הרבה executors ו־threading. התיעוד ב־AI-Docs, כולל ארגון המסדים, הטבלאות והדוגמאות, כבר קיים; הסקילים לסוכני קוד עוד לא גמורים. המאגר קשה לקריאה למי שלא עבד בו, ולפי דיווח יוסף מ־19.10 הוא מסודר עכשיו בענף נפרד.

מה פתוח

אלה הבעיות הפתוחות, בלי סדר חשיבות קבוע:

המלצת הסוכן לחודש הקרוב: שלושה דברים, לפי הסדר. בדיקות החוזה; מיזוג קמיליון 9 ואיתן כך שיעבדו אצל הצרכנים ולא רק בענף; והחפיפה עצמה. כל אחד מהשלושה מקטין את התלות של המרכז באדם אחד, וזו הבעיה שרוב הפתוחים האחרים נשענים עליה.

חזרה לתשובות

המרכז והדרך · הסטודיו · SmartER ו־TMR · סמי, ה־managers ו־AI Flows · הפלטפורמה · הצוותים והתפקידים · מקורות המידע · מה קורה עכשיו ומה פתוח