#!/usr/bin/env python3 """retrofit_case.py — הזרקת bookmarks רטרואקטיבית לקובץ קיים בתיק. שימוש: python scripts/retrofit_case.py דוגמה: python scripts/retrofit_case.py 1033-25 עריכה-v1.docx פעולה: 1. מזהה את הקובץ ב-data/cases/{case_number}/exports/ 2. מזריק bookmarks ב-12 הבלוקים (heuristic) 3. שומר backup כ-{filename}.pre-retrofit.docx 4. מדפיס summary — אילו בלוקים זוהו, אילו חסרים לתיק 1033-25 — הריצו פעם אחת על עריכה-v1.docx הקיים. אחרי זה תוכלו להריץ revise_draft דרך ה-CEO. הערה: השירות הזה נקרא גם אוטומטית דרך apply_user_edit tool ב-MCP, אז אחרי deploy אין צורך להריץ ידנית. זה לגיבוי/ניפוי. """ from __future__ import annotations import json import sys from pathlib import Path # Make mcp-server importable when run from repo root REPO_ROOT = Path(__file__).resolve().parent.parent sys.path.insert(0, str(REPO_ROOT / "mcp-server" / "src")) def main() -> int: if len(sys.argv) != 3: print(__doc__) return 2 case_number = sys.argv[1] filename = sys.argv[2] from legal_mcp.services import docx_retrofit, docx_reviser case_dir = REPO_ROOT / "data" / "cases" / case_number / "exports" file_path = case_dir / filename if not file_path.exists(): print(f"✗ קובץ לא נמצא: {file_path}", file=sys.stderr) return 1 print(f"מעבד: {file_path}") print(f" גודל: {file_path.stat().st_size:,} בייט") # Existing bookmarks before = docx_reviser.list_bookmarks(file_path) print(f" bookmarks קיימים: {before or '(ריק)'}") result = docx_retrofit.retrofit_bookmarks(file_path) print() print("תוצאה:") print(json.dumps(result, ensure_ascii=False, indent=2)) # Verify post-state after = docx_reviser.list_bookmarks(file_path) print() print(f"bookmarks אחרי: {len(after)} — {after}") backup = file_path.with_suffix(".pre-retrofit.docx") if backup.exists(): print(f"גיבוי נשמר: {backup}") # Build an MCP-callable invocation hint rel = file_path.relative_to(REPO_ROOT) print() print("השלב הבא: לעדכן active_draft_path ב-DB. הפקודה:") print(f' mcp__legal-ai__apply_user_edit case_number="{case_number}" ' f'edit_filename="{filename}"') print() print(f"(זה ירוץ retrofit שוב idempotent ואז יעדכן את DB)") return 0 if __name__ == "__main__": sys.exit(main())