#!/usr/bin/env python3
"""retrofit_case.py — הזרקת bookmarks רטרואקטיבית לקובץ קיים בתיק.

שימוש:
    python scripts/retrofit_case.py <case_number> <filename>

דוגמה:
    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())
