Commit ·
399fe06
1
Parent(s): 12a7c9c
כתיבה מחדש של ה-prompt להיות מצומצם, פשוט ומדויק עם כל השדות ודוגמאות
Browse files- app/sql_service.py +86 -196
app/sql_service.py
CHANGED
|
@@ -131,144 +131,85 @@ class SQLFeedbackService:
|
|
| 131 |
if self.df is None:
|
| 132 |
return "No data available"
|
| 133 |
|
| 134 |
-
# Build
|
| 135 |
all_columns_info = ""
|
| 136 |
|
| 137 |
-
#
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
all_columns_info += "
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
all_columns_info += "
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
all_columns_info += "
|
| 156 |
-
|
| 157 |
-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
#
|
| 166 |
if 'ReferenceNumber' in self.df.columns:
|
| 167 |
-
|
| 168 |
-
all_columns_info += "
|
| 169 |
-
all_columns_info += " * משמעות עסקית: מספר הפניה פנימי של המשוב במערכת. מאפשר קישור למסמכים או בקשות קשורות, מעקב אחר תהליכים, וניהול בקשות\n"
|
| 170 |
-
all_columns_info += " * דוגמאות: 6928, 6938, NULL\n"
|
| 171 |
-
all_columns_info += " * שימוש בשאילתות: WHERE ReferenceNumber = 6928, WHERE ReferenceNumber IS NOT NULL, COUNT(*) WHERE ReferenceNumber IS NULL\n\n"
|
| 172 |
|
|
|
|
| 173 |
if 'RequestID' in self.df.columns:
|
| 174 |
-
|
| 175 |
-
all_columns_info += "
|
| 176 |
-
all_columns_info += " * משמעות עסקית: מזהה ייחודי של הבקשה המקורית שקשורה למשוב. מאפשר קישור בין בקשות למשובים, מעקב אחר תהליכים, וניתוח הקשר בין בקשה למשוב\n"
|
| 177 |
-
all_columns_info += " * דוגמאות: 'D02E2BB5-079B-44AD-AC35-9D30A22715F9', '463B8D9A-C85B-474C-895D-D73CE067EF27', NULL\n"
|
| 178 |
-
all_columns_info += " * שימוש בשאילתות: WHERE RequestID = '...', COUNT(DISTINCT RequestID), WHERE RequestID IS NOT NULL\n\n"
|
| 179 |
|
|
|
|
| 180 |
if 'ProcessID' in self.df.columns:
|
| 181 |
-
all_columns_info += "
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
|
| 213 |
-
|
| 214 |
-
|
| 215 |
-
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
if 'יום_בחודש' in existing_date_columns:
|
| 219 |
-
date_columns_info += "- יום_בחודש: יום בחודש שבו ניתן המשוב\n"
|
| 220 |
-
date_columns_info += " * סוג: מספר שלם (1-31)\n"
|
| 221 |
-
date_columns_info += " * משמעות עסקית: מאפשר ניתוח לפי ימים בחודש, זיהוי ימים בעייתיים (למשל סוף חודש), וניתוח דפוסים יומיים\n"
|
| 222 |
-
date_columns_info += " * דוגמאות: 1, 15, 31\n"
|
| 223 |
-
date_columns_info += " * שימוש בשאילתות: WHERE יום_בחודש = 1, GROUP BY יום_בחודש, SELECT יום_בחודש, COUNT(*) GROUP BY יום_בחודש\n\n"
|
| 224 |
-
|
| 225 |
-
if 'יום_בשבוע' in existing_date_columns:
|
| 226 |
-
date_columns_info += "- יום_בשבוע: יום בשבוע שבו ניתן המשוב\n"
|
| 227 |
-
date_columns_info += " * סוג: טקסט (אנגלית)\n"
|
| 228 |
-
date_columns_info += " * ערכים אפשריים: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday\n"
|
| 229 |
-
date_columns_info += " * משמעות עסקית: מאפשר ניתוח לפי ימי השבוע, זיהוי ימים בעייתיים (למשל ראשון), תכנון כוח אדם, וזיהוי דפוסים שבועיים\n"
|
| 230 |
-
date_columns_info += " * דוגמאות: 'Monday', 'Wednesday', 'Friday'\n"
|
| 231 |
-
date_columns_info += " * שימוש בשאילתות: WHERE יום_בשבוע = 'Monday', GROUP BY יום_בשבוע, SELECT יום_בשבוע, COUNT(*) GROUP BY יום_בשבוע\n\n"
|
| 232 |
-
|
| 233 |
-
if 'שעה' in existing_date_columns:
|
| 234 |
-
date_columns_info += "- שעה: שעה ביום שבה ניתן המשוב\n"
|
| 235 |
-
date_columns_info += " * סוג: מספר שלם (0-23)\n"
|
| 236 |
-
date_columns_info += " * משמעות: 0=חצות (00:00), 12=צהריים (12:00), 23=23:00\n"
|
| 237 |
-
date_columns_info += " * משמעות עסקית: מאפשר ניתוח לפי שעות היום, זיהוי שעות שיא, תכנון זמינות שירות, וזיהוי דפוסים יומיים (למשל שעות בוקר מול ערב)\n"
|
| 238 |
-
date_columns_info += " * דוגמאות: 0 (חצות), 9 (9 בבוקר), 14 (2 בצהריים), 18 (6 בערב), 23 (11 בלילה)\n"
|
| 239 |
-
date_columns_info += " * שימוש בשאילתות: WHERE שעה >= 9 AND שעה <= 17 (שעות עבודה), GROUP BY שעה, SELECT שעה, COUNT(*) GROUP BY שעה ORDER BY שעה\n\n"
|
| 240 |
-
|
| 241 |
-
if 'יום_לילה' in existing_date_columns:
|
| 242 |
-
date_columns_info += "- יום_לילה: האם המשוב ניתן בשעות היום או הלילה\n"
|
| 243 |
-
date_columns_info += " * סוג: טקסט\n"
|
| 244 |
-
date_columns_info += " * ערכים אפשריים: 'יום' או 'לילה'\n"
|
| 245 |
-
date_columns_info += " * הגדרה: יום=6:00-18:00, לילה=18:00-6:00\n"
|
| 246 |
-
date_columns_info += " * משמעות עסקית: מאפשר ניתוח לפי שעות פעילות, זיהוי הבדלים בין יום ללילה, תכנון זמינות שירות, וזיהוי בעיות בשעות מסוימות\n"
|
| 247 |
-
date_columns_info += " * דוגמאות: 'יום', 'לילה'\n"
|
| 248 |
-
date_columns_info += " * שימוש בשאילתות: WHERE יום_לילה = 'יום', GROUP BY יום_לילה, SELECT יום_לילה, COUNT(*) GROUP BY יום_לילה\n\n"
|
| 249 |
-
|
| 250 |
-
schema_info = f"""
|
| 251 |
-
⚠️⚠️⚠️ שם הטבלה: 'Feedback_transformed' (עם אות גדולה F ו-underscore) - זה הקובץ feedback_transformed.csv
|
| 252 |
-
|
| 253 |
-
טבלת Feedback_transformed מכילה את השדות הבאים:
|
| 254 |
-
{all_columns_info}{date_columns_info}
|
| 255 |
-
|
| 256 |
-
⚠️⚠️⚠️ קריטי: שם הטבלה ב-SQL הוא 'Feedback_transformed' (עם אות גדולה F ו-underscore).
|
| 257 |
-
כל שאילתה חייבת להתחיל ב-SELECT ולהשתמש ב-FROM Feedback_transformed.
|
| 258 |
-
אסור להשתמש בשמות אחרים!
|
| 259 |
-
|
| 260 |
-
🚫🚫🚫 אזהרה חשובה מאוד:
|
| 261 |
-
- השדה CreationDate לא קיים בטבלה! הוא נמחק!
|
| 262 |
-
- אסור להשתמש ב-CreationDate בשום שאילתה!
|
| 263 |
-
- אסור להשתמש ב-strftime() או DATE() על CreationDate - השדה לא קיים!
|
| 264 |
-
- כל המידע על תאריכים נמצא בשדות המחושבים: שנה, חודש, יום_בשבוע, שעה, יום_לילה, יום_בחודש
|
| 265 |
-
- אם אתה רואה CreationDate ב-schema - זה שגיאה! השתמש רק בשדות המחושבים!
|
| 266 |
-
|
| 267 |
-
סטטיסטיקות כלליות:
|
| 268 |
-
- סך הכל משובים: {len(self.df)}
|
| 269 |
-
- מספר שירותים ייחודיים: {self.df['ServiceName'].nunique()}
|
| 270 |
-
- חלוקת דירוגים: {dict(self.df['Level'].value_counts().sort_index())}
|
| 271 |
-
- דירוג ממוצע: {self.df['Level'].mean():.2f}
|
| 272 |
"""
|
| 273 |
return schema_info
|
| 274 |
|
|
@@ -347,77 +288,26 @@ class SQLFeedbackService:
|
|
| 347 |
|
| 348 |
schema_info = self._get_schema_info()
|
| 349 |
|
| 350 |
-
prompt = f"""
|
| 351 |
|
| 352 |
-
|
| 353 |
-
- השדה CreationDate לא קיים בטבלה! הוא נמחק לחלוטין!
|
| 354 |
-
- אסור להשתמש ב-CreationDate בשום שאילתה!
|
| 355 |
-
- אסור להשתמש ב-strftime() או DATE() על CreationDate - השדה לא קיים!
|
| 356 |
-
- כל המידע על תאריכים נמצא בשדות המחושבים: שנה, חודש, יום_בשבוע, שעה, יום_לילה, יום_בחודש
|
| 357 |
-
- אם השאלה מתייחסת לתאריכים/זמן - השתמש רק בשדות המחושבים האלה!
|
| 358 |
|
| 359 |
-
שאלת המשתמש: {query}
|
| 360 |
-
|
| 361 |
-
מידע על הטבלה:
|
| 362 |
{schema_info}
|
| 363 |
|
| 364 |
-
|
| 365 |
-
|
| 366 |
-
|
| 367 |
-
|
| 368 |
-
|
| 369 |
-
|
| 370 |
-
- אם השאלה פשוטה, מספיקה שאילתה אחת
|
| 371 |
-
- אם השאלה מורכבת, אפשר 2-3 שאילתות ממוקדות
|
| 372 |
-
|
| 373 |
-
כללים חשובים:
|
| 374 |
-
1. ⚠️⚠️⚠️ שם הטבלה הוא 'Feedback_transformed' (עם אות גדולה F ו-underscore) - זה קריטי!
|
| 375 |
-
- כל שאילתה חייבת להתחיל ב-SELECT ולהשתמש ב-FROM Feedback_transformed
|
| 376 |
-
- אסור להשתמש בשמות אחרים כמו 'feedback', 'Feedback', 'feedback_transformed' (עם אות קטנה)
|
| 377 |
-
- רק 'Feedback_transformed' (עם אות גדולה F) הוא הנכון!
|
| 378 |
-
- דוגמה נכונה: SELECT * FROM Feedback_transformed
|
| 379 |
-
- דוגמה שגויה: SELECT * FROM feedback (זה לא יעבוד!)
|
| 380 |
-
- דוגמה שגויה: SELECT * FROM Feedback (זה לא יעבוד!)
|
| 381 |
-
2. השתמש בשמות השדות המדויקים: ID, ServiceName, Level, Text, ReferenceNumber, RequestID, ProcessID, שנה, חודש, יום_בשבוע, שעה, יום_לילה, יום_בחודש
|
| 382 |
-
3. Level הוא מספר שלם מ-1 עד 5 (1=גרוע, 5=מעולה)
|
| 383 |
-
4. ServiceName הוא טקסט
|
| 384 |
-
5. Text הוא הטקסט החופשי של המשוב
|
| 385 |
-
6. ⚠️⚠️⚠️ שאילתות מבוססות זמן - קריטי:
|
| 386 |
-
- השדה CreationDate לא קיים! הוא נמחק! אל תשתמש בו!
|
| 387 |
-
- השדות שנה, חודש, יום_בשבוע, שעה, יום_לילה, יום_בחודש כבר מחושבים ומולאו בנתונים!
|
| 388 |
-
- תמיד השתמש ישירות בשדות המחושבים - הם כבר מוכנים לשימוש!
|
| 389 |
-
- אם השאלה מתייחסת לתאריכים/זמן - השתמש רק בשדות: שנה, חודש, יום_בשבוע, שעה, יום_לילה, יום_בחודש
|
| 390 |
-
- דוגמה לשאילתה לפי שנה: SELECT שנה, COUNT(*) as count FROM Feedback_transformed GROUP BY שנה ORDER BY שנה
|
| 391 |
-
- דוגמה לשאילתה לפי חודש: SELECT חודש, COUNT(*) as count FROM Feedback_transformed GROUP BY חודש ORDER BY חודש
|
| 392 |
-
- דוגמה לשאילתה לפי יום בשבוע: SELECT יום_בשבוע, COUNT(*) as count FROM Feedback_transformed GROUP BY יום_בשבוע
|
| 393 |
-
- דוגמה לשאילתה לפי שעה: SELECT שעה, COUNT(*) as count FROM Feedback_transformed GROUP BY שעה ORDER BY שעה
|
| 394 |
-
- דוגמה לשאילתה לפי יום/לילה: SELECT יום_לילה, COUNT(*) as count FROM Feedback_transformed GROUP BY יום_לילה
|
| 395 |
-
- דוגמה לשאילתה לפי יום בחודש: SELECT יום_בחודש, COUNT(*) as count FROM Feedback_transformed GROUP BY יום_בחודש ORDER BY יום_בחודש
|
| 396 |
-
- דוגמה לשאילתה משולבת (שנה וחודש): SELECT שנה, חודש, COUNT(*) as count FROM Feedback_transformed GROUP BY שנה, חודש ORDER BY שנה, חודש
|
| 397 |
-
7. שדות תאריך/זמן: יום_בחודש, יום_בשבוע, שנה, חודש, שעה, יום_לילה - כל השדות האלה כבר מחושבים ומוכנים לשימוש ישיר!
|
| 398 |
-
8. כל שאילתה צריכה להיות תקפה SQLite
|
| 399 |
-
9. השתמש בפונקציות SQL סטנדרטיות: COUNT, AVG, GROUP BY, WHERE, LIKE, etc.
|
| 400 |
-
10. 🚫🚫🚫 אל תשתמש ב-CreationDate, DATE(), או strftime() - השדה CreationDate לא קיים! השדות המחושבים כבר מוכנים!
|
| 401 |
-
11. אם השאלה מתייחסת לטקסט, השתמש ב-LIKE או INSTR לחיפוש
|
| 402 |
-
12. אם השאלה מתייחסת לדירוגים, השתמש ב-Level עם תנאים מתאימים
|
| 403 |
-
13. אם השאלה מתייחסת לשירותים, השתמש ב-ServiceName
|
| 404 |
-
14. דוגמה לשאילתה נכונה: SELECT COUNT(*) FROM Feedback_transformed WHERE Level >= 4
|
| 405 |
-
15. ⚠️⚠️⚠️ זכור: כל שאילתה חייבת להתחיל ב-SELECT ולהשתמש ב-FROM Feedback_transformed (עם אות גדולה F ו-underscore)!
|
| 406 |
-
16. ⚠️⚠️⚠️ לפני שאתה שולח את השאילתה, ודא שהיא מכילה: FROM Feedback_transformed (עם אות גדולה F!)
|
| 407 |
-
17. 🚫🚫🚫 לפני שאתה שולח את השאילתה, ודא שאין שימוש ב-CreationDate, strftime(), או DATE() - השדה CreationDate לא קיים!
|
| 408 |
|
| 409 |
-
|
| 410 |
-
|
| 411 |
-
|
| 412 |
-
|
| 413 |
-
|
| 414 |
-
...
|
| 415 |
-
]
|
| 416 |
-
}}
|
| 417 |
-
|
| 418 |
-
⚠️ זכור: לא חייב להריץ כמה שאילתות! אם השאלה פשוטה, מספיקה שאילתה אחת ממוקדת.
|
| 419 |
|
| 420 |
-
|
| 421 |
|
| 422 |
# Try Gemini first
|
| 423 |
if settings.gemini_api_key and genai is not None:
|
|
|
|
| 131 |
if self.df is None:
|
| 132 |
return "No data available"
|
| 133 |
|
| 134 |
+
# Build compact schema info with all fields, examples, and usage
|
| 135 |
all_columns_info = ""
|
| 136 |
|
| 137 |
+
# Get sample values for each column
|
| 138 |
+
def get_sample_values(col_name, n=3):
|
| 139 |
+
try:
|
| 140 |
+
samples = self.df[col_name].dropna().head(n).tolist()
|
| 141 |
+
return [str(s) for s in samples]
|
| 142 |
+
except:
|
| 143 |
+
return []
|
| 144 |
+
|
| 145 |
+
# ID
|
| 146 |
+
samples = get_sample_values('ID', 2)
|
| 147 |
+
all_columns_info += f"• ID (UUID): מזהה ייחודי. דוגמאות: {', '.join(samples[:2])}\n"
|
| 148 |
+
|
| 149 |
+
# ServiceName
|
| 150 |
+
samples = get_sample_values('ServiceName', 3)
|
| 151 |
+
unique_services = self.df['ServiceName'].nunique() if 'ServiceName' in self.df.columns else 0
|
| 152 |
+
all_columns_info += f"• ServiceName (טקסט): שם השירות. דוגמאות: {', '.join(samples[:2])}. יש {unique_services} שירותים ייחודיים\n"
|
| 153 |
+
|
| 154 |
+
# Level
|
| 155 |
+
all_columns_info += "• Level (מספר 1-5): דירוג שביעות רצון. 1=גרוע מאוד, 5=מעולה. דוגמאות: 1, 2, 3, 4, 5\n"
|
| 156 |
+
|
| 157 |
+
# Text
|
| 158 |
+
samples = get_sample_values('Text', 1)
|
| 159 |
+
if samples:
|
| 160 |
+
sample_text = samples[0][:50] + "..." if len(samples[0]) > 50 else samples[0]
|
| 161 |
+
all_columns_info += f"• Text (טקסט ארוך): תוכן המשוב. דוגמה: '{sample_text}'\n"
|
| 162 |
+
else:
|
| 163 |
+
all_columns_info += "• Text (טקסט ארוך): תוכן המשוב - ביקורות, תלונות, מחמאות\n"
|
| 164 |
+
|
| 165 |
+
# ReferenceNumber
|
| 166 |
if 'ReferenceNumber' in self.df.columns:
|
| 167 |
+
samples = get_sample_values('ReferenceNumber', 3)
|
| 168 |
+
all_columns_info += f"• ReferenceNumber (מספר, יכול להיות NULL): מספר הפניה. דוגמאות: {', '.join([str(s) for s in samples[:2]])}\n"
|
|
|
|
|
|
|
|
|
|
| 169 |
|
| 170 |
+
# RequestID
|
| 171 |
if 'RequestID' in self.df.columns:
|
| 172 |
+
samples = get_sample_values('RequestID', 2)
|
| 173 |
+
all_columns_info += f"• RequestID (UUID, יכול להיות NULL): מזהה בקשה. דוגמאות: {samples[0][:20]}...\n"
|
|
|
|
|
|
|
|
|
|
| 174 |
|
| 175 |
+
# ProcessID
|
| 176 |
if 'ProcessID' in self.df.columns:
|
| 177 |
+
all_columns_info += "• ProcessID (UUID, יכול להיות NULL): מזהה תהליך\n"
|
| 178 |
+
|
| 179 |
+
# Date/Time fields - PRE-CALCULATED, use these for time queries
|
| 180 |
+
all_columns_info += "\nשדות תאריך/זמן מחושבים (מוכנים לשימוש - השתמש בהם לשאילתות זמן!):\n"
|
| 181 |
+
|
| 182 |
+
if 'שנה' in self.df.columns:
|
| 183 |
+
try:
|
| 184 |
+
year_min = int(self.df['שנה'].min())
|
| 185 |
+
year_max = int(self.df['שנה'].max())
|
| 186 |
+
all_columns_info += f"• שנה (מספר): שנה. טווח: {year_min}-{year_max}. דוגמאות: {year_min}, {year_max}\n"
|
| 187 |
+
except:
|
| 188 |
+
all_columns_info += "• שנה (מספר): שנה. דוגמאות: 2020, 2021\n"
|
| 189 |
+
|
| 190 |
+
if 'חודש' in self.df.columns:
|
| 191 |
+
all_columns_info += "• חודש (מספר 1-12): חודש. 1=ינואר, 12=דצמבר. דוגמאות: 1, 6, 12\n"
|
| 192 |
+
|
| 193 |
+
if 'יום_בחודש' in self.df.columns:
|
| 194 |
+
all_columns_info += "• יום_בחודש (מספר 1-31): יום בחודש. דוגמאות: 1, 15, 31\n"
|
| 195 |
+
|
| 196 |
+
if 'יום_בשבוע' in self.df.columns:
|
| 197 |
+
samples = get_sample_values('יום_בשבוע', 3)
|
| 198 |
+
all_columns_info += f"• יום_בשבוע (טקסט): יום בשבוע באנגלית. ערכים: Monday-Sunday. דוגמאות: {', '.join(samples[:3])}\n"
|
| 199 |
+
|
| 200 |
+
if 'שעה' in self.df.columns:
|
| 201 |
+
all_columns_info += "• שעה (מספר 0-23): שעה ביום. 0=חצות, 12=צהריים, 23=23:00. דוגמאות: 0, 9, 14, 18, 23\n"
|
| 202 |
+
|
| 203 |
+
if 'יום_לילה' in self.df.columns:
|
| 204 |
+
samples = get_sample_values('יום_לילה', 2)
|
| 205 |
+
all_columns_info += f"• יום_לילה (טקסט): 'יום' או 'לילה'. יום=6:00-18:00, לילה=18:00-6:00. דוגמאות: {', '.join(samples[:2])}\n"
|
| 206 |
+
|
| 207 |
+
schema_info = f"""שם הטבלה: Feedback_transformed (עם אות גדולה F)
|
| 208 |
+
|
| 209 |
+
שדות בטבלה:
|
| 210 |
+
{all_columns_info}
|
| 211 |
+
|
| 212 |
+
סטטיסטיקות: {len(self.df)} משובים, {self.df['ServiceName'].nunique()} שירותים, דירוג ממוצע: {self.df['Level'].mean():.2f}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 213 |
"""
|
| 214 |
return schema_info
|
| 215 |
|
|
|
|
| 288 |
|
| 289 |
schema_info = self._get_schema_info()
|
| 290 |
|
| 291 |
+
prompt = f"""צור שאילתות SQL לשאלה: {query}
|
| 292 |
|
| 293 |
+
טבלה: Feedback_transformed (חובה להשתמש בשם זה!)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 294 |
|
|
|
|
|
|
|
|
|
|
| 295 |
{schema_info}
|
| 296 |
|
| 297 |
+
כללים:
|
| 298 |
+
1. שם הטבלה: Feedback_transformed (עם אות גדולה F) - חובה!
|
| 299 |
+
2. שאילתות זמן: השתמש בשדות המחושבים (שנה, חודש, יום_בשבוע, שעה, יום_לילה, יום_בחודש) - אל תשתמש ב-CreationDate!
|
| 300 |
+
3. Level: 1-5 (1=גרוע, 5=מעולה)
|
| 301 |
+
4. Text: חיפוש עם LIKE '%מילה%'
|
| 302 |
+
5. ServiceName: שם השירות
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 303 |
|
| 304 |
+
דוגמאות:
|
| 305 |
+
- SELECT שנה, COUNT(*) FROM Feedback_transformed GROUP BY שנה
|
| 306 |
+
- SELECT ServiceName, AVG(Level) FROM Feedback_transformed GROUP BY ServiceName
|
| 307 |
+
- SELECT COUNT(*) FROM Feedback_transformed WHERE Level >= 4
|
| 308 |
+
- SELECT יום_בשבוע, COUNT(*) FROM Feedback_transformed GROUP BY יום_בשבוע
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 309 |
|
| 310 |
+
פורמט: JSON בלבד עם "queries": ["SELECT ...", ...]"""
|
| 311 |
|
| 312 |
# Try Gemini first
|
| 313 |
if settings.gemini_api_key and genai is not None:
|