Add full decision writing pipeline: classify, extract, brainstorm, write, QA, export

New services (11 files):
- classifier.py: auto doc-type classification + party identification (Claude Haiku)
- claims_extractor.py: claim extraction from pleadings (Claude Sonnet + regex)
- references_extractor.py: plan/case-law/legislation detection (regex)
- brainstorm.py: direction generation with 2-3 options (Claude Sonnet)
- block_writer.py: 12-block decision writer (template + Claude Sonnet/Opus)
- docx_exporter.py: DOCX export with David font, RTL, headings
- qa_validator.py: 6 QA checks with export blocking on critical failure
- learning_loop.py: draft vs final comparison + lesson extraction
- metrics.py: KPIs dashboard per case and global
- audit.py: action audit log
- cli.py: standalone CLI with 11 commands

Updated pipeline: extract → classify → chunk → embed → store → extract_references
New MCP tools: 29 total (was 16)
New DB tables: audit_log, decisions CRUD, claims CRUD
Config: Infisical support, external service allowlist

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-03 10:21:47 +00:00
parent df7cc4f5a5
commit d9e5ef0f46
21 changed files with 3957 additions and 14 deletions

View File

@@ -19,10 +19,16 @@ class CaseStatus(str, enum.Enum):
class DocType(str, enum.Enum):
APPEAL = "appeal" # כתב ערר
RESPONSE = "response" # תשובה
DECISION = "decision" # החלטה
REFERENCE = "reference" # מסמך עזר
EXHIBIT = "exhibit" # נספח
RESPONSE = "response" # תשובה / כתב תשובה
PROTOCOL = "protocol" # פרוטוקול דיון
PLAN = "plan" # תכנית (תב"ע)
PERMIT = "permit" # היתר בנייה
COURT_DECISION = "court_decision" # פסק דין / החלטת בית משפט
DECISION = "decision" # החלטת ועדה
APPRAISAL = "appraisal" # שומה / חוות דעת שמאית
OBJECTION = "objection" # התנגדות
EXHIBIT = "exhibit" # נספח / מסמך תומך
REFERENCE = "reference" # מסמך עזר אחר
class SectionType(str, enum.Enum):