EGYADMIN commited on
Commit
b7aeeed
·
verified ·
1 Parent(s): 932b7f9

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +158 -0
app.py ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ نظام تحليل المناقصات وسلاسل الإمداد والتوقعات المستقبلية
3
+ تطبيق خاص بشركة شبه الجزيرة للمقاولات
4
+
5
+ مهندس التطوير: م. تامر الجوهري
6
+ """
7
+
8
+ import os
9
+ import sys
10
+ import yaml
11
+ import json
12
+ import logging
13
+ from datetime import datetime
14
+ from pathlib import Path
15
+
16
+ import streamlit as st
17
+ import pandas as pd
18
+ import numpy as np
19
+ import plotly.express as px
20
+ import plotly.graph_objects as go
21
+
22
+ # إضافة المجلد الرئيسي للمسار
23
+ current_dir = Path(__file__).parent
24
+ sys.path.append(str(current_dir))
25
+
26
+ # استيراد المكونات الضرورية
27
+ from web.pages.home import show_home_page
28
+ from web.pages.tender_analysis import show_tender_analysis
29
+ from web.pages.requirements import show_requirements_analysis
30
+ from web.pages.cost_estimation import show_cost_estimation
31
+ from web.pages.risk_analysis import show_risk_analysis
32
+ from web.pages.timeline import show_timeline
33
+ from web.pages.local_content import show_local_content
34
+ from web.pages.supply_chain import show_supply_chain
35
+ from web.pages.procurement import show_procurement
36
+ from web.pages.vendors import show_vendors
37
+ from web.pages.future_projects import show_future_projects
38
+ from web.pages.success_prediction import show_success_prediction
39
+ from web.pages.reports import show_reports
40
+
41
+ from web.components.sidebar import create_sidebar
42
+ from web.components.header import create_header
43
+
44
+ from utils.file_handler import setup_logging
45
+
46
+ # إعداد التسجيل
47
+ setup_logging()
48
+ logger = logging.getLogger("TenderAnalysisSystem")
49
+
50
+ # تحميل الإعدادات
51
+ def load_config():
52
+ config_path = os.path.join(current_dir, "config", "config.yaml")
53
+ if os.path.exists(config_path):
54
+ with open(config_path, 'r', encoding='utf-8') as f:
55
+ return yaml.safe_load(f)
56
+ return {}
57
+
58
+ # تهيئة حالة الجلسة
59
+ def initialize_session():
60
+ if 'config' not in st.session_state:
61
+ st.session_state.config = load_config()
62
+
63
+ if 'page' not in st.session_state:
64
+ st.session_state.page = "الرئيسية"
65
+
66
+ if 'uploaded_files' not in st.session_state:
67
+ st.session_state.uploaded_files = []
68
+
69
+ if 'analysis_results' not in st.session_state:
70
+ st.session_state.analysis_results = {}
71
+
72
+ if 'current_tender' not in st.session_state:
73
+ st.session_state.current_tender = None
74
+
75
+ if 'user_info' not in st.session_state:
76
+ st.session_state.user_info = {
77
+ "company": "شركة شبه الجزيرة للمقاولات",
78
+ "user_name": "المستخدم الحالي",
79
+ "role": "محلل مناقصات"
80
+ }
81
+
82
+ if 'latest_predictions' not in st.session_state:
83
+ st.session_state.latest_predictions = None
84
+
85
+ # إعداد صفحة Streamlit
86
+ def setup_page():
87
+ st.set_page_config(
88
+ page_title="نظام تحليل المناقصات - شركة شبه الجزيرة للمقاولات",
89
+ page_icon="📊",
90
+ layout="wide",
91
+ initial_sidebar_state="expanded",
92
+ )
93
+
94
+ # إضافة CSS المخصص
95
+ with open(os.path.join(current_dir, "web", "styles", "main.css")) as f:
96
+ st.markdown(f"<style>{f.read()}</style>", unsafe_allow_html=True)
97
+
98
+ # إضافة CSS للغة العربية
99
+ with open(os.path.join(current_dir, "web", "styles", "rtl.css")) as f:
100
+ st.markdown(f"<style>{f.read()}</style>", unsafe_allow_html=True)
101
+
102
+ # التطبيق الرئيسي
103
+ def main():
104
+ # تهيئة الجلسة وإعداد الصفحة
105
+ initialize_session()
106
+ setup_page()
107
+
108
+ # إنشاء الشريط الجانبي
109
+ selected_page = create_sidebar()
110
+
111
+ # إنشاء رأس الصفحة
112
+ create_header()
113
+
114
+ # عرض الصفحة المحددة
115
+ if selected_page == "الرئيسية":
116
+ show_home_page()
117
+
118
+ elif selected_page == "تحليل المناقصات":
119
+ show_tender_analysis()
120
+
121
+ elif selected_page == "تحليل المتطلبات":
122
+ show_requirements_analysis()
123
+
124
+ elif selected_page == "تقدير التكاليف":
125
+ show_cost_estimation()
126
+
127
+ elif selected_page == "تحليل المخاطر":
128
+ show_risk_analysis()
129
+
130
+ elif selected_page == "الجدول الزمني":
131
+ show_timeline()
132
+
133
+ elif selected_page == "المحتوى المحلي":
134
+ show_local_content()
135
+
136
+ elif selected_page == "سلاسل الإمداد":
137
+ show_supply_chain()
138
+
139
+ elif selected_page == "المشتريات":
140
+ show_procurement()
141
+
142
+ elif selected_page == "الموردون والمقاولون":
143
+ show_vendors()
144
+
145
+ elif selected_page == "المشاريع المستقبلية":
146
+ show_future_projects()
147
+
148
+ elif selected_page == "توقع احتمالية النجاح":
149
+ show_success_prediction()
150
+
151
+ elif selected_page == "التقارير":
152
+ show_reports()
153
+
154
+ # تسجيل زيارة الصفحة
155
+ logger.info(f"تمت زيارة صفحة {selected_page}")
156
+
157
+ if __name__ == "__main__":
158
+ main()