@eido
לפי איך שאני מבין אתה צריך כמה דברים, יתכן שחלקם יש לך ואתה עובד כך, נפרט
תאריך פרסום - בכל מודעה שינוי סטטוס של מודעה אמור להיות תאריך פרסום, שזה אומר שההודעה הזו בתוקף מאותו תאריך.
שינוי סטטוס אומר גם ירידת מחיר מ3000 ל2800 לדוגמא, שינוי כזה יש לסדר מחדש ללקוח מאחר ויתכן שבמחיר 3000 זה לא רלוונטי אבל ב2800 יש על מה לדבר, אתה יכול להוסיף נתון שהמחיר בעבר היה גבוה יותר, וכן פרסום של שכירות משנה קודמת שכרגע הוא שוב בשוק, אמור להיות מוגדר חדש למרות שאותו לקוח שמע בעבר.
הסינון - לולאת הסינון אמור לקחת את כל הפרסומים הרלבנטיים (מינוס X ימים אחורה), ולפתוח רשומה טבלה נוספת הכולל זיהוי לקוח, זיהוי פרסום, תאריך פרסום, תאריך שמיעה.
בהשמעה - אתה משמיע רק את את מה שלא שמע, בכל העברת רשומה בIVR אתה מעדכן תאריך שמיעה.
הבעיה שאתה מציג שבעת החזרת הסינון אחרי שנמחק הסינון, אתה אמור להוסיף רק את הפרסומים הרלוונטיות (מינוס X ימים אחורה) ולא אמור להוסיף את כל הקודמים שהם פחות רלוונטים כרגע.
במשפט קצר, אתה אמור לסנן פרסומים ולא לסנן נכסים, לכל נכס יש הרבה פרסומים בהמשך הזמן.
לגבי מהירות הסינון, כל הDB שלך בגדול הוא 50 אלף רשומות שמבוסס על מספרים אם הוא מאונדקס נכון, אין בעיה של זמן סינון, גם את הלולאה של יצירת רשימות ההשמעה ללקוח, אתה יכול לעשות כטריגר בעת הוספת פרסום ואז שירוץ על כל השורות המכילות את התנאי של הנכס ומתאים לסינון ולהכניס לרשימה, או שפעם בכמה דקות תפעיל לולאה כזו על כל הפרסומים החדשים.
כשהלקוח מתקשר אמור להישלף מה DB רק את הפרסומים המוכנים בשבילו בטבלה ולא יצירה מחדש של סינון דימני.