Wahbi-AI / app.py
EGYADMIN's picture
Upload 34 files
ae93751 verified
raw
history blame
7.18 kB
import streamlit as st
import sys
from pathlib import Path
# إضافة مسار المشروع للنظام
sys.path.append(str(Path(__file__).parent.parent))
# استيراد الوحدات
from modules.document_analysis.document_app import DocumentAnalysisApp
from modules.pricing.pricing_app import PricingApp
from modules.resources.resources_app import ResourcesApp
from modules.risk_analysis.risk_analyzer import RiskAnalysisApp
from modules.project_management.project_management_app import ProjectsApp
from modules.maps.maps_app import MapsApp
from modules.notifications.notifications_app import NotificationsApp
from modules.document_comparison.document_comparison_app import DocumentComparisonApp
from modules.translation.translation_app import TranslationApp
from modules.ai_assistant.ai_app import AIAssistantApp
from modules.data_analysis.data_analysis_app import DataAnalysisApp
from styling.enhanced_ui import UIEnhancer
# تكوين الصفحة
st.set_page_config(
page_title="نظام تحليل المناقصات",
page_icon="📊",
layout="wide",
initial_sidebar_state="expanded",
menu_items={
'Get Help': 'https://www.example.com/help',
'Report a bug': "https://www.example.com/bug",
'About': "### نظام تحليل المناقصات\nالإصدار 2.0.0"
}
)
# تطبيق التنسيق العام
ui_enhancer = UIEnhancer(page_title="نظام تحليل المناقصات", page_icon="📊")
ui_enhancer.apply_global_styles()
# إنشاء قائمة العناصر
menu_items = [
{"name": "لوحة المعلومات", "icon": "house"},
{"name": "المناقصات والعقود", "icon": "file-text"},
{"name": "تحليل المستندات", "icon": "file-earmark-text"},
{"name": "نظام التسعير", "icon": "calculator"},
{"name": "حاسبة تكاليف البناء", "icon": "building"},
{"name": "الموارد والتكاليف", "icon": "people"},
{"name": "تحليل المخاطر", "icon": "exclamation-triangle"},
{"name": "إدارة المشاريع", "icon": "kanban"},
{"name": "الخرائط والمواقع", "icon": "geo-alt"},
{"name": "الجدول الزمني", "icon": "calendar3"},
{"name": "الإشعارات", "icon": "bell"},
{"name": "مقارنة المستندات", "icon": "files"},
{"name": "الترجمة", "icon": "translate"},
{"name": "المساعد الذكي", "icon": "robot"},
{"name": "تحليل البيانات", "icon": "bar-chart"},
{"name": "الإعدادات", "icon": "gear"}
]
# إنشاء الشريط الجانبي
selected = ui_enhancer.create_sidebar(menu_items)
# تحديد الوحدة المطلوبة بناءً على اختيار المستخدم
if selected == "لوحة المعلومات":
ui_enhancer.create_header("لوحة المعلومات", "نظرة عامة على المناقصات والمشاريع")
# عرض لوحة المعلومات
col1, col2, col3 = st.columns(3)
with col1:
ui_enhancer.create_metric_card("المناقصات النشطة", "12", "+3", ui_enhancer.COLORS['primary'])
with col2:
ui_enhancer.create_metric_card("المشاريع قيد التنفيذ", "8", "+1", ui_enhancer.COLORS['success'])
with col3:
ui_enhancer.create_metric_card("المناقصات المقدمة", "24", "+5", ui_enhancer.COLORS['info'])
# عرض الإشعارات الأخيرة
st.markdown("### الإشعارات الأخيرة")
notifications = [
{"title": "موعد تقديم مناقصة", "project": "إنشاء مبنى مستشفى الولادة والأطفال", "date": "2025-04-05", "priority": "عالية"},
{"title": "تحديث مستندات", "project": "صيانة وتطوير طريق الملك عبدالله", "date": "2025-03-28", "priority": "متوسطة"},
{"title": "اجتماع مراجعة التسعير", "project": "إنشاء محطة معالجة مياه الصرف الصحي", "date": "2025-03-25", "priority": "عالية"}
]
for notification in notifications:
with st.container():
col1, col2 = st.columns([4, 1])
with col1:
st.markdown(f"**{notification['title']}** - {notification['project']}")
st.caption(f"التاريخ: {notification['date']} | الأولوية: {notification['priority']}")
with col2:
st.button("عرض", key=f"view_{notification['title']}")
st.divider()
elif selected == "تحليل المستندات":
document_app = DocumentAnalysisApp()
document_app.run()
elif selected == "نظام التسعير":
pricing_app = PricingApp()
pricing_app.run()
elif selected == "الموارد والتكاليف":
resources_app = ResourcesApp()
resources_app.run()
elif selected == "تحليل المخاطر":
risk_app = RiskAnalysisApp()
risk_app.run()
elif selected == "إدارة المشاريع":
projects_app = ProjectsApp()
projects_app.run()
elif selected == "الخرائط والمواقع":
maps_app = MapsApp()
maps_app.run()
elif selected == "الإشعارات":
notifications_app = NotificationsApp()
notifications_app.run()
elif selected == "مقارنة المستندات":
document_comparison_app = DocumentComparisonApp()
document_comparison_app.run()
elif selected == "الترجمة":
translation_app = TranslationApp()
translation_app.run()
elif selected == "المساعد الذكي":
ai_app = AIAssistantApp()
ai_app.run()
elif selected == "تحليل البيانات":
data_analysis_app = DataAnalysisApp()
data_analysis_app.run()
elif selected == "الإعدادات":
ui_enhancer.create_header("الإعدادات", "إعدادات النظام والحساب")
# عرض إعدادات النظام
st.markdown("### إعدادات النظام")
tabs = st.tabs(["إعدادات عامة", "الواجهة", "الأمان", "مفاتيح API"])
with tabs[0]:
st.checkbox("تفعيل الإشعارات", value=True)
st.checkbox("حفظ تلقائي للبيانات", value=True)
st.selectbox("اللغة", ["العربية", "English"])
st.selectbox("المنطقة الزمنية", ["توقيت الرياض (GMT+3)", "توقيت جرينتش (GMT)"])
with tabs[1]:
st.radio("النمط", ["فاتح", "داكن", "تلقائي (حسب نظام التشغيل)"])
st.slider("حجم الخط", 12, 20, 16)
st.color_picker("لون التمييز", "#1E88E5")
with tabs[2]:
st.checkbox("تفعيل المصادقة الثنائية", value=False)
st.number_input("مدة الجلسة (دقائق)", min_value=5, max_value=120, value=30)
st.button("تغيير كلمة المرور")
with tabs[3]:
st.text_input("مفتاح OpenAI API", type="password")
st.text_input("مفتاح Google Maps API", type="password")
st.button("حفظ مفاتيح API")