Update app.py
Browse files
app.py
CHANGED
@@ -13,10 +13,10 @@ class ContractAnalyzer:
|
|
13 |
|
14 |
# الكلمات المفتاحية القانونية
|
15 |
self.legal_keywords = [
|
16 |
-
"يلتزم", "يتعهد", "يحق", "لا يحق", "شرط جزائي",
|
17 |
"فسخ العقد", "إنهاء", "تعويض", "غرامة", "مدة العقد",
|
18 |
"طرف أول", "طرف ثاني", "قيمة العقد", "التزامات", "سداد",
|
19 |
-
"دفعات", "ضمان", "مخالفة", "إخلال", "قوة قاهرة"
|
20 |
]
|
21 |
|
22 |
# قالب التحليل (Prompt)
|
@@ -28,23 +28,20 @@ class ContractAnalyzer:
|
|
28 |
- الأطراف المتعاقدة: {parties}
|
29 |
- موضوع العقد: {subject}
|
30 |
|
31 |
-
2.
|
32 |
-
{clauses_analysis}
|
33 |
-
|
34 |
-
3. الالتزامات:
|
35 |
أ. التزامات الطرف الأول:
|
36 |
{party1_obligations}
|
37 |
|
38 |
ب. التزامات الطرف الثاني:
|
39 |
{party2_obligations}
|
40 |
|
41 |
-
|
42 |
{risks}
|
43 |
|
44 |
-
|
45 |
{missing_elements}
|
46 |
|
47 |
-
|
48 |
{recommendations}
|
49 |
"""
|
50 |
|
@@ -69,7 +66,7 @@ class ContractAnalyzer:
|
|
69 |
info["date"] = text[start_idx:end_idx].strip()
|
70 |
|
71 |
# البحث عن الأطراف
|
72 |
-
party_indicators = ["طرف أول", "طرف ثاني", "الطرف الأول", "الطرف الثاني"]
|
73 |
for indicator in party_indicators:
|
74 |
if indicator in text:
|
75 |
start_idx = text.find(indicator)
|
@@ -116,9 +113,9 @@ class ContractAnalyzer:
|
|
116 |
})
|
117 |
|
118 |
# تحليل الالتزامات
|
119 |
-
if "طرف أول" in sentence or "الطرف الأول" in sentence:
|
120 |
results["party1_obligations"].append(sentence.strip())
|
121 |
-
elif "طرف ثاني" in sentence or "الطرف الثاني" in sentence:
|
122 |
results["party2_obligations"].append(sentence.strip())
|
123 |
|
124 |
# تحليل المخاطر
|
@@ -141,7 +138,7 @@ class ContractAnalyzer:
|
|
141 |
date=contract_info["date"],
|
142 |
parties="\n".join(contract_info["parties"]) or "غير محدد",
|
143 |
subject=contract_info["subject"],
|
144 |
-
|
145 |
party1_obligations="\n".join([f"• {ob}" for ob in results["party1_obligations"]]) or "غير محدد",
|
146 |
party2_obligations="\n".join([f"• {ob}" for ob in results["party2_obligations"]]) or "غير محدد",
|
147 |
risks="\n".join([f"• {risk}" for risk in results["risks"]]) or "لا توجد مخاطر واضحة",
|
|
|
13 |
|
14 |
# الكلمات المفتاحية القانونية
|
15 |
self.legal_keywords = [
|
16 |
+
"يلتزم", "الزام" , "يتعهد", "يحق", "لا يحق", "شرط جزائي",
|
17 |
"فسخ العقد", "إنهاء", "تعويض", "غرامة", "مدة العقد",
|
18 |
"طرف أول", "طرف ثاني", "قيمة العقد", "التزامات", "سداد",
|
19 |
+
"دفعات", "ينكل ", "ضمان", "مخالفة", "إخلال", "قوة قاهرة"
|
20 |
]
|
21 |
|
22 |
# قالب التحليل (Prompt)
|
|
|
28 |
- الأطراف المتعاقدة: {parties}
|
29 |
- موضوع العقد: {subject}
|
30 |
|
31 |
+
2. الالتزامات:
|
|
|
|
|
|
|
32 |
أ. التزامات الطرف الأول:
|
33 |
{party1_obligations}
|
34 |
|
35 |
ب. التزامات الطرف الثاني:
|
36 |
{party2_obligations}
|
37 |
|
38 |
+
3. المخاطر المحتملة:
|
39 |
{risks}
|
40 |
|
41 |
+
4. العناصر المفقودة أو غير الواضحة:
|
42 |
{missing_elements}
|
43 |
|
44 |
+
5. توصيات قانونية:
|
45 |
{recommendations}
|
46 |
"""
|
47 |
|
|
|
66 |
info["date"] = text[start_idx:end_idx].strip()
|
67 |
|
68 |
# البحث عن الأطراف
|
69 |
+
party_indicators = ["طرف أول", "طرف ثاني", "الطرف الأول", "الطرف الثاني", "الفريق الأول", "الفريق الثاني"]
|
70 |
for indicator in party_indicators:
|
71 |
if indicator in text:
|
72 |
start_idx = text.find(indicator)
|
|
|
113 |
})
|
114 |
|
115 |
# تحليل الالتزامات
|
116 |
+
if "طرف أول" in sentence or "الطرف الأول" in sentence or "الفريق الأول" in sentence :
|
117 |
results["party1_obligations"].append(sentence.strip())
|
118 |
+
elif "طرف ثاني" in sentence or "الطرف الثاني" in sentence or "الفريق الثاني" in sentence :
|
119 |
results["party2_obligations"].append(sentence.strip())
|
120 |
|
121 |
# تحليل المخاطر
|
|
|
138 |
date=contract_info["date"],
|
139 |
parties="\n".join(contract_info["parties"]) or "غير محدد",
|
140 |
subject=contract_info["subject"],
|
141 |
+
|
142 |
party1_obligations="\n".join([f"• {ob}" for ob in results["party1_obligations"]]) or "غير محدد",
|
143 |
party2_obligations="\n".join([f"• {ob}" for ob in results["party2_obligations"]]) or "غير محدد",
|
144 |
risks="\n".join([f"• {risk}" for risk in results["risks"]]) or "لا توجد مخاطر واضحة",
|