fix(sync): מיפוי-הסטטוסים מ-/api/status-model + סריקת כל החברות (legal-ai #604) #9
Reference in New Issue
Block a user
Delete Branch "fix/604-paperclip-status-sync"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
מה ולמה
תיקון-הקוד של legal-ai #604 — הג'וב
sync-case-statusרץ ירוק 13,872 פעם אך לא כתבissue.statusולו פעם אחת מאז 22.7. שלוש סיבות-שורש, כולן מתוקנות כאן:1. המפה הקשיחה נותקה ממקור-האמת (G2).
CASE_STATUS_TO_ISSUE_STATUSלא נגזרה מ-case_status_model.pyבצד legal-ai ולכן סטתה ממנו: חסרוanalyst_verifiedו-research_complete(נוספו בקומיט851a4fb, 30.6), ונשארו בה 3 מפתחות מתים —uploading,brainstorming,drafting— שאינם קיימים יותר ב-CaseStatus. סטטוסשאינו במפה נפל ל-
continueבלי לוג ובלי שגיאה.כעת המיפוי נגזר בזמן-ריצה מ-
GET /api/status-model(ה-endpoint שכבר קיים ומגיש אתcase_status_model.py), דרךresolveIssueStatus— פונקציה טהורה שמשתמשת אך ורק בשדותגנריים:
terminal: true→done, הסטטוס הראשון בסדר →todo, כל השאר →in_progress. סטטוס חדש בצד legal-ai לא ידרוש עוד עריכה בפלאגין.2.
companies[0]בלבד. מתוך שתי החברות, אחת מעולם לא נסרקה. נמדד ב-DB החי:42a7acd0…= 135 issues מקושרי-תיק,8639e837…= 67 — כלומר 67 issues מחוץ לטווח-הראייהשל הג'וב. כעת נסרקות כל החברות (אותה תבנית שכבר בשימוש ב-
route-pending-comments),וה-
companyIdשנכתב אליו הוא של המועמד שנבחר (target.companyId), לא החברה הראשונהגורפת —
SyncCandidateנושא את השדה עד נקודת-הכתיבה.3. דילוג שקט. סטטוס לא-מוכר →
ctx.logger.warnמפורש עם שם-הסטטוס ומספר-התיק.לוגיקת בחירת-היעד של #446 לא נגעה:
pickSyncTargetIssue,isWritableStatus,CLOSED_ISSUE_STATUSES,NON_WRITABLE_STATUSES— זהות. ל-SyncCandidateנוסף שדהcompanyIdבלבד, passthrough טהור שאינו משתתף בשום החלטת-בחירה.אימות
שקילוּת מול המפה הישנה — מול השרת החי (
/api/status-model, 12 סטטוסים):סימולציה על הנתונים החיים (6 תיקים מ-legal-ai × 202 issues מקושרים מה-DB של Paperclip):
analyst_verified)הבהרה חשובה על "התיקים התקועים": שלושת התיקים ב-
analyst_verifiedאינם תקועים בגללהבאג הזה — שורשיהם ב-Paperclip כבר
in_review/done, כלומר הסלמה תקינה הממתינה להכרעתהיו"ר (בדיוק כתיאור הסטטוס: "ממתין להכרעת תוצאה של היו״ר"). מה שהבאג גרם הוא היעדר
נראות — הם לא הפיקו אף שורת-לוג. אחרי התיקון הם מדווחים
no_writable_root. הג'וב לאידרוס אותם, וזה הנכון (הגנת #446).
שערים:
פריסה (ידנית, אחרי מיזוג):
npm run build→paperclipai plugin uninstall/install→pm2 restart paperclip→ מעקבpm2 logsבטיק-הקרון הבא (≤15 דק').legal-ai #604 · PR-אחות בריפו legal-ai:
ezer-mishpati/legal-ai#612(תיעודINV-INT9ב-X7).