EGYADMIN commited on
Commit
e5b37a0
·
verified ·
1 Parent(s): 6548729

Update web/pages/home.py

Browse files
Files changed (1) hide show
  1. web/pages/home.py +70 -58
web/pages/home.py CHANGED
@@ -1,81 +1,93 @@
1
  import streamlit as st
2
  import pandas as pd
 
3
  import plotly.express as px
 
 
4
 
5
  def show_home_page():
6
  """
7
- عرض الصفحة الرئيسية لتطبيق تحليل المناقصات مع سلاسل الإمداد والمحتوى المحلي
8
  """
9
- # إعداد صفحة البداية
10
- st.set_page_config(
11
- page_title="نظام تحليل المناقصات",
12
- page_icon="📊",
13
- layout="wide",
14
- initial_sidebar_state="expanded"
15
- )
16
-
17
- # العنوان الرئيسي
18
- st.title("نظام تحليل المناقصات مع سلاسل الإمداد والمحتوى المحلي")
19
- st.markdown("---")
20
 
21
- # عرض لوحة المعلومات الرئيسية
22
- col1, col2, col3 = st.columns(3)
 
23
 
24
  with col1:
25
- st.metric(label="المناقصات النشطة", value="24", delta="4")
 
 
 
 
26
 
27
  with col2:
28
- st.metric(label="نسبة المحتوى المحلي", value="68%", delta="2.5%")
 
 
 
 
29
 
30
  with col3:
31
- st.metric(label="الموردين المحليين", value="156", delta="12")
 
 
 
 
32
 
33
- # عرض رسم بياني توضيحي (مثال)
34
- st.subheader("توزيع المناقصات حسب القطاع")
 
 
 
 
35
 
36
- # بيانات توضيحية
37
- data = {
38
- 'القطاع': ['البنية التحتية', 'الطاقة', 'التقنية', 'الصحة', 'التعليم', 'النقل'],
39
- 'عدد المناقصات': [15, 12, 8, 10, 5, 7],
40
- 'متوسط المحتوى المحلي': [72, 65, 45, 60, 80, 58]
41
- }
42
 
43
- df = pd.DataFrame(data)
 
 
44
 
45
- # رسم بياني
46
- fig = px.bar(
47
- df,
48
- x='القطاع',
49
- y='عدد المناقصات',
50
- color='متوسط المحتوى المحلي',
51
- color_continuous_scale='Viridis',
52
- title='توزيع المناقصات حسب القطاع والمحتوى المحلي'
53
  )
54
-
55
  st.plotly_chart(fig, use_container_width=True)
56
 
57
- # الشريط الجانبي
58
- with st.sidebar:
59
- st.title("لوحة التحكم")
60
- st.markdown("---")
61
-
62
- # خيارات التحليل
63
- st.subheader("خيارات التحليل")
64
- analysis_type = st.selectbox(
65
- "نوع التحليل",
66
- ["تحليل المناقصات", "تحليل المحتوى المحلي", "تحليل سلاسل الإمداد"]
67
- )
68
 
69
- # فلترة حسب التاريخ
70
- st.subheader("الفترة الزمنية")
71
- date_range = st.date_input(
72
- "اختر الفترة الزمنية",
73
- value=[pd.to_datetime("2024-01-01"), pd.to_datetime("2024-03-01")]
74
- )
 
 
 
 
 
 
75
 
76
- # زر لتطبيق التحليل
77
- if st.button("تحليل البيانات"):
78
- st.success("تم تطبيق التحليل بنجاح!")
79
-
80
- if __name__ == "__main__":
81
- show_home_page()
 
1
  import streamlit as st
2
  import pandas as pd
3
+ import numpy as np
4
  import plotly.express as px
5
+ import plotly.graph_objects as go
6
+ from datetime import datetime, timedelta
7
 
8
  def show_home_page():
9
  """
10
+ عرض الصفحة الرئيسية مع لوحة المعلومات
11
  """
12
+ # بيانات توضيحية للمناقصات النشطة
13
+ active_tenders = create_sample_tenders_data()
 
 
 
 
 
 
 
 
 
14
 
15
+ # عرض المؤشرات الرئيسية
16
+ st.subheader("المؤشرات الرئيسية")
17
+ col1, col2, col3, col4 = st.columns(4)
18
 
19
  with col1:
20
+ st.metric(
21
+ label="المناقصات النشطة",
22
+ value=f"{len(active_tenders)}",
23
+ delta="3 ↑"
24
+ )
25
 
26
  with col2:
27
+ st.metric(
28
+ label="متوسط المحتوى المحلي",
29
+ value="67.8%",
30
+ delta="2.5% ↑"
31
+ )
32
 
33
  with col3:
34
+ st.metric(
35
+ label="العطاءات الفائزة",
36
+ value="12",
37
+ delta="2 ↑"
38
+ )
39
 
40
+ with col4:
41
+ st.metric(
42
+ label="قيمة المشاريع (مليون ريال)",
43
+ value="463.5",
44
+ delta="85.2 ↑"
45
+ )
46
 
47
+ # عرض المناقصات النشطة
48
+ st.subheader("المناقصات النشطة")
49
+ st.dataframe(
50
+ active_tenders[['رقم المناقصة', 'الجهة', 'اسم المشروع', 'القيمة التقديرية (مليون)', 'الموعد النهائي', 'حالة المناقصة']],
51
+ use_container_width=True
52
+ )
53
 
54
+ # توزيع المناقصات حسب القطاع
55
+ st.subheader("توزيع المناقصات حسب القطاع")
56
+ sectors_df = active_tenders.groupby('القطاع').size().reset_index(name='عدد المناقصات')
57
 
58
+ fig = px.pie(
59
+ sectors_df,
60
+ values='عدد المناقصات',
61
+ names='القطاع',
62
+ color_discrete_sequence=px.colors.qualitative.Bold,
63
+ title="توزيع المناقصات حسب القطاع"
 
 
64
  )
65
+ fig.update_traces(textposition='inside', textinfo='percent+label')
66
  st.plotly_chart(fig, use_container_width=True)
67
 
68
+ # المناقصات المقبلة
69
+ col1, col2 = st.columns(2)
70
+
71
+ with col1:
72
+ st.subheader("المناقصات المقبلة")
73
+ upcoming_df = active_tenders[active_tenders['الموعد النهائي'] > datetime.now().date()]
74
+ upcoming_df = upcoming_df.sort_values('الموعد النهائي')
 
 
 
 
75
 
76
+ for _, row in upcoming_df.head(5).iterrows():
77
+ with st.container():
78
+ st.markdown(f"""
79
+ **{row['اسم المشروع']}**
80
+ **الجهة:** {row['الجهة']}
81
+ **القيمة التقديرية:** {row['القيمة التقديرية (مليون)']} مليون ريال
82
+ **الموعد النهائي:** {row['الموعد النهائي'].strftime('%Y/%m/%d')}
83
+ """)
84
+ st.markdown("---")
85
+
86
+ with col2:
87
+ st.subheader("توقعات النجاح")
88
 
89
+ # بيانات توضيحية لتوقعات النجاح
90
+ prediction_data = {
91
+ 'المشروع': [
92
+ 'تطوير البنية التحتية في المنطقة الشرقية',
93
+ 'إنشاء مبا