feat(claims): אכלוס claims.party_name במקור + backfill — סגירת השדה-המת (#224)
עד כה claims.party_name נשאר ריק והצבירה/הכתיבה גזרו את הפרדת-המשיבים מ-source_document בזמן-ריצה (שדה-מת). עכשיו הוא מאוכלס במקור ונקרא ע"י הצרכנים. - claims_extractor.extract_and_store_claims: מחתים party_name=source_document ל-SPLIT_PARTIES (respondent/permit_applicant); single-voice נשאר ''. אותו כלל SPLIT_PARTIES של הצבירה (G2, import לא-מעגלי). - SCHEMA_V52: backfill idempotent ל-claims קיימים (רק split + party_name ריק). - argument_aggregator + block_writer._build_claims_context: קוראים claims.party_name, עם fallback ל-source_document ל-claims מדור-קודם. התנהגות זהה (party_name==source_document) — אפס-רגרסיה, אך השדה כעת מקור-האמת (G1). py_compile + טעינת-שרשרת-ייבוא נקיים. סוגר את הפתוח האחרון של #224. Invariants: G1 (אכלוס במקור, לא גזירה-בקריאה), G2 (כלל-פיצול יחיד). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -368,8 +368,15 @@ async def extract_and_store_claims(
|
||||
|
||||
# Determine claim_type from document type and title
|
||||
claim_type = _infer_claim_type(doc_type, source_name)
|
||||
# Stamp party_name at the source (#224). For a multi-litigant side
|
||||
# (respondent / permit_applicant) the brief label IS the source pleading, so
|
||||
# opposing briefs (משיבות 2-3 vs משיבים 4-6) stay distinct downstream without
|
||||
# the aggregator/block-writer having to re-derive it. SPLIT_PARTIES is the
|
||||
# single rule shared with the aggregator (G2); single-voice sides stay ''.
|
||||
from legal_mcp.services.argument_aggregator import SPLIT_PARTIES
|
||||
for c in claims:
|
||||
c["claim_type"] = claim_type
|
||||
c["party_name"] = source_name if c.get("party_role") in SPLIT_PARTIES else ""
|
||||
|
||||
stored = await db.store_claims(case_id, claims, source_document=source_name)
|
||||
# Mark this document analysed (WS2 / #201). store_claims already replaced
|
||||
|
||||
Reference in New Issue
Block a user