File size: 6,241 Bytes
3e1c4f2
 
 
ef8b3c0
 
3e1c4f2
ef8b3c0
3e1c4f2
c16bb6d
3e1c4f2
ef8b3c0
 
3e1c4f2
ef8b3c0
 
3e1c4f2
ef8b3c0
 
 
 
 
3e1c4f2
ef8b3c0
 
 
 
 
3e1c4f2
ef8b3c0
 
 
3e1c4f2
ef8b3c0
 
 
 
 
3e1c4f2
ef8b3c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3e1c4f2
ef8b3c0
 
 
3e1c4f2
ef8b3c0
 
 
3e1c4f2
ef8b3c0
 
 
 
 
3e1c4f2
ef8b3c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3e1c4f2
ef8b3c0
 
 
 
 
3e1c4f2
ef8b3c0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

def tender_analysis_page():
    """
    صفحة تحليل العطاءات
    """
    st.title("تحليل العطاءات")
    st.write("هذه الصفحة تعرض تحليلات مختلفة للعطاءات والمناقصات")
    
    # يمكنك إضافة رفع ملف CSV أو Excel
    uploaded_file = st.file_uploader("ارفع ملف بيانات العطاءات", type=["csv", "xlsx"])
    
    if uploaded_file is not None:
        # قراءة البيانات
        try:
            if uploaded_file.name.endswith('csv'):
                df = pd.read_csv(uploaded_file)
            else:
                df = pd.read_excel(uploaded_file)
                
            # عرض البيانات الأولية
            st.subheader("نظرة عامة على البيانات")
            st.dataframe(df.head())
            
            # إحصائيات أساسية
            st.subheader("إحصائيات أساسية")
            st.write(df.describe())
            
            # تحليل حسب نوع العطاء (مثال)
            if 'نوع_العطاء' in df.columns:
                st.subheader("تحليل حسب نوع العطاء")
                tender_types = df['نوع_العطاء'].value_counts()
                st.bar_chart(tender_types)
            
            # تحليل القيمة حسب الشهر (مثال)
            if 'تاريخ' in df.columns and 'قيمة_العطاء' in df.columns:
                st.subheader("تحليل قيمة العطاءات حسب الشهر")
                df['شهر'] = pd.to_datetime(df['تاريخ']).dt.month
                monthly_values = df.groupby('شهر')['قيمة_العطاء'].sum()
                st.line_chart(monthly_values)
                
            # تحليل نسب النجاح (مثال)
            if 'حالة_العطاء' in df.columns:
                st.subheader("نسب نجاح العطاءات")
                success_rate = df['حالة_العطاء'].value_counts(normalize=True) * 100
                st.pie_chart(success_rate)
                
        except Exception as e:
            st.error(f"حدث خطأ أثناء تحليل البيانات: {e}")
    else:
        st.info("يرجى رفع ملف بيانات العطاءات لعرض التحليلات")

def contracts_page():
    """
    صفحة إدارة العقود - تعرض معلومات وتحليلات للعقود
    """
    st.title("إدارة العقود")
    st.write("هذه الصفحة مخصصة لإدارة وتحليل العقود")
    
    # يمكنك إضافة رفع ملف CSV أو Excel
    uploaded_file = st.file_uploader("ارفع ملف بيانات العقود", type=["csv", "xlsx"])
    
    if uploaded_file is not None:
        # قراءة البيانات
        try:
            if uploaded_file.name.endswith('csv'):
                df = pd.read_csv(uploaded_file)
            else:
                df = pd.read_excel(uploaded_file)
                
            # عرض البيانات الأولية
            st.subheader("نظرة عامة على بيانات العقود")
            st.dataframe(df.head())
            
            # إحصائيات العقود
            st.subheader("إحصائيات العقود")
            st.write(df.describe())
            
            # تحليل حسب نوع العقد (مثال)
            if 'نوع_العقد' in df.columns:
                st.subheader("تحليل حسب نوع العقد")
                contract_types = df['نوع_العقد'].value_counts()
                st.bar_chart(contract_types)
            
            # تحليل قيمة العقود حسب الشهر (مثال)
            if 'تاريخ_التوقيع' in df.columns and 'قيمة_العقد' in df.columns:
                st.subheader("تحليل قيمة العقود حسب الشهر")
                df['شهر'] = pd.to_datetime(df['تاريخ_التوقيع']).dt.month
                monthly_values = df.groupby('شهر')['قيمة_العقد'].sum()
                st.line_chart(monthly_values)
                
            # تحليل العقود حسب المورد/العميل (مثال)
            if 'المورد' in df.columns and 'قيمة_العقد' in df.columns:
                st.subheader("تحليل العقود حسب المورد")
                vendor_analysis = df.groupby('المورد')['قيمة_العقد'].sum().sort_values(ascending=False).head(10)
                st.bar_chart(vendor_analysis)
                
            # جدول العقود النشطة (مثال)
            if 'حالة_العقد' in df.columns:
                st.subheader("العقود النشطة")
                active_contracts = df[df['حالة_العقد'] == 'نشط']
                st.dataframe(active_contracts)
                
        except Exception as e:
            st.error(f"حدث خطأ أثناء تحليل بيانات العقود: {e}")
    else:
        st.info("يرجى رفع ملف بيانات العقود لعرض التحليلات")

def main():
    st.sidebar.title("قائمة الصفحات")
    page = st.sidebar.selectbox(
        "اختر صفحة", 
        ["الصفحة الرئيسية", "تحليل العطاءات", "إدارة العقود", "المعلومات"]
    )
    
    if page == "الصفحة الرئيسية":
        home_page()
    elif page == "تحليل العطاءات":
        tender_analysis_page()
    elif page == "إدارة العقود":
        contracts_page()
    elif page == "المعلومات":
        about_page()

def home_page():
    st.title("نظام تحليل العطاءات")
    st.write("مرحباً بك في نظام تحليل العطاءات. استخدم القائمة الجانبية للتنقل بين الصفحات.")

def about_page():
    st.title("عن النظام")
    st.write("نظام تحليل العطاءات هو أداة لتحليل بيانات العطاءات والمناقصات.")

if __name__ == "__main__":
    main()