Support ingestion of betterment levy (היטל השבחה) decisions into a separate training corpus (CMPA). Key changes: - Add .doc file extraction via LibreOffice conversion in extractor - Add practice_area/appeal_subtype columns to style_corpus table - Route training files to cmp/ or cmpa/ subdirs based on appeal subtype - Fix derive_subtype to handle ARAR-YY-NNNN format (was matching year digit) - Expose practice_area/appeal_subtype params in MCP upload_training tool - Add appeal_subtype filter to analyze_style for per-type style analysis - Update betterment levy methodology in lessons.py: checklist (from generic to corpus-based), opening/closing strategies, and discussion rules Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
616 lines
29 KiB
Python
616 lines
29 KiB
Python
"""Lessons learned from comparing AI drafts to Dafna Tamir's final decisions.
|
||
|
||
Source: docs/legal-decision-lessons.md
|
||
Based on analysis of: Hecht 1180-1181 (rejection) and Beit HaKerem 1126/25+1141/25 (partial acceptance).
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
# ── Valid outcome values ────────────────────────────────────────────
|
||
|
||
VALID_OUTCOMES = ("rejection", "partial_acceptance", "full_acceptance", "betterment_levy")
|
||
|
||
# ── Golden Ratios (section % of total) ─────────────────────────────
|
||
|
||
GOLDEN_RATIOS: dict[str, dict[str, tuple[int, int]]] = {
|
||
"rejection": {"background": (15, 25), "claims": (30, 40), "discussion": (37, 50), "summary": (2, 9)},
|
||
"full_acceptance": {"background": (30, 40), "claims": (20, 30), "discussion": (35, 45), "summary": (3, 5)},
|
||
"partial_acceptance": {"background": (25, 35), "claims": (25, 30), "discussion": (40, 47), "summary": (2, 3)},
|
||
"betterment_levy": {"background": (6, 18), "claims": (13, 25), "discussion": (32, 48), "summary": (3, 4)},
|
||
}
|
||
|
||
# ── Paragraph length guidance (word counts) ────────────────────────
|
||
|
||
PARAGRAPH_LENGTHS = {
|
||
"claims": (40, 60),
|
||
"discussion_regular": (40, 80),
|
||
"discussion_with_citation": (200, 600),
|
||
"discussion_average": (80, 120),
|
||
}
|
||
|
||
# ── Transition phrases ─────────────────────────────────────────────
|
||
|
||
TRANSITION_PHRASES = [
|
||
# From Hecht (rejection)
|
||
{"phrase": "ועל מנת לא לצאת בחסר", "context": "פתיחת obiter dicta", "outcome": None},
|
||
{"phrase": "נציין כי טענות אלו נטענו בלשון רפה", "context": "הכרה בטענות חלשות", "outcome": None},
|
||
{"phrase": "עינינו הרואות", "context": "סיכום אחרי ציטוט ארוך", "outcome": None},
|
||
{"phrase": "נוסיף.", "context": "מעבר חד (מילה אחת)", "outcome": None},
|
||
{"phrase": "אם כך, לעת הזו", "context": "מסקנה מציטוטים", "outcome": None},
|
||
{"phrase": "למיטב הבנתנו", "context": "עמדה זהירה", "outcome": None},
|
||
{"phrase": "נשלים ונציין", "context": "נקודה אחרונה לפני סיכום", "outcome": None},
|
||
# From Beit HaKerem (partial acceptance)
|
||
{"phrase": "הדברים משליכים על שיקול הדעת ב...", "context": "קישור ממצא למסקנה", "outcome": "partial_acceptance"},
|
||
{"phrase": "רוצה לומר כי", "context": "הסבר חלופי", "outcome": None},
|
||
{"phrase": "נוצר מצב בו", "context": "הצגת בעיה", "outcome": None},
|
||
{"phrase": "לכך נוסיף כי", "context": "הוספת נדבך", "outcome": None},
|
||
{"phrase": "יש אולי להצר על כך ש...", "context": "ביקורת עדינה", "outcome": None},
|
||
{"phrase": "עם ההבנה לטענה זו של העוררים, אין בידנו לקבלה", "context": "acknowledge-reject מרוכך", "outcome": None},
|
||
]
|
||
|
||
# ── Opening strategies by outcome ──────────────────────────────────
|
||
|
||
OPENING_STRATEGIES = {
|
||
"rejection": {
|
||
"style": "broad_contextual",
|
||
"paragraphs": (5, 8),
|
||
"description": "פתיחה רחבה — הקשר תכנוני כללי, רקע לפני צלילה לטענות",
|
||
},
|
||
"full_acceptance": {
|
||
"style": "direct_conclusion",
|
||
"paragraphs": (1, 2),
|
||
"description": "פתיחה ישירה — ישר למסקנה, תמציתית",
|
||
},
|
||
"partial_acceptance": {
|
||
"style": "tension_mapping",
|
||
"paragraphs": (3, 6),
|
||
"description": (
|
||
"מיפוי מתחים — 1-2 פסקאות על ערך התכנון, "
|
||
"אחר כך 'בערר דנן עולות שאלות כיצד והאם...' "
|
||
"עם רשימת 4-6 נקודות מתח בבולטים, "
|
||
"ואז 'כל הנקודות לעיל עומדות לפנינו...' → מעבר לניתוח"
|
||
),
|
||
},
|
||
"betterment_levy": {
|
||
"style": "direct_factual",
|
||
"paragraphs": (1, 3),
|
||
"description": (
|
||
"פתיחה ישירה ועובדתית: 'בפנינו ערר על דרישת תשלום היטל השבחה מיום [תאריך] "
|
||
"בסך של [סכום] ₪' → רקע קצר (נכס, תכנית משביחה, מימוש) → "
|
||
"תמצית טענות הצדדים (עוררים + משיבה בנפרד). "
|
||
"אין הקשר תכנוני רחב. הפתיחה = עובדות בלבד."
|
||
),
|
||
},
|
||
}
|
||
|
||
# ── Summary strategies by outcome ──────────────────────────────────
|
||
|
||
SUMMARY_STRATEGIES = {
|
||
"rejection": {
|
||
"heading": "סיכום",
|
||
"format": "numbered_hebrew_with_warm_closing",
|
||
"description": "אותיות עבריות (א-ו) עם פירוט נימוקים + פסקת סיום חמה",
|
||
},
|
||
"full_acceptance": {
|
||
"heading": "סוף דבר",
|
||
"format": "prose_paragraphs",
|
||
"description": "פרוזה (3-5 פסקאות), ללא פסקה חמה",
|
||
},
|
||
"partial_acceptance": {
|
||
"heading": "סוף דבר",
|
||
"format": "ultra_minimal_operative",
|
||
"description": (
|
||
"אולטרה-מינימלי: 2-3 הוראות אופרטיביות בלבד. "
|
||
"אפס חזרה על נימוקים. אפס הוצאות. אפס סיום חם. "
|
||
"כל ההנמקה כבר בדיון — הסיכום = רק מה מתקבל, מה נדחה, ותנאים"
|
||
),
|
||
},
|
||
"betterment_levy": {
|
||
"heading": "various",
|
||
"format": "dry_operative",
|
||
"description": (
|
||
"סיום יבש ואופרטיבי. כותרת משתנה: 'סוף דבר' / 'לאור כל האמור לעיל' / ללא כותרת. "
|
||
"תוכן: 'הערר נדחה/מתקבל' + הוצאות ('כל צד ישא בהוצאותיו' / חיוב בסכום). "
|
||
"אם מתקבל: הוראות אופרטיביות (החזר, שומה מתוקנת, תנאים). "
|
||
"חתימה: 'ניתנה פה אחד היום, [תאריך עברי], [תאריך לועזי].' "
|
||
"לעיתים: 'התיק ייסגר.' / 'עומדת זכות ערר כדין.' "
|
||
"אין פסקה חמה. אין חזרה על נימוקים."
|
||
),
|
||
},
|
||
}
|
||
|
||
# ── Discussion structure rules ─────────────────────────────────────
|
||
|
||
DISCUSSION_RULES: dict[str, list[str]] = {
|
||
"universal": [
|
||
"פרק הדיון = אסה רציפה. אין כותרות משנה (H2/H3). מעברים רק עם ביטויי מעבר טקסטואליים.",
|
||
"חריג יחיד לכותרות משנה: נושאים נפרדים לחלוטין (למשל: הקלה בגובה + התייחסות לטענות נוספות).",
|
||
"טווח אורך סעיפים: 20 עד 600+ מילים. סעיף עם ציטוט מקיף = בלוק אחד שלם, לא שבירה לסעיפים קצרים.",
|
||
],
|
||
"rejection": [
|
||
"מבנה עיגולים קונצנטריים: שכבות הגנה — סף (ס' 152) → מריט → obiter dicta.",
|
||
"שאלת הסף (ס' 152) = כלי אסטרטגי, לא חובה. משתמשים בה כשהיא חזקה.",
|
||
],
|
||
"partial_acceptance": [
|
||
"מבנה: מיפוי מתחים → ניתוח נושא-נושא → הוראות אופרטיביות.",
|
||
"שאלת הסף (ס' 152) — בדרך כלל מדלגים. כשיש שאלות מהותיות חזקות (חניה, שימור, קווי בניין), דפנה מעדיפה דיון בגוף העניין.",
|
||
"דפוס 'בית בודד': כשתמ\"א 38 חלה על בית בודד, אינטרס החיזוק מוחלש → שיקול דעת זהיר יותר.",
|
||
"דפוס 'תכנית אב כמגן': כשקיימת תכנית אב → לצטט אותה → ההיתר 'משתלב עם ראיה כללית'.",
|
||
],
|
||
"full_acceptance": [
|
||
"מבנה ישיר: נקודות עיקריות → ניתוח → מסקנה.",
|
||
],
|
||
"betterment_levy": [
|
||
"פתיחת דיון: מסקנה מוקדמת ('לאחר שבחנו... מצאנו כי דין הערר להידחות/להתקבל').",
|
||
"תקן ביקורת: ציון רף ההתערבות בשומה מכרעת (בר\"ם 3644/13 גלר) — אבחנה בין שמאי למשפטי.",
|
||
"הצגת הלכה פסוקה: ציטוט ארוך מפס\"ד מרכזי → 'ברוח הדברים לעיל נבחן את טענות הצדדים'.",
|
||
"טיפול שיטתי: כל טענה/סוגיה בנפרד → ניתוח → מסקנת ביניים.",
|
||
"ביטויים: 'אין בידינו לקבל', 'לא מצאנו מקום להתערב', 'קביעה נכונה שאין מקום להתערב בה'.",
|
||
"'על מנת לא לצאת בחסר' — לנקודות obiter dicta בסוף הדיון.",
|
||
],
|
||
}
|
||
|
||
# ── Citation technique ─────────────────────────────────────────────
|
||
|
||
CITATION_GUIDANCE = (
|
||
"העדפה לציטוט דרך 'החלטה מרכזת' — החלטה אחת שכבר ריכזה את הפסיקה הרלוונטית. "
|
||
"דפוס: 'נפנה לניתוח המקיף שערכה ועדת הערר במסגרת ערר [שם]...' → בלוק ציטוט 200-500 מילים → 'אם כך, לעת הזו...'. "
|
||
"גמישות: כשיש שאלות משפטיות מרובות או חדשניות, כל נושא עשוי לדרוש תקדים נפרד. "
|
||
"בנושאי חניה/תשתיות — צלילה לעומק: ציטוט ישיר של הוראות תכנית (400+ מילים עם ניתוח שזור)."
|
||
)
|
||
|
||
# ── Decision templates by outcome ──────────────────────────────────
|
||
|
||
_HEADER = """# החלטה
|
||
|
||
## בפני: דפנה תמיר, יו"ר ועדת הערר מחוז ירושלים
|
||
|
||
**ערר מספר:** {case_number}
|
||
**נושא:** {subject}
|
||
**העוררים:** {appellants}
|
||
**המשיבים:** {respondents}
|
||
**כתובת הנכס:** {property_address}
|
||
|
||
---
|
||
"""
|
||
|
||
DECISION_TEMPLATES: dict[str, str] = {
|
||
"rejection": _HEADER + """## א. רקע עובדתי
|
||
<!-- {ratios_background} -->
|
||
|
||
[תיאור הרקע העובדתי של הערר]
|
||
|
||
## ב. טענות העוררים
|
||
<!-- {ratios_claims} -->
|
||
|
||
[סיכום טענות העוררים]
|
||
|
||
## ג. טענות המשיבים
|
||
|
||
[סיכום טענות המשיבים]
|
||
|
||
## ד. דיון
|
||
<!-- אסה רציפה, ללא כותרות משנה. מבנה עיגולים קונצנטריים: סף → מריט → obiter -->
|
||
<!-- פתיחה רחבה: 5-8 פסקאות הקשר תכנוני -->
|
||
<!-- {ratios_discussion} -->
|
||
|
||
[ניתוח משפטי — אסה רציפה]
|
||
|
||
## ה. סיכום
|
||
<!-- אותיות עבריות (א-ו) + פסקת סיום חמה -->
|
||
<!-- {ratios_summary} -->
|
||
|
||
[סיכום בפורמט רשימה ממוספרת + סיום חם]
|
||
|
||
---
|
||
ניתנה היום, {date}
|
||
דפנה תמיר, יו"ר ועדת הערר
|
||
""",
|
||
|
||
"partial_acceptance": _HEADER + """## א. רקע עובדתי
|
||
<!-- {ratios_background} -->
|
||
|
||
[תיאור הרקע העובדתי של הערר]
|
||
|
||
## ב. טענות העוררים
|
||
<!-- {ratios_claims} -->
|
||
|
||
[סיכום טענות העוררים]
|
||
|
||
## ג. טענות המשיבים
|
||
|
||
[סיכום טענות המשיבים]
|
||
|
||
## ד. דיון
|
||
<!-- אסה רציפה, ללא כותרות משנה. מבנה: מיפוי מתחים → ניתוח נושא-נושא -->
|
||
<!-- פתיחת מיפוי מתחים: 1-2 פסקאות על ערך התכנון, רשימת מתחים, מעבר לניתוח -->
|
||
<!-- {ratios_discussion} -->
|
||
|
||
[ניתוח משפטי — אסה רציפה]
|
||
|
||
## ה. סוף דבר
|
||
<!-- אולטרה-מינימלי: 2-3 הוראות אופרטיביות בלבד. אפס נימוקים. אפס הוצאות. -->
|
||
<!-- {ratios_summary} -->
|
||
|
||
[הוראות אופרטיביות בלבד: מה מתקבל, מה נדחה, תנאים]
|
||
|
||
---
|
||
ניתנה היום, {date}
|
||
דפנה תמיר, יו"ר ועדת הערר
|
||
""",
|
||
|
||
"full_acceptance": _HEADER + """## א. רקע עובדתי
|
||
<!-- {ratios_background} -->
|
||
|
||
[תיאור הרקע העובדתי של הערר]
|
||
|
||
## ב. טענות העוררים
|
||
<!-- {ratios_claims} -->
|
||
|
||
[סיכום טענות העוררים]
|
||
|
||
## ג. טענות המשיבים
|
||
|
||
[סיכום טענות המשיבים]
|
||
|
||
## ד. דיון
|
||
<!-- אסה רציפה, ללא כותרות משנה. מבנה ישיר -->
|
||
<!-- פתיחה ישירה: 1-2 פסקאות, ישר למסקנה -->
|
||
<!-- {ratios_discussion} -->
|
||
|
||
[ניתוח משפטי — אסה רציפה]
|
||
|
||
## ה. סוף דבר
|
||
<!-- פרוזה: 3-5 פסקאות, ללא פסקה חמה -->
|
||
<!-- {ratios_summary} -->
|
||
|
||
[סוף דבר בפרוזה]
|
||
|
||
---
|
||
ניתנה היום, {date}
|
||
דפנה תמיר, יו"ר ועדת הערר
|
||
""",
|
||
|
||
"betterment_levy": _HEADER + """## א. רקע עובדתי
|
||
<!-- {ratios_background} -->
|
||
|
||
[תיאור הרקע העובדתי של הערר]
|
||
|
||
## ב. טענות העוררים
|
||
<!-- {ratios_claims} -->
|
||
|
||
[סיכום טענות העוררים]
|
||
|
||
## ג. טענות המשיבים
|
||
|
||
[סיכום טענות המשיבים]
|
||
|
||
## ד. דיון
|
||
<!-- אסה רציפה, ללא כותרות משנה. מבנה ישיר עם מסקנה מוקדמת -->
|
||
<!-- {ratios_discussion} -->
|
||
|
||
[ניתוח משפטי — אסה רציפה]
|
||
|
||
## ה. סיכום
|
||
<!-- אותיות עבריות, סיום יבש -->
|
||
<!-- {ratios_summary} -->
|
||
|
||
[סיכום בפורמט רשימה ממוספרת, סיום יבש]
|
||
|
||
---
|
||
ניתנה היום, {date}
|
||
דפנה תמיר, יו"ר ועדת הערר
|
||
""",
|
||
}
|
||
|
||
|
||
# ── Helper function ────────────────────────────────────────────────
|
||
|
||
def get_lessons_for_outcome(outcome: str) -> dict:
|
||
"""Assemble all relevant lessons for a given expected outcome."""
|
||
if outcome not in VALID_OUTCOMES:
|
||
return {"error": f"outcome must be one of: {', '.join(VALID_OUTCOMES)}"}
|
||
|
||
ratios = GOLDEN_RATIOS[outcome]
|
||
rules = DISCUSSION_RULES.get("universal", []) + DISCUSSION_RULES.get(outcome, [])
|
||
|
||
# Filter transition phrases: universal + outcome-specific
|
||
phrases = [
|
||
p for p in TRANSITION_PHRASES
|
||
if p["outcome"] is None or p["outcome"] == outcome
|
||
]
|
||
|
||
return {
|
||
"outcome": outcome,
|
||
"golden_ratios": {
|
||
k: f"{v[0]}-{v[1]}%" for k, v in ratios.items()
|
||
},
|
||
"opening_strategy": OPENING_STRATEGIES[outcome],
|
||
"summary_strategy": SUMMARY_STRATEGIES[outcome],
|
||
"discussion_rules": rules,
|
||
"citation_guidance": CITATION_GUIDANCE,
|
||
"transition_phrases": [
|
||
{"phrase": p["phrase"], "context": p["context"]}
|
||
for p in phrases
|
||
],
|
||
"paragraph_lengths": {
|
||
k: f"{v[0]}-{v[1]} מילים" for k, v in PARAGRAPH_LENGTHS.items()
|
||
},
|
||
}
|
||
|
||
|
||
def format_ratios_comment(outcome: str, section: str) -> str:
|
||
"""Format golden ratio as an HTML comment for templates."""
|
||
ratios = GOLDEN_RATIOS.get(outcome, {})
|
||
if section in ratios:
|
||
lo, hi = ratios[section]
|
||
return f"יעד: {lo}-{hi}% מסך ההחלטה"
|
||
return ""
|
||
|
||
|
||
# ── Content checklists by appeal subtype ──────────────────────────
|
||
# Based on systematic analysis of 24 decisions from Dafna's corpus.
|
||
# See: docs/corpus-analysis.md
|
||
|
||
CONTENT_CHECKLISTS: dict[str, str] = {
|
||
"licensing_substantive": """## צ'קליסט תוכן — ערר רישוי מהותי (חובה)
|
||
הדיון חייב לכלול את הנושאים הרלוונטיים מהרשימה הבאה.
|
||
**אל תדלג על נושא שרלוונטי לתיק — בדוק כל סעיף.**
|
||
|
||
### א. הקשר תכנוני רחב (חובה בכל ערר מהותי)
|
||
- תכניות חלות — ציין את התכניות הרלוונטיות ברמה מקומית, מחוזית וארצית (לפי הצורך)
|
||
- ייעוד הקרקע — מה הייעוד בתכנית? מה השימושים המותרים?
|
||
- אופי הסביבה — מרקם בנוי, צפיפות, אופי שכונה/ישוב
|
||
- *דוגמה*: בערר פרומר — 12 סעיפים על MI/200, תמ"א 35, תמ"מ 30/1
|
||
|
||
### ב. ניתוח הוראות תכנית (כשיש שאלה של התאמה/סטייה)
|
||
- ציטוט ישיר מהוראות התכנית הרלוונטיות (200-600 מילים לכל ציטוט)
|
||
- פרשנות — מה תכלית ההוראה?
|
||
- יישום — האם הבקשה תואמת או סוטה?
|
||
- *דוגמה*: בערר לבנון — ניתוח חתכים של נספח בינוי מול הבקשה
|
||
|
||
### ג. חניה (כשרלוונטי — מופיע ב-8 מתוך 24 החלטות)
|
||
- הוראות תכנית + נספח תנועה (ציטוט ישיר)
|
||
- חישוב מקומות חניה נדרשים vs. מסופקים
|
||
- חלופות: קרן חניה, חפיפת שימושים, קרבה לתח"צ
|
||
- *דוגמה*: בערר בית הכרם — 8 סעיפים, 400+ מילים מהוראות תכנית 5166ב
|
||
|
||
### ד. קווי בניין ומרווחים (כשרלוונטי)
|
||
- הוראת תכנית על מרווחים
|
||
- סטייה ניכרת? — תקנה 2(19) / הלכת בן-יקר-גת
|
||
- הצדקה + מידתיות — פגיעה בשכנים?
|
||
|
||
### ה. גובה וקומות (כשרלוונטי)
|
||
- הוראת תכנית + נספח בינוי (חתכים)
|
||
- מטרת ההגבלה — למה יש הגבלת גובה כאן?
|
||
- סטייה ניכרת — תקנה 2(10) / 2(8)
|
||
|
||
### ו. פגיעה בשכנים (כשרלוונטי)
|
||
- ממצאי סיור באתר
|
||
- השפעה: צל, פרטיות, רעש, נוף
|
||
- מידתיות — האם הפגיעה סבירה?
|
||
|
||
### ז. שימוש חורג (כשרלוונטי)
|
||
- מה השימוש המותר בתכנית? מה השימוש המבוקש?
|
||
- "מבחן ההתאמה" — האם השימוש מתאים למיקום?
|
||
- תנאים ומגבלות
|
||
""",
|
||
|
||
"licensing_threshold": """## צ'קליסט תוכן — ערר רישוי סף/סמכות
|
||
הערר עוסק בשאלות סף — אין צורך בדיון תכנוני מקיף.
|
||
|
||
### א. שאלת הסמכות
|
||
- סעיפי חוק רלוונטיים (ס' 12ב, 152, וכו')
|
||
- פסיקה על גבולות הסמכות
|
||
|
||
### ב. זכות ערר
|
||
- מי רשאי לערור? באיזה מסלול?
|
||
- הלכת שפר (עע"מ 317/10) — כשרלוונטית
|
||
|
||
### ג. שיהוי (אם רלוונטי)
|
||
""",
|
||
|
||
"licensing_property": """## צ'קליסט תוכן — ערר רישוי קנייני
|
||
הערר עוסק בעיקר בשאלת תימוכין קנייניים — דיון משפטי.
|
||
|
||
### א. מסגרת נורמטיבית
|
||
- הלכת עייזן, בני אליעזר, רוזן — "היתכנות קניינית"
|
||
- ס' 71ב לחוק המקרקעין
|
||
|
||
### ב. בחינת הראיות
|
||
- הסכמות, רישום, היסטוריית בנייה
|
||
- חלוקה דה-פקטו ארוכת שנים
|
||
|
||
### ג. הפרדה בין קניין לתכנון
|
||
- גוף תכנוני אינו מכריע בסכסוכי קניין
|
||
- "היתכנות קניינית" ≠ הוכחת בעלות
|
||
|
||
### ד. שאלות תכנוניות (אם רלוונטיות)
|
||
- אם הערר עולה גם שאלות תכנוניות — דון בהן בנפרד
|
||
""",
|
||
|
||
"tama38": """## צ'קליסט תוכן — ערר תמ"א 38
|
||
הדיון חייב לאזן בין אינטרס ציבורי לפגיעה בשכנים.
|
||
|
||
### א. אינטרס ציבורי — חיזוק/התחדשות
|
||
- עוצמת האינטרס — בניין גדול vs. בית בודד
|
||
- "בית בודד" מחליש את אינטרס החיזוק
|
||
- תרומה לרקמה העירונית
|
||
|
||
### ב. תכנית אב / מדיניות אזורית
|
||
- האם יש תכנית אב? מדיניות 16000?
|
||
- התאמה לראיה כללית vs. אד-הוק
|
||
|
||
### ג. ניתוח השוואתי
|
||
- זכויות לפי תכנית קיימת vs. מבוקש לפי תמ"א 38
|
||
- שטחים, קומות, קווי בניין — טבלת השוואה
|
||
|
||
### ד. שימור (כשרלוונטי)
|
||
- חוות דעת אגף שימור
|
||
- השפעה על מיקום/צורת הבניין
|
||
|
||
### ה. חניה (כמעט תמיד רלוונטי)
|
||
- הוראות תכנית + ס' 17 לתמ"א 38
|
||
- פטורים — קרבה לתח"צ, קרן חניה, תכנית אב
|
||
- ניתוח מפורט של חלופות
|
||
|
||
### ו. פגיעה בשכנים
|
||
- ממצאי סיור
|
||
- צל, פרטיות, קרבה
|
||
- מידתיות — מה הפגיעה ביחס לתועלת?
|
||
|
||
### ז. מטרדי בנייה
|
||
- "מטרד בנייה אינו עילה לסירוב" — אך תנאים נדרשים
|
||
- תכנית ארגון אתר
|
||
""",
|
||
|
||
"betterment_levy": """## צ'קליסט תוכן — ערר היטל השבחה
|
||
מבוסס על ניתוח 26 החלטות של דפנה תמיר (קורפוס CMPA, אפריל 2026).
|
||
|
||
### א. תקן ביקורת (חובה בפתיחת הדיון)
|
||
- ציין את רף ההתערבות: "ועדת הערר תיטה לאמץ את חוות דעתו של השמאי..."
|
||
- אבחנה: התערבות מצומצמת בעניינים שמאיים-מקצועיים, התערבות רחבה בעניינים משפטיים
|
||
- הפניה ל-בר"ם 3644/13 גלר או פסיקה דומה
|
||
|
||
### ב. המסגרת הנורמטיבית
|
||
- התוספת השלישית לחוק התכנון והבנייה
|
||
- סעיפי הפטור הרלוונטיים (ס' 19(ג), ס' 19(ב) וכו')
|
||
- אירוע מס — מה יצר את ההשבחה? (תכנית, היתר, מכר)
|
||
- מועד המימוש ומועד הקובע
|
||
|
||
### ג. שומה ומתודולוגיה שמאית
|
||
- שיטת השומה (שומה מכרעת / שומה מוסכמת / שמאי מייעץ)
|
||
- מבחן השימוש הטוב והיעיל (highest and best use) — מצב קודם ומצב חדש
|
||
- זכויות בנייה — לפני ואחרי (אחוזי בנייה, שטחים עיקריים, תמהיל שימושים)
|
||
- שווי מקרקעין — מצב קודם ומצב חדש (שיטת השוואה / יחידות תועלת)
|
||
- עלויות עודפות (חניה, מטלות ציבוריות, תשתיות)
|
||
- מקדמי זמינות, שיעורי הפקעה
|
||
|
||
### ד. שאלות משפטיות (לפי רלוונטיות)
|
||
- פטורים — דירת מגורים (ס' 19(ג)(1)), שטח עד 140 מ"ר, תא משפחתי
|
||
- מועד מימוש — זיכרון דברים vs הסכם מכר, העברת זכויות
|
||
- זהות החייב — בעלים, חוכר, יזם, חברה בבעלות יזם
|
||
- מקרקעי ישראל — הסדרים מיוחדים (ס' 21 לתוספת השלישית)
|
||
- שומות מוסכמות — תוקף, משמעות, "בלתי נצפה מראש"
|
||
- פרשנות תכניות — ייעוד, שימושים מותרים, מדיניות ועדה מקומית
|
||
|
||
### ה. ניתוח שמאי (כשיש שומה מכרעת)
|
||
- האם השומה מבוססת על מסד עובדתי הולם?
|
||
- האם השיטה השמאית מקובלת?
|
||
- האם ההנחות סבירות והגיוניות?
|
||
- טעות מהותית / דופי חמור?
|
||
- פגם מינהלי (ניגוד עניינים, משוא פנים)?
|
||
""",
|
||
}
|
||
|
||
|
||
def get_content_checklist(
|
||
appeal_type: str = "",
|
||
subject: str = "",
|
||
subject_categories: list[str] | None = None,
|
||
) -> str:
|
||
"""Return the appropriate content checklist based on case characteristics.
|
||
|
||
Determines the subtype from case metadata:
|
||
- TAMA 38 cases → tama38 checklist
|
||
- Betterment levy (8xxx) → betterment_levy checklist
|
||
- Property-only cases → licensing_property checklist
|
||
- Threshold/jurisdiction cases → licensing_threshold checklist
|
||
- All other licensing → licensing_substantive checklist
|
||
"""
|
||
cats = subject_categories or []
|
||
subject_lower = subject.lower() if subject else ""
|
||
appeal_lower = appeal_type.lower() if appeal_type else ""
|
||
|
||
# TAMA 38
|
||
if any(
|
||
kw in subject_lower
|
||
for kw in ["תמ\"א 38", "תמא 38", "תמ\"א38", "חיזוק", "tama"]
|
||
) or "תמ\"א 38" in cats:
|
||
return CONTENT_CHECKLISTS["tama38"]
|
||
|
||
# Betterment levy
|
||
if "היטל השבחה" in appeal_lower or "betterment" in appeal_lower or any(
|
||
"היטל" in c for c in cats
|
||
):
|
||
return CONTENT_CHECKLISTS["betterment_levy"]
|
||
|
||
# Property-focused (תימוכין קנייניים)
|
||
if any(
|
||
kw in subject_lower
|
||
for kw in ["תימוכין", "קנייני", "בעלות", "הסכמת דיירים"]
|
||
):
|
||
return CONTENT_CHECKLISTS["licensing_property"]
|
||
|
||
# Threshold/jurisdiction
|
||
if any(
|
||
kw in subject_lower
|
||
for kw in ["סמכות", "סף", "סילוק על הסף", "זכות ערר"]
|
||
):
|
||
return CONTENT_CHECKLISTS["licensing_threshold"]
|
||
|
||
# Default: substantive licensing
|
||
return CONTENT_CHECKLISTS["licensing_substantive"]
|
||
|
||
|
||
# ── Methodology guidance (condensed from decision-methodology.md) ──
|
||
|
||
_METHODOLOGY_CORE = """## מתודולוגיה אנליטית — עקרונות מנחים לכתיבת הדיון
|
||
|
||
### מבנה סילוגיסטי לכל סוגיה
|
||
כל סוגיה נבנית כסילוגיזם: (1) הנחה עליונה = הכלל (הוראת תכנית, חוק, הלכה); (2) הנחה תחתונה = העובדות הספציפיות; (3) מסקנה. אם לא ניתן לזהות את הכלל — ההנמקה אינה מספקת. אם לא ניתן לזהות כיצד העובדות מקיימות את הכלל — ההנמקה קריפטית.
|
||
|
||
### התחל מלשון הטקסט
|
||
כשהמקרה נשלט על ידי הוראת תכנית או סעיף חוק — פתח בציטוט ההוראה. פרש מילים במשמעותן הרגילה. תן תוקף לכל מילה. אם יש עמימות — השתמש בכלי פרשנות.
|
||
|
||
### הפרד ממצא עובדתי ממסקנה משפטית
|
||
"הבניה במרחק 1.5 מטרים מגבול המגרש" = ממצא עובדתי. "חריגה זו עולה כדי סטייה ניכרת" = מסקנה משפטית. אל תערבב.
|
||
|
||
### CREAC לכל סוגיה
|
||
1. מסקנה — פתח בתשובה ("הבקשה אינה תואמת...")
|
||
2. כלל — ציטוט ההוראה
|
||
3. הרחבה — תקדים רלוונטי אחד (אם נדרש)
|
||
4. יישום — החלת הכלל על העובדות (לב ההנמקה)
|
||
5. מסקנה חוזרת — סגירה תמציתית
|
||
|
||
### Steel-Man — הצג טענה בחוזקתה לפני דחייה
|
||
לפני שדוחים טענה — הצג אותה בגרסה החזקה ביותר: "אמנם צודק העורר כי [נקודה לטובתו], אולם [הנימוק לדחייה]." טענת קש קלה להפריך אך לא משכנעת.
|
||
|
||
### טכניקת סנדוויץ' לציטוטים
|
||
כל ציטוט עטוף: משפט הקדמה (מודיע על התוכן) → ציטוט → ניתוח (מסביר כיצד רלוונטי למקרה). אל תניח שהקורא יקרא ציטוט ארוך ויפיק ממנו מסקנות בעצמו.
|
||
|
||
### נתונים, לא תיאורים
|
||
"הבקשה חורגת ב-1.5 מטרים מקו הבניין" — לא "הבקשה חורגת באופן משמעותי." מספרים, מידות, אחוזים.
|
||
|
||
### כנות לגבי קושי
|
||
כשהמקרה קשה — אמור זאת: "הדבר אינו נקי מספקות, אולם..." אל תעמיד פנים שמקרה קשה הוא קל.
|
||
|
||
### כל מילה עובדת
|
||
"לאחר ששקלנו את כלל השיקולים" — ריק, מחק. מבחן: אם מוחקים את המשפט וההחלטה לא מאבדת מידע — המשפט מיותר.
|
||
|
||
### איזון ומידתיות (כשהכלל לא נותן תשובה חד-משמעית)
|
||
כשנדרש איזון:
|
||
1. זהה אינטרסים קונקרטיים (לא "אינטרס הציבור" אלא "שמירה על אופי מגורים צמודי קרקע")
|
||
2. בחן השלכות לכל כיוון: מה קורה אם מקבלים? אם דוחים?
|
||
3. שקול השלכות מערכתיות: מה הסיגנל שנשלח למערכת?
|
||
4. ציין מה מכריע את הכף ולמה
|
||
כשמטילים מגבלה/תנאי — מבחן מידתיות: (1) תכלית ראויה?; (2) אמצעי פוגע פחות?; (3) פגיעה מידתית ביחס לתועלת?
|
||
|
||
### טיפול בטענות
|
||
- ההחלטה מנתחת שאלות — לא מתווכחת עם עו"ד. מבנה: שאלה→כלל→עובדות→מסקנה
|
||
- טענות שסומנו [bundle] ב-chair_directions: קבץ ודון יחד
|
||
- טענות שסומנו [skip] ב-chair_directions: ציון קצר בלבד
|
||
- טענות ללא סימון: ענה בנפרד עם מענה מנומק
|
||
- טענה מרכזית של הצד המפסיד חייבת מענה Steel-Man
|
||
- מיקום ההתמודדות עם טענות נגדיות: באמצע הדיון בסוגיה (לא בהתחלה ולא בסוף)
|
||
"""
|
||
|
||
def get_methodology_summary() -> str:
|
||
"""Return the condensed methodology guidance — always the same, always complete.
|
||
|
||
The methodology is universal: it teaches HOW to think, not WHAT to discuss.
|
||
Case-specific content (parking, building lines, significant deviation) belongs
|
||
in the content checklists, not here.
|
||
"""
|
||
return _METHODOLOGY_CORE
|