fix(plans): שם-תצוגה פשוט ("תכנית <מספר>") במשיכת mavat, לא השם התיאורי
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 9s

במשיכה מ-mavat מופה display_name=E_NAME — השם התיאורי הארוך של התכנית
(מהות התכנית), שמקומו בשדה הייעוד ולא בשם שבלוק ט מצטט. תוקן:
display_name = "תכנית <NUMB>" (צורת-ציטוט נקייה); E_NAME נשמר כ-fallback
ל-purpose בלבד (כשאין GOALS) כדי לא לאבד את התוכן.

דוגמה (101-0721050): שם-תצוגה "תכנית 101-0721050", ייעוד="שינוי הבנוי
המאושר בתכנית 6394... מתחם הוג'יטק, גבעת רם". אומת חי.

py_compile  unit-test  e2e חי . backend-בלבד (גשר) — בלי שינוי-UI.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-17 12:32:25 +00:00
parent caee5faece
commit b8349da41d

View File

@@ -122,11 +122,17 @@ def _parse_sv4(sv4: dict, plan_number: str, source_url: str) -> dict:
pd = sv4.get("planDetails") if isinstance(sv4, dict) else None
pd = pd if isinstance(pd, dict) else {}
display_name = _s(pd.get("E_NAME"))
number = _s(pd.get("NUMB")) or plan_number
# display_name is the clean citation surface form — "תכנית <number>". mavat's
# E_NAME is a long descriptive title (the plan's substance), which belongs in
# purpose, NOT in the name block-ט cites. Keep E_NAME only as a purpose
# fallback so its content isn't lost when GOALS is empty.
e_name = _s(pd.get("E_NAME"))
display_name = f"תכנית {number}" if number else e_name
auth = _s(pd.get("AUTH"))
subtype = _s(pd.get("ENTITY_SUBTYPE"))
plan_type = f"{auth} ({subtype})" if auth and subtype else (auth or subtype)
purpose = _s(pd.get("GOALS"))
purpose = _s(pd.get("GOALS")) or e_name
gazette_date, yalkut_number, yalkut_page = "", "", ""
rows = sv4.get("rsInternet") if isinstance(sv4, dict) else None
@@ -160,7 +166,7 @@ def _parse_sv4(sv4: dict, plan_number: str, source_url: str) -> dict:
break
return {
"plan_number": _s(pd.get("NUMB")) or plan_number,
"plan_number": number,
"display_name": display_name,
"plan_type": plan_type,
"purpose": purpose,