Spaces:
Running
Running
<html dir="rtl" lang="ar"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>المنصة القانونية المتكاملة</title> | |
<link href="https://cdnjs.cloudflare.com/ajax/libs/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet"> | |
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> | |
<style> | |
@import url('https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;700&display=swap'); | |
body { | |
font-family: 'Tajawal', sans-serif; | |
background: linear-gradient(135deg, #f0f2f5 0%, #e5e7eb 100%); | |
} | |
.premium-gradient { | |
background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%); | |
} | |
.gold-accent { | |
color: #fbbf24; | |
} | |
.feature-card { | |
transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); | |
border: 1px solid rgba(229, 231, 235, 0.5); | |
background: rgba(255, 255, 255, 0.9); | |
backdrop-filter: blur(10px); | |
} | |
.feature-card:hover { | |
transform: translateY(-5px); | |
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); | |
border-color: #fbbf24; | |
} | |
.premium-button { | |
background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%); | |
transition: all 0.3s ease; | |
} | |
.premium-button:hover { | |
transform: translateY(-2px); | |
box-shadow: 0 5px 15px rgba(251, 191, 36, 0.4); | |
} | |
.custom-scroll::-webkit-scrollbar { | |
width: 6px; | |
} | |
.custom-scroll::-webkit-scrollbar-track { | |
background: #f1f1f1; | |
border-radius: 3px; | |
} | |
.custom-scroll::-webkit-scrollbar-thumb { | |
background: #fbbf24; | |
border-radius: 3px; | |
} | |
.search-container { | |
background: rgba(255, 255, 255, 0.95); | |
backdrop-filter: blur(10px); | |
} | |
.logo-img { | |
max-height: 60px; | |
width: auto; | |
filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1)); | |
} | |
.modal-container { | |
backdrop-filter: blur(5px); | |
} | |
.modal-content { | |
background: rgba(255, 255, 255, 0.98); | |
} | |
</style> | |
</head> | |
<body class="min-h-screen"> | |
<!-- الهيدر --> | |
<header class="premium-gradient text-white shadow-lg"> | |
<div class="container mx-auto px-6 py-4"> | |
<nav class="flex justify-between items-center"> | |
<div class="flex items-center gap-4"> | |
<img src="https://ufastpro.com/wp-content/uploads/2025/01/مستشارك__3_-removebg-preview.png" alt="شعار المنصة" class="logo-img"> | |
<div> | |
<h1 class="text-2xl font-bold"></h1> | |
<p class="text-sm text-gray-300"></p> | |
</div> | |
</div> | |
<div class="flex gap-6 items-center"> | |
<a href="https://ufastpro.com/speedy-chat/" class="text-white hover:text-yellow-300 transition-colors">اتكلم مع سبيدي</a> | |
<button onclick="showLegalChat()" class="premium-button text-gray-900 px-6 py-2 rounded-lg font-bold hover:shadow-xl"> | |
اسأل سؤال قانوني | |
</button> | |
</div> | |
</nav> | |
</div> | |
</header> | |
<main class="container mx-auto px-6 py-12"> | |
<!-- قسم البحث الرئيسي --> | |
<div class="search-container rounded-3xl shadow-2xl p-8 mb-12 border-t-4 border-yellow-400"> | |
<div class="max-w-3xl mx-auto"> | |
<h2 class="text-3xl font-bold text-center mb-8 text-gray-800">البحث في التشريعات والأحكام القضائية</h2> | |
<div class="flex gap-4"> | |
<div class="flex-grow relative"> | |
<i class="fas fa-search absolute right-4 top-4 text-gray-400"></i> | |
<input type="text" | |
id="searchInput" | |
class="w-full p-4 pr-12 border-2 border-gray-200 rounded-xl focus:border-yellow-400 focus:ring-2 focus:ring-yellow-400 focus:ring-opacity-50 outline-none transition-all" | |
placeholder="ابحث في القوانين، الأحكام، والمواد القانونية..."> | |
</div> | |
<button onclick="handleSearch()" class="premium-button px-8 py-3 rounded-xl font-bold flex items-center gap-2"> | |
<i class="fas fa-search"></i> | |
بحث | |
</button> | |
</div> | |
<div id="searchResults" class="mt-4 custom-scroll max-h-96"></div> | |
</div> | |
</div> | |
<!-- الخدمات الرئيسية --> | |
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-8"> | |
<!-- تحليل القضايا --> | |
<div class="feature-card rounded-2xl p-8"> | |
<div class="flex items-center gap-4 mb-6"> | |
<div class="w-12 h-12 rounded-full premium-gradient flex items-center justify-center"> | |
<i class="fas fa-gavel gold-accent text-xl"></i> | |
</div> | |
<h3 class="text-xl font-bold">تحليل القضايا</h3> | |
</div> | |
<p class="text-gray-600 mb-6 leading-relaxed">تحليل متقدم للقضايا باستخدام أحدث التقنيات والذكاء الاصطناعي مع مراعاة القوانين المصرية</p> | |
<button onclick="showCaseAnalysis()" class="w-full premium-button py-3 rounded-xl font-bold text-gray-900"> | |
تحليل قضية جديدة | |
</button> | |
</div> | |
<!-- اسأل الموضوع --> | |
<div class="feature-card rounded-2xl p-8"> | |
<div class="flex items-center gap-4 mb-6"> | |
<div class="w-12 h-12 rounded-full premium-gradient flex items-center justify-center"> | |
<i class="fas fa-comments gold-accent text-xl"></i> | |
</div> | |
<h3 class="text-xl font-bold">اسأل الموضوع</h3> | |
</div> | |
<p class="text-gray-600 mb-6 leading-relaxed">اطرح سؤالك حول أي موضوع قانوني وسنقوم بتحليله والإجابة عليه بدقة</p> | |
<button onclick="showAskTopic()" class="w-full premium-button py-3 rounded-xl font-bold text-gray-900"> | |
اطرح سؤالك | |
</button> | |
</div> | |
<!-- كتابة العقود --> | |
<div class="feature-card rounded-2xl p-8"> | |
<div class="flex items-center gap-4 mb-6"> | |
<div class="w-12 h-12 rounded-full premium-gradient flex items-center justify-center"> | |
<i class="fas fa-file-contract gold-accent text-xl"></i> | |
</div> | |
<h3 class="text-xl font-bold">كتابة العقود والوثائق</h3> | |
</div> | |
<p class="text-gray-600 mb-6 leading-relaxed">كتابة العقود والمواثيق والاوراق الهامة اصبح سهل الان مع سبيدي</p> | |
<a href="https://ufastpro.com/okod/" class="block w-full premium-button py-3 rounded-xl font-bold text-center text-gray-900"> | |
خلي سبيدي يكتبلك وثيقتك او عقدك | |
</a> | |
</div> | |
</div> | |
</main> | |
<!-- نافذة الدردشة القانونية --> | |
<div id="legalChatModal" class="hidden fixed inset-0 bg-black bg-opacity-30 modal-container flex items-center justify-center z-50"> | |
<div class="modal-content rounded-2xl p-8 w-full max-w-2xl mx-4"> | |
<div class="flex justify-between items-center mb-6"> | |
<h3 class="text-2xl font-bold text-gray-800">اسأل سؤال قانوني</h3> | |
<button onclick="hideLegalChat()" class="text-gray-500 hover:text-gray-700"> | |
<i class="fas fa-times text-xl"></i> | |
</button> | |
</div> | |
<div class="h-96 overflow-y-auto mb-4 p-4 border-2 rounded-xl custom-scroll" id="chatMessages"> | |
<!-- الرسائل ستظهر هنا --> | |
</div> | |
<div class="flex gap-2"> | |
<input type="text" | |
id="chatInput" | |
class="flex-grow p-3 border-2 rounded-xl focus:border-yellow-400 focus:ring-2 focus:ring-yellow-400 focus:ring-opacity-50 outline-none" | |
placeholder="اكتب سؤالك هنا..."> | |
<button onclick="sendMessage()" class="premium-button px-6 py-2 rounded-xl font-bold"> | |
إرسال | |
</button> | |
</div> | |
</div> | |
</div> | |
<!-- نافذة تحليل القضايا --> | |
<div id="caseAnalysisModal" class="hidden fixed inset-0 bg-black bg-opacity-30 modal-container flex items-center justify-center z-50"> | |
<div class="modal-content rounded-2xl p-8 w-full max-w-2xl mx-4"> | |
<div class="flex justify-between items-center mb-6"> | |
<h3 class="text-2xl font-bold text-gray-800">تحليل قضية جديدة</h3> | |
<button onclick="hideCaseAnalysis()" class="text-gray-500 hover:text-gray-700"> | |
<i class="fas fa-times text-xl"></i> | |
</button> | |
</div> | |
<div class="modal-body"> | |
<textarea | |
class="w-full p-4 border-2 rounded-xl mb-6 h-48 focus:border-yellow-400 focus:ring-2 focus:ring-yellow-400 focus:ring-opacity-50 outline-none transition-all custom-scroll" | |
placeholder="اكتب تفاصيل القضية هنا..." | |
></textarea> | |
<div id="analysisResult" class="mt-4 p-4 bg-gray-50 rounded-xl hidden"></div> | |
<div class="flex justify-end gap-4 mt-4"> | |
<button onclick="hideCaseAnalysis()" class="px-6 py-3 border-2 rounded-xl hover:bg-gray-50 font-bold"> | |
إلغاء | |
</button> | |
<button onclick="handleCaseAnalysis()" class="premium-button px-6 py-3 rounded-xl font-bold"> | |
تحليل القضية | |
</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- نافذة اسأل الموضوع --> | |
<div id="askTopicModal" class="hidden fixed inset-0 bg-black bg-opacity-30 modal-container flex items-center justify-center z-50"> | |
<div class="modal-content rounded-2xl p-8 w-full max-w-2xl mx-4 max-h-[90vh] overflow-y-auto"> | |
<div class="flex justify-between items-center mb-6"> | |
<h3 class="text-2xl font-bold text-gray-800">اسأل الموضوع</h3> | |
<button onclick="hideAskTopic()" class="text-gray-500 hover:text-gray-700"> | |
<i class="fas fa-times text-xl"></i> | |
</button> | |
</div> | |
<div class="modal-body space-y-6"> | |
<div> | |
<label class="block text-gray-700 font-bold mb-2">النص القانوني</label> | |
<textarea | |
id="legalText" | |
class="w-full p-4 border-2 rounded-xl h-48 focus:border-yellow-400 focus:ring-2 focus:ring-yellow-400 focus:ring-opacity-50 outline-none transition-all custom-scroll" | |
placeholder="أدخل النص القانوني هنا..." | |
></textarea> | |
</div> | |
<div> | |
<label class="block text-gray-700 font-bold mb-2">سؤالك حول النص</label> | |
<textarea | |
id="userQuestion" | |
class="w-full p-4 border-2 rounded-xl h-24 focus:border-yellow-400 focus:ring-2 focus:ring-yellow-400 focus:ring-opacity-50 outline-none transition-all custom-scroll" | |
placeholder="اكتب سؤالك هنا..." | |
></textarea> | |
</div> | |
<div id="topicResult" class="mt-4 p-4 bg-gray-50 rounded-xl hidden"></div> | |
<div class="flex justify-end gap-4"> | |
<button onclick="hideAskTopic()" class="px-6 py-3 border-2 rounded-xl hover:bg-gray-50 font-bold"> | |
إلغاء | |
</button> | |
<button onclick="handleAskTopic()" class="premium-button px-6 py-3 rounded-xl font-bold"> | |
إرسال السؤال | |
</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
<script> | |
// تكوين عنوان API | |
const API_URL = 'https://j8fp9mu44k547j-7777.proxy.runpod.net/proxy/9000/chat'; | |
const LEGAL_PROMPT = 'أريد منك أن تتصرف كمحامٍ خبير في القانون المصري. قم بتحليل الموضوعات القانونية التي سأطرحها عليك، مستندًا إلى القوانين المصرية الحديثة والمبادئ القانونية الراسخة. يجب أن تكون إجاباتك دقيقة ومحددة، وتقدم النصائح بناءً على القوانين واللوائح المصرية المعمول بها. إذا كان الموضوع يتطلب تفصيلاً قانونياً أكثر عمقًا، فأرجو أن تسألني عن المزيد من التفاصيل. الآن، إليك القضية التي أحتاج لتحليلها: '; | |
// دوال التحكم في النوافذ المنبثقة | |
function showLegalChat() { | |
document.getElementById('legalChatModal').classList.remove('hidden'); | |
document.body.style.overflow = 'hidden'; | |
} | |
function hideLegalChat() { | |
document.getElementById('legalChatModal').classList.add('hidden'); | |
document.body.style.overflow = 'auto'; | |
document.getElementById('chatInput').value = ''; | |
} | |
function showCaseAnalysis() { | |
document.getElementById('caseAnalysisModal').classList.remove('hidden'); | |
document.body.style.overflow = 'hidden'; | |
} | |
function hideCaseAnalysis() { | |
document.getElementById('caseAnalysisModal').classList.add('hidden'); | |
document.body.style.overflow = 'auto'; | |
document.querySelector('#caseAnalysisModal textarea').value = ''; | |
document.getElementById('analysisResult').classList.add('hidden'); | |
} | |
function showAskTopic() { | |
document.getElementById('askTopicModal').classList.remove('hidden'); | |
document.body.style.overflow = 'hidden'; | |
} | |
function hideAskTopic() { | |
document.getElementById('askTopicModal').classList.add('hidden'); | |
document.body.style.overflow = 'auto'; | |
document.getElementById('legalText').value = ''; | |
document.getElementById('userQuestion').value = ''; | |
document.getElementById('topicResult').classList.add('hidden'); | |
} | |
// دوال معالجة الطلبات | |
async function sendMessage() { | |
const input = document.getElementById('chatInput'); | |
const messagesDiv = document.getElementById('chatMessages'); | |
const message = input.value.trim(); | |
if (!message) return; | |
// إضافة رسالة المستخدم | |
messagesDiv.innerHTML += ` | |
<div class="flex justify-end mb-4"> | |
<div class="bg-blue-100 rounded-lg p-3 max-w-[80%]"> | |
${message} | |
</div> | |
</div> | |
`; | |
input.value = ''; | |
messagesDiv.scrollTop = messagesDiv.scrollHeight; | |
try { | |
const response = await fetch(API_URL, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json' | |
}, | |
body: JSON.stringify({ message: LEGAL_PROMPT + message }) | |
}); | |
if (!response.ok) throw new Error('Network response was not ok'); | |
const data = await response.json(); | |
// إضافة رد النظام | |
messagesDiv.innerHTML += ` | |
<div class="flex justify-start mb-4"> | |
<div class="bg-gray-100 rounded-lg p-3 max-w-[80%]"> | |
${data.response} | |
</div> | |
</div> | |
`; | |
messagesDiv.scrollTop = messagesDiv.scrollHeight; | |
} catch (error) { | |
console.error('Error:', error); | |
messagesDiv.innerHTML += ` | |
<div class="flex justify-start mb-4"> | |
<div class="bg-red-100 rounded-lg p-3 max-w-[80%]"> | |
عذراً، حدث خطأ في معالجة طلبك. يرجى المحاولة مرة أخرى. | |
</div> | |
</div> | |
`; | |
} | |
} | |
async function handleSearch() { | |
const searchInput = document.getElementById('searchInput'); | |
const searchResults = document.getElementById('searchResults'); | |
const query = searchInput.value.trim(); | |
if (!query) { | |
alert('الرجاء إدخال نص للبحث'); | |
return; | |
} | |
searchResults.innerHTML = '<div class="text-center p-4">جاري البحث...</div>'; | |
try { | |
const response = await fetch(API_URL, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json' | |
}, | |
body: JSON.stringify({ | |
message: LEGAL_PROMPT + "ابحث عن: " + query | |
}) | |
}); | |
if (!response.ok) throw new Error('Network response was not ok'); | |
const data = await response.json(); | |
searchResults.innerHTML = ` | |
<div class="bg-white p-6 rounded-xl shadow-md"> | |
${data.response} | |
</div> | |
`; | |
} catch (error) { | |
console.error('Error:', error); | |
searchResults.innerHTML = ` | |
<div class="bg-red-100 p-4 rounded-xl text-red-700"> | |
حدث خطأ في البحث. يرجى المحاولة مرة أخرى. | |
</div> | |
`; | |
} | |
} | |
async function handleCaseAnalysis() { | |
const caseText = document.querySelector('#caseAnalysisModal textarea').value.trim(); | |
const resultDiv = document.getElementById('analysisResult'); | |
if (!caseText) { | |
alert('الرجاء إدخال تفاصيل القضية'); | |
return; | |
} | |
const submitButton = document.querySelector('#caseAnalysisModal .premium-button'); | |
const originalButtonText = submitButton.innerHTML; | |
submitButton.innerHTML = 'جاري التحليل...'; | |
submitButton.disabled = true; | |
try { | |
const response = await fetch(API_URL, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json' | |
}, | |
body: JSON.stringify({ | |
message: LEGAL_PROMPT + caseText | |
}) | |
}); | |
if (!response.ok) throw new Error('Network response was not ok'); | |
const data = await response.json(); | |
resultDiv.innerHTML = data.response; | |
resultDiv.classList.remove('hidden'); | |
} catch (error) { | |
console.error('Error:', error); | |
resultDiv.innerHTML = 'حدث خطأ في تحليل القضية. يرجى المحاولة مرة أخرى.'; | |
resultDiv.classList.remove('hidden'); | |
} finally { | |
submitButton.innerHTML = originalButtonText; | |
submitButton.disabled = false; | |
} | |
} | |
async function handleAskTopic() { | |
const legalText = document.getElementById('legalText').value.trim(); | |
const userQuestion = document.getElementById('userQuestion').value.trim(); | |
const resultDiv = document.getElementById('topicResult'); | |
if (!legalText || !userQuestion) { | |
alert('الرجاء إدخال النص القانوني والسؤال'); | |
return; | |
} | |
const submitButton = document.querySelector('#askTopicModal .premium-button'); | |
const originalButtonText = submitButton.innerHTML; | |
submitButton.innerHTML = 'جاري المعالجة...'; | |
submitButton.disabled = true; | |
try { | |
const response = await fetch(API_URL, { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json' | |
}, | |
body: JSON.stringify({ | |
message: LEGAL_PROMPT + `النص القانوني: ${legalText}\n\nالسؤال: ${userQuestion}` | |
}) | |
}); | |
if (!response.ok) throw new Error('Network response was not ok'); | |
const data = await response.json(); | |
resultDiv.innerHTML = data.response; | |
resultDiv.classList.remove('hidden'); | |
} catch (error) { | |
console.error('Error:', error); | |
resultDiv.innerHTML = 'حدث خطأ في معالجة السؤال. يرجى المحاولة مرة أخرى.'; | |
resultDiv.classList.remove('hidden'); | |
} finally { | |
submitButton.innerHTML = originalButtonText; | |
submitButton.disabled = false; | |
} | |
} | |
// إضافة مستمعي الأحداث | |
document.getElementById('searchInput').addEventListener('keypress', function(e) { | |
if (e.key === 'Enter') { | |
handleSearch(); | |
} | |
}); | |
document.getElementById('chatInput').addEventListener('keypress', function(e) { | |
if (e.key === 'Enter') { | |
sendMessage(); | |
} | |
}); | |
// إغلاق النوافذ المنبثقة عند النقر خارجها | |
window.onclick = function(event) { | |
const modals = { | |
'legalChatModal': hideLegalChat, | |
'caseAnalysisModal': hideCaseAnalysis, | |
'askTopicModal': hideAskTopic | |
}; | |
Object.entries(modals).forEach(([modalId, hideFunction]) => { | |
const modal = document.getElementById(modalId); | |
if (event.target === modal) { | |
hideFunction(); | |
} | |
}); | |
}; | |
</script> | |
</body> | |
</html> |