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()