File size: 12,180 Bytes
82676b8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 |
"""
مكون عرض معلومات حول النظام
"""
import streamlit as st
def display_about_system():
"""
عرض معلومات حول النظام وميزاته
"""
# مربع معلومات النظام
st.markdown("""
<div class="about-system">
<h2>نبذة عن النظام</h2>
<p>
نظام WAHBi AI هو نظام متكامل لتحليل العقود والمناقصات باستخدام تقنيات الذكاء الاصطناعي المتقدمة.
تم تطوير النظام خصيصًا لشركة شبه الجزيرة للمقاولات لتمكينها من تحليل وثائق المناقصات، وتسعير المشاريع، وتقييم المخاطر،
وإدارة الموارد بكفاءة عالية.
</p>
<h2>المميزات الرئيسية</h2>
<ul>
<li><strong>تحليل المستندات ذكيًا</strong> - استخراج البنود والكميات والمخاطر من المستندات تلقائيًا</li>
<li><strong>حاسبة تكاليف البناء المتكاملة</strong> - حساب التكاليف التفصيلية للمواد الخام والمعدات والعمالة والمصاريف الإدارية وهوامش الربح</li>
<li><strong>تحليل الأسعار غير المتزنة</strong> - تحليل ومقارنة الأسعار مع متوسطات السوق لتحقيق أقصى استفادة</li>
<li><strong>تتبع المعدات والموارد</strong> - متابعة وتنظيم موارد الشركة وتخصيصها للمشاريع المختلفة</li>
<li><strong>تحليل المخاطر</strong> - تحديد المخاطر المحتملة في المشاريع وتقييم تأثيرها واقتراح إجراءات التخفيف</li>
<li><strong>مؤشرات أداء المشاريع</strong> - متابعة الأداء المالي والفني للمشاريع وقياس الإنجاز</li>
<li><strong>حاسبة المحتوى المحلي</strong> - حساب وتحسين نسبة المحتوى المحلي في المشاريع لتلبية متطلبات المملكة</li>
<li><strong>التنبؤ بأسعار المواد</strong> - استخدام نماذج التعلم الآلي للتنبؤ بتغيرات الأسعار المستقبلية</li>
<li><strong>مؤقت مواعيد التسليم</strong> - متابعة مواعيد بدء الدراسة ومواعيد تسليم العروض للمشاريع</li>
<li><strong>دعم اللغة العربية</strong> - واجهة مستخدم باللغة العربية مع إمكانية التبديل للغة الإنجليزية</li>
<li><strong>توافق متعدد الأجهزة</strong> - يعمل على جميع الأجهزة (أيفون، أندرويد، أجهزة لوحية، حواسيب مكتبية)</li>
</ul>
<h2>معلومات الاتصال</h2>
<div class="contact-info">
<p><strong>العنوان:</strong> المملكة العربية السعودية - الرياض - حي الملز - شارع السبالة</p>
<p><strong>البريد الإلكتروني:</strong> [email protected]</p>
<p><strong>هاتف:</strong> +966 12 345 6789</p>
<p><strong>الموقع الإلكتروني:</strong> www.peninsula-contracting.com</p>
</div>
<h2>فريق التطوير</h2>
<p>
تم تطوير هذا النظام بواسطة فريق متخصص من المهندسين والمطورين بقيادة م. بدر وهبي،
بالتعاون مع فريق التسعير والمشاريع في شركة شبه الجزيرة للمقاولات.
</p>
<h2>الإصدار والترخيص</h2>
<p>
<strong>رقم الإصدار:</strong> 2.5.0 (مارس 2025)<br>
<strong>الترخيص:</strong> جميع الحقوق محفوظة © 2025 شركة شبه الجزيرة للمقاولات
</p>
</div>
""", unsafe_allow_html=True)
# أضف مساحة أسفل المحتوى
st.markdown("<br><br>", unsafe_allow_html=True)
# إضافة أزرار تفاعلية
col1, col2, col3 = st.columns(3)
with col1:
st.button("تحميل دليل المستخدم")
with col2:
st.button("الدعم الفني")
with col3:
st.button("التحديثات والمزايا القادمة")
def display_settings():
"""
عرض صفحة الإعدادات
"""
st.markdown("<h2 class='module-title'>إعدادات النظام</h2>", unsafe_allow_html=True)
# تقسيم الصفحة إلى قسمين
col1, col2 = st.columns(2)
with col1:
st.markdown("""
<div class="settings-form">
<div class="settings-group">
<h3>خيارات اللغة</h3>
<div class="settings-item">
<label>لغة الواجهة</label>
</div>
</div>
</div>
""", unsafe_allow_html=True)
language = st.selectbox(
"اختر لغة الواجهة",
options=["العربية", "English"],
index=0,
label_visibility="collapsed"
)
st.markdown("""
<div class="settings-form">
<div class="settings-group">
<h3>الإشعارات</h3>
<div class="settings-item">
<label>إعدادات الإشعارات</label>
</div>
</div>
</div>
""", unsafe_allow_html=True)
notifications_email = st.checkbox("إشعارات البريد الإلكتروني", value=True)
notifications_sms = st.checkbox("إشعارات الرسائل النصية SMS", value=False)
notifications_system = st.checkbox("إشعارات النظام", value=True)
if st.button("حفظ الإعدادات"):
st.success("تم حفظ الإعدادات بنجاح")
with col2:
st.markdown("""
<div class="settings-form">
<div class="settings-group">
<h3>معلومات الحساب</h3>
</div>
</div>
""", unsafe_allow_html=True)
username = st.text_input("اسم المستخدم", value="admin")
email = st.text_input("البريد الإلكتروني", value="[email protected]")
st.markdown("""
<div class="settings-form" style="margin-top: 20px;">
<div class="settings-group">
<h3>تغيير كلمة المرور</h3>
</div>
</div>
""", unsafe_allow_html=True)
current_password = st.text_input("كلمة المرور الحالية", type="password")
new_password = st.text_input("كلمة المرور الجديدة", type="password")
confirm_password = st.text_input("تأكيد كلمة المرور الجديدة", type="password")
if st.button("تغيير كلمة المرور"):
if not current_password or not new_password or not confirm_password:
st.error("يرجى ملء جميع الحقول")
elif new_password != confirm_password:
st.error("كلمات المرور غير متطابقة")
else:
st.success("تم تغيير كلمة المرور بنجاح")
# إضافة مزيد من الإعدادات
st.markdown("<hr>", unsafe_allow_html=True)
st.markdown("<h3>إعدادات النظام المتقدمة</h3>", unsafe_allow_html=True)
col3, col4 = st.columns(2)
with col3:
theme = st.selectbox(
"سمة النظام",
options=["الافتراضية", "الوضع الفاتح", "الوضع الداكن"]
)
date_format = st.selectbox(
"تنسيق التاريخ",
options=["DD/MM/YYYY", "MM/DD/YYYY", "YYYY-MM-DD"]
)
with col4:
currency = st.selectbox(
"العملة الافتراضية",
options=["ريال سعودي (SAR)", "دولار أمريكي (USD)", "يورو (EUR)"]
)
notifications_frequency = st.selectbox(
"تكرار الإشعارات",
options=["فوري", "يومي", "أسبوعي"]
)
def display_countdown_timer():
"""
عرض مؤقت العد التنازلي للمواعيد النهائية
"""
st.markdown("<h3>مواعيد المناقصات</h3>", unsafe_allow_html=True)
# بيانات المواعيد
deadlines = [
{
"name": "مناقصة توسعة مستشفى الملك فهد",
"submission_date": "15 أبريل 2025",
"days_left": 15,
"start_date": "1 مارس 2025"
},
{
"name": "مناقصة إنشاء مبنى كلية الطب",
"submission_date": "30 مارس 2025",
"days_left": 0,
"start_date": "15 فبراير 2025"
},
{
"name": "مناقصة طريق الدائري الشمالي",
"submission_date": "10 مايو 2025",
"days_left": 40,
"start_date": "5 مارس 2025"
}
]
for i, deadline in enumerate(deadlines):
# تحديد لون المؤقت بناءً على عدد الأيام المتبقية
color_class = "danger" if deadline["days_left"] <= 5 else "warning" if deadline["days_left"] <= 15 else "success"
# عرض معلومات الموعد والمؤقت
st.markdown(f"""
<div class="card" style="margin-bottom: 15px;">
<h4>{deadline["name"]}</h4>
<div style="display: flex; justify-content: space-between; margin-bottom: 10px;">
<div>
<small style="color: var(--text-light);">بدء الدراسة: {deadline["start_date"]}</small>
</div>
<div>
<small style="color: var(--text-light);">تاريخ التسليم: {deadline["submission_date"]}</small>
</div>
</div>
<div class="progress" style="margin-bottom: 5px;">
<div class="progress-bar progress-{color_class}" style="width: {100 - min(100, deadline["days_left"] * 2)}%;"></div>
</div>
<div style="display: flex; justify-content: space-between; align-items: center;">
<div>
<small>متبقي: <span class="bold">{deadline["days_left"]} أيام</span></small>
</div>
<div>
<button class="btn-secondary btn-sm">تفاصيل المناقصة</button>
</div>
</div>
</div>
""", unsafe_allow_html=True)
# عرض مؤقت تفصيلي للمناقصة الأولى
st.markdown("<h4>العد التنازلي للتسليم</h4>", unsafe_allow_html=True)
st.markdown("""
<div class="countdown-timer">
<div class="time-block">
<div class="time-value">15</div>
<div class="time-label">يوم</div>
</div>
<div class="time-block">
<div class="time-value">08</div>
<div class="time-label">ساعة</div>
</div>
<div class="time-block">
<div class="time-value">45</div>
<div class="time-label">دقيقة</div>
</div>
<div class="time-block">
<div class="time-value">20</div>
<div class="time-label">ثانية</div>
</div>
</div>
""", unsafe_allow_html=True) |