WAHBi-AI-V2 / web /pages /tender_analysis.py
EGYADMIN's picture
Update web/pages/tender_analysis.py
c16bb6d verified
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()