# app.py import streamlit as st import sys import os from pathlib import Path import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import plotly.express as px import plotly.graph_objects as go from datetime import datetime # إعداد المسارات sys.path.append(str(Path(__file__).parent.parent)) sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # استيراد مدير التكوين from config_manager import ConfigManager # استيراد الوحدات 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 pricing_system.modules.pricing_strategies.pricing_strategies import PricingStrategies #added import from pricing_system.integrated_app import IntegratedApp #added import from styling.enhanced_ui import UIEnhancer # تهيئة مدير التكوين config_manager = ConfigManager() # تكوين الصفحة config_manager.set_page_config_if_needed( 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() # تطبيق الأنماط الموحدة المخصصة للنظام with open("pricing_system/static/css/unified_style.css") as f: st.markdown(f"", unsafe_allow_html=True) # إنشاء قائمة العناصر 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 == "نظام التسعير": import streamlit as st from pricing_system.integrated_app import IntegratedApp # تهيئة النظام المتكامل integrated_pricing = IntegratedApp() # إعداد التكوين مرة واحدة في بداية التطبيق config_manager.set_page_config_if_needed( page_title="نظام التسعير المتكامل", page_icon="💰", layout="wide", initial_sidebar_state="expanded" ) # عرض الشعار وعنوان النظام st.markdown("""