fix(sync): מיפוי-הסטטוסים נגזר מ-/api/status-model, וסריקה בכל החברות (legal-ai #604)
שלושה כשלים בג'וב sync-case-status, שהשביתו אותו בשקט מאז 22.7: 1. המפה הקשיחה CASE_STATUS_TO_ISSUE_STATUS נותקה מ-case_status_model.py (מקור-האמת בצד legal-ai): חסרו analyst_verified ו-research_complete שנוספו ב-851a4fb, ונשארו בה 3 מפתחות מתים (uploading/brainstorming/drafting). סטטוס חסר נפל ל-`continue` — בלי לוג ובלי שגיאה. כעת המיפוי נגזר מ- GET /api/status-model דרך resolveIssueStatus/labelFor: terminal→done, הסטטוס הראשון בסדר→todo, השאר→in_progress. סטטוס חדש בצד legal-ai לא דורש עוד עריכה כאן (G2 — מקור-אמת אחד). 2. companies[0] בלבד — מתוך שתי החברות, אחת מעולם לא נסרקה (נמדד: 135 מול 67 issues מקושרי-תיק). כעת נסרקות כל החברות, וה-companyId של המועמד שנבחר הוא זה שנכתב אליו — לא החברה הראשונה גורפת. 3. דילוג שקט על סטטוס לא-מוכר → ctx.logger.warn עם שם-הסטטוס ומספר-התיק. אימות מול השרת החי: 0 סטיות מול המפה הישנה על כל 10 הסטטוסים שכיסתה, +2 שכוסו לראשונה. סימולציה על הנתונים החיים: דילוג-שקט 3→0, שורות-לוג 3→6, כתיבות בפועל 0→0 — כלומר אין נסיגה ל-flip-flop של #446. לוגיקת בחירת-היעד (#446) לא שונתה: pickSyncTargetIssue, isWritableStatus, CLOSED_ISSUE_STATUSES ו-NON_WRITABLE_STATUSES זהות; ל-SyncCandidate נוסף שדה companyId בלבד (passthrough). 8 הטסטים הקיימים עוברים ללא שינוי באסרשנים, +7 חדשים. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -36,6 +36,10 @@ export class LegalApi {
|
||||
return this.request("/api/cases");
|
||||
}
|
||||
|
||||
async getStatusModel(): Promise<StatusModel> {
|
||||
return this.request("/api/status-model");
|
||||
}
|
||||
|
||||
async getCase(caseNumber: string): Promise<CaseDetails> {
|
||||
return this.request(`/api/cases/${encodeURIComponent(caseNumber)}/details`);
|
||||
}
|
||||
@@ -184,6 +188,21 @@ export interface CaseSummary {
|
||||
status: string;
|
||||
}
|
||||
|
||||
export interface StatusModelEntry {
|
||||
key: string;
|
||||
label: string;
|
||||
description: string;
|
||||
phase: string;
|
||||
selectable: boolean;
|
||||
terminal: boolean;
|
||||
on_enter: string | null;
|
||||
}
|
||||
|
||||
export interface StatusModel {
|
||||
statuses: StatusModelEntry[];
|
||||
phases: Array<{ key: string; label: string }>;
|
||||
}
|
||||
|
||||
export interface CaseDetails {
|
||||
id: string;
|
||||
case_number: string;
|
||||
|
||||
Reference in New Issue
Block a user