diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..208f70c2cf44 --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual Environment +venv/ +ENV/ +env/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo + +# OS +.DS_Store +Thumbs.db + +# Streamlit +.streamlit/ diff --git a/README.md b/README.md index 10dbdedd6091..4b8664bfd261 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,211 @@ -# Welcome to Streamlit! +# 🔮 أداة الاستشراف الذكي - MVP -Edit `/streamlit_app.py` to customize this app to your heart's desire. :heart: +**النسخة الأولية (Minimum Viable Product)** -If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community -forums](https://discuss.streamlit.io). +واجهة احترافية لتجربة استشراف مستقبلي واحدة - أداة ذكية تساعدك على تنظيم تفكيرك حول المستقبل قبل اتخاذ القرار. + +--- + +## 📋 نظرة عامة + +أداة الاستشراف الذكي هي منصة تفاعلية مصممة لمساعدة رواد الأعمال، موظفي المؤسسات، وصناع القرار على: +- **تحليل المشاريع والقرارات** من منظور استشرافي +- **توليد سيناريوهات مستقبلية** (متفائلة، واقعية، متشائمة) +- **تحديد الفرص والمخاطر** بشكل منظم +- **طرح أسئلة استشرافية** للتفكير العميق + +--- + +## ✨ المزايا الرئيسية + +### 🎯 واجهة بسيطة وسهلة الاستخدام +- تصميم عربي احترافي ونظيف +- لا حاجة للتسجيل أو إنشاء حساب +- تجربة واحدة مباشرة وفعالة + +### 📊 داشبورد احترافي +- عرض منظم للنتائج +- سيناريوهات تفصيلية مع خيار العرض المختصر +- رسوم بيانية تفاعلية للاحتماليات +- بطاقات ملونة حسب نوع السيناريو + +### 🧠 تحليل ذكي +- توليد سيناريوهات مخصصة حسب القطاع +- تحليل الفرص والمخاطر بناءً على المدخلات +- أسئلة استشرافية ذكية للتفكير العميق +- ملخص تنفيذي شامل + +### 💾 تصدير النتائج +- تحميل التقرير بصيغة JSON +- إمكانية حفظ التحليل للمراجعة لاحقاً + +--- + +## 🚀 التثبيت والتشغيل + +### المتطلبات +- Python 3.8 أو أحدث +- pip (مدير الحزم) + +### خطوات التثبيت + +1. **استنساخ المشروع** +```bash +git clone +cd streamlit-example +``` + +2. **تثبيت المكتبات المطلوبة** +```bash +pip install -r requirements.txt +``` + +3. **تشغيل التطبيق** +```bash +streamlit run streamlit_app.py +``` + +4. **فتح المتصفح** +- سيفتح التطبيق تلقائياً في المتصفح +- أو افتح: `http://localhost:8501` + +--- + +## 📖 كيفية الاستخدام + +### 1️⃣ إدخال معلومات المشروع +قم بملء النموذج بالمعلومات التالية: +- **نوع المشروع أو القرار**: مثل افتتاح مطعم، تطوير تطبيق، إلخ +- **الموقع**: المدينة أو المنطقة +- **القطاع**: اختر من القائمة (تقنية المعلومات، الخدمات الغذائية، إلخ) +- **الأفق الزمني**: قصير، متوسط، أو طويل المدى +- **المخاوف**: أكبر قلق لديك بخصوص المستقبل + +### 2️⃣ بدء التحليل +- اضغط على زر **"ابدأ التحليل الاستشرافي"** +- انتظر بضع ثوانٍ لتوليد النتائج + +### 3️⃣ استكشاف النتائج +ستحصل على: +- **ملخص تنفيذي** شامل +- **ثلاثة سيناريوهات**: + - 🌟 متفائل + - ⚖️ واقعي (مرجح) + - ⚠️ متشائم +- **الفرص والمخاطر** المحددة +- **أسئلة استشرافية** للتفكير العميق + +### 4️⃣ تحميل التقرير +- اضغط على **"تحميل التقرير"** لحفظ النتائج +- أو ابدأ تحليل مشروع جديد + +--- + +## 🎨 القطاعات المدعومة + +التطبيق يوفر تحليلاً متخصصاً للقطاعات التالية: +- 💻 تقنية المعلومات +- 🍽️ الخدمات الغذائية +- 📚 التعليم والتدريب +- 🛒 التجارة الإلكترونية +- 🏥 الصحة والعافية +- 💼 الخدمات المهنية +- 🏭 التصنيع +- 🏢 العقارات +- ✈️ السياحة والضيافة +- 🚚 النقل واللوجستيات + +--- + +## 🛠️ التقنيات المستخدمة + +- **Streamlit**: إطار عمل بناء تطبيقات الويب التفاعلية +- **Plotly**: رسوم بيانية تفاعلية +- **Pandas**: معالجة البيانات +- **Python**: لغة البرمجة الأساسية + +--- + +## 📌 ملاحظات مهمة + +### ⚠️ تنويه قانوني +هذه الأداة تقدم تحليلاً استشرافياً للمساعدة في التفكير الاستراتيجي فقط. **لا تتنبأ بالمستقبل** ولا تقدم: +- توصيات استثمارية +- توصيات قانونية +- توصيات مالية ملزمة + +يُنصح باستشارة خبراء متخصصين قبل اتخاذ قرارات مصيرية. + +### 🎯 حدود النسخة الأولية (MVP) +هذه النسخة مصممة كـ **Proof of Concept** وتركز على: +- ✅ تجربة واحدة ممتازة +- ✅ واجهة احترافية +- ✅ سيناريوهات ذكية + +**لا تشمل:** +- ❌ نظام حسابات مستخدمين +- ❌ حفظ التحليلات في قاعدة بيانات +- ❌ خصائص مؤسسية متقدمة +- ❌ تكامل مع أنظمة خارجية + +--- + +## 🎯 الجمهور المستهدف + +- 👔 **موظفو المؤسسات**: للتخطيط الاستراتيجي +- 🚀 **رواد الأعمال**: لتقييم أفكار المشاريع +- 💼 **المستشارون**: كأداة مساعدة في الاستشارات +- 📊 **القيادات**: لاتخاذ قرارات مبنية على تحليل شامل + +--- + +## 📈 التطوير المستقبلي + +### خطط محتملة للنسخ القادمة: +- 🤖 دمج الذكاء الاصطناعي (OpenAI, Claude) لتحليلات أكثر ذكاءً +- 💾 حفظ التحليلات في قاعدة بيانات +- 👥 نظام حسابات وتسجيل دخول +- 📧 مشاركة التقارير عبر البريد الإلكتروني +- 📊 مقارنة بين عدة تحليلات +- 📑 تصدير بصيغ PDF و Word +- 🌐 دعم لغات إضافية +- 📱 تطبيق محمول + +--- + +## 🤝 المساهمة + +هذا المشروع مفتوح للتطوير والتحسين. نرحب بأي اقتراحات أو ملاحظات. + +--- + +## 📝 الترخيص + +هذا المشروع مفتوح المصدر ومتاح للاستخدام التعليمي والتجريبي. + +--- + +## 📞 الدعم + +للأسئلة أو الاستفسارات، يرجى: +- فتح Issue في المستودع +- التواصل مع فريق التطوير + +--- + +## 🎉 شكر خاص + +تم تطوير هذه الأداة لتكون **POC مقنع للقيادات** في مجال الاستشراف الاستراتيجي. + +**النسخة**: 1.0.0 (MVP) +**تاريخ الإصدار**: يناير 2026 +**اللغة**: العربية 🇸🇦 + +--- + +
+ +### 🔮 أداة الاستشراف الذكي +**نظّم تفكيرك حول المستقبل قبل اتخاذ القرار** + +
diff --git a/requirements.txt b/requirements.txt index 502d7d1a0d19..d357d13bb33a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -altair -pandas -streamlit +streamlit>=1.28.0 +pandas>=2.0.0 +plotly>=5.17.0 diff --git a/streamlit_app.py b/streamlit_app.py index ac305b93bffd..5c911c06efc5 100644 --- a/streamlit_app.py +++ b/streamlit_app.py @@ -1,38 +1,904 @@ -from collections import namedtuple -import altair as alt -import math -import pandas as pd import streamlit as st +import pandas as pd +import plotly.graph_objects as go +import plotly.express as px +from datetime import datetime +import time +import json + +# إعدادات الصفحة +st.set_page_config( + page_title="أداة الاستشراف الذكي", + page_icon="🔮", + layout="wide", + initial_sidebar_state="collapsed" +) + +# CSS مخصص لتحسين المظهر +st.markdown(""" + +""", unsafe_allow_html=True) + +# دالة لتوليد السيناريوهات بناءً على المدخلات +def generate_scenarios(project_type, location, sector, time_horizon, concern): + """توليد سيناريوهات مستقبلية ذكية بناءً على المدخلات""" + + # قاعدة بيانات للسيناريوهات حسب القطاعات + scenarios_db = { + "تقنية المعلومات": { + "optimistic": { + "title": "التحول الرقمي الناجح", + "summary": "تحقيق نمو متسارع في السوق مع تبني واسع للحلول التقنية", + "details": [ + "زيادة الطلب على الحلول الرقمية بنسبة 150% خلال السنوات الثلاث القادمة", + "جذب استثمارات كبيرة من صناديق رأس المال الجريء", + "توسع جغرافي ناجح إلى 5 أسواق إقليمية جديدة", + "بناء فريق تقني متميز وزيادة الإنتاجية بنسبة 200%" + ], + "probability": 30, + "impact": "عالي جداً" + }, + "realistic": { + "title": "النمو المستقر والمتوازن", + "summary": "تحقيق نمو معتدل مع مواجهة تحديات السوق بنجاح", + "details": [ + "نمو سنوي ثابت بمعدل 30-40% في الإيرادات", + "منافسة متزايدة تتطلب تطوير مستمر للمنتج", + "الحاجة لموازنة بين الابتكار والربحية", + "استقطاب مواهب تقنية في سوق تنافسي" + ], + "probability": 50, + "impact": "متوسط إلى عالي" + }, + "pessimistic": { + "title": "تحديات السوق والمنافسة", + "summary": "مواجهة صعوبات في تحقيق النمو المستهدف", + "details": [ + "دخول منافسين أقوى بحلول أفضل وأسعار منافسة", + "صعوبة في الحصول على التمويل في بيئة اقتصادية صعبة", + "تحديات في الاحتفاظ بالمواهب التقنية", + "بطء في التبني من قبل العملاء المحتملين" + ], + "probability": 20, + "impact": "متوسط" + } + }, + "الخدمات الغذائية": { + "optimistic": { + "title": "نجاح باهر وتوسع سريع", + "summary": "بناء علامة تجارية قوية مع توسع في عدة فروع", + "details": [ + "تحقيق شهرة واسعة وإقبال كبير من العملاء", + "افتتاح 3-4 فروع جديدة خلال السنتين القادمتين", + "بناء قاعدة عملاء مخلصين وتكرار الزيارات", + "تحقيق هوامش ربح عالية تصل إلى 25-30%" + ], + "probability": 25, + "impact": "عالي جداً" + }, + "realistic": { + "title": "تأسيس حضور مستقر في السوق", + "summary": "بناء سمعة جيدة مع نمو تدريجي مستدام", + "details": [ + "نمو ثابت في قاعدة العملاء بمعدل 15-20% سنوياً", + "منافسة قوية تتطلب تمايز مستمر في الجودة والخدمة", + "تحديات في إدارة التكاليف والمخزون", + "الحاجة للتكيف مع تغير أذواق العملاء" + ], + "probability": 55, + "impact": "متوسط" + }, + "pessimistic": { + "title": "صعوبات تشغيلية ومالية", + "summary": "مواجهة تحديات في تحقيق الاستدامة المالية", + "details": [ + "ارتفاع تكاليف المواد الخام والعمالة بشكل غير متوقع", + "منافسة شرسة من مطاعم راسخة وسلاسل كبيرة", + "صعوبة في جذب عدد كافٍ من العملاء في الأشهر الأولى", + "تحديات في الحفاظ على جودة الطعام والخدمة" + ], + "probability": 20, + "impact": "عالي" + } + }, + "التعليم والتدريب": { + "optimistic": { + "title": "ريادة في التعليم الحديث", + "summary": "بناء مؤسسة تعليمية رائدة ومؤثرة", + "details": [ + "طلب متزايد على البرامج التدريبية بنسبة 100% سنوياً", + "شراكات استراتيجية مع مؤسسات تعليمية عالمية", + "اعتماد نموذج تعليم مبتكر يحقق نتائج متميزة", + "توسع في التعليم الإلكتروني والوصول لآلاف المتدربين" + ], + "probability": 30, + "impact": "عالي جداً" + }, + "realistic": { + "title": "بناء سمعة تعليمية محترمة", + "summary": "تقديم برامج تعليمية ذات جودة مع نمو معتدل", + "details": [ + "نمو ثابت في أعداد المتدربين بمعدل 25-35% سنوياً", + "بناء سمعة جيدة في مجال التخصص", + "منافسة من مؤسسات تعليمية تقليدية وعبر الإنترنت", + "الحاجة للتطوير المستمر للمناهج والمدربين" + ], + "probability": 50, + "impact": "متوسط إلى عالي" + }, + "pessimistic": { + "title": "صعوبات في التمايز والنمو", + "summary": "مواجهة تحديات في جذب المتدربين وتحقيق الاستدامة", + "details": [ + "تشبع السوق بالمنافسين في نفس المجال", + "صعوبة في إثبات القيمة المضافة للبرامج", + "تحديات في جذب مدربين أكفاء بتكلفة معقولة", + "انخفاض الطلب في بعض الفترات الموسمية" + ], + "probability": 20, + "impact": "متوسط" + } + }, + "التجارة الإلكترونية": { + "optimistic": { + "title": "نمو هائل في المبيعات الرقمية", + "summary": "تحقيق نجاح كبير مع التوسع السريع في السوق الرقمي", + "details": [ + "نمو المبيعات بمعدل 200% سنوياً مع توسع قاعدة العملاء", + "بناء منصة رقمية متميزة بتجربة مستخدم استثنائية", + "جذب استثمارات للتوسع الإقليمي", + "تحقيق ميزة تنافسية من خلال الابتكار في الخدمات اللوجستية" + ], + "probability": 28, + "impact": "عالي جداً" + }, + "realistic": { + "title": "بناء حضور رقمي مستقر", + "summary": "تحقيق نمو معتدل في سوق تنافسي", + "details": [ + "نمو ثابت بمعدل 40-50% سنوياً مع منافسة متزايدة", + "الحاجة لاستثمار مستمر في التسويق الرقمي", + "تحديات في إدارة سلسلة التوريد والشحن", + "موازنة بين النمو وهوامش الربح" + ], + "probability": 52, + "impact": "متوسط إلى عالي" + }, + "pessimistic": { + "title": "منافسة شرسة وتحديات تشغيلية", + "summary": "صعوبات في التمايز وتحقيق الربحية", + "details": [ + "منافسة قوية من منصات كبرى راسخة", + "ارتفاع تكاليف اكتساب العملاء والتسويق الرقمي", + "مشاكل في الخدمات اللوجستية وإرجاع المنتجات", + "صعوبة في بناء الثقة مع العملاء الجدد" + ], + "probability": 20, + "impact": "متوسط إلى عالي" + } + }, + "الصحة والعافية": { + "optimistic": { + "title": "قيادة ثورة الصحة الوقائية", + "summary": "بناء مؤسسة صحية رائدة مع تأثير إيجابي كبير", + "details": [ + "وعي متزايد بأهمية الصحة الوقائية والعافية", + "نمو الطلب على الخدمات الصحية المتخصصة بنسبة 120%", + "شراكات مع مؤسسات صحية وشركات تأمين", + "تطوير برامج صحية مبتكرة تحقق نتائج ملموسة" + ], + "probability": 32, + "impact": "عالي جداً" + }, + "realistic": { + "title": "تقديم خدمات صحية ذات جودة", + "summary": "بناء سمعة طيبة مع نمو مستقر في قاعدة العملاء", + "details": [ + "نمو ثابت بمعدل 30-40% مع بناء قاعدة عملاء مخلصين", + "التزام بالمعايير الصحية والجودة العالية", + "منافسة من مراكز صحية تقليدية وحديثة", + "الحاجة لاستثمار مستمر في التدريب والتجهيزات" + ], + "probability": 50, + "impact": "متوسط إلى عالي" + }, + "pessimistic": { + "title": "تحديات تنظيمية ومالية", + "summary": "صعوبات في الامتثال وتحقيق الاستدامة المالية", + "details": [ + "متطلبات تنظيمية صارمة وتكاليف امتثال عالية", + "صعوبة في جذب كوادر صحية مؤهلة", + "تحديات في تحصيل المستحقات من شركات التأمين", + "مخاطر مسؤولية قانونية وتكاليف تأمين مرتفعة" + ], + "probability": 18, + "impact": "متوسط إلى عالي" + } + } + } + + # اختيار السيناريوهات المناسبة أو استخدام سيناريوهات عامة + sector_scenarios = scenarios_db.get(sector, scenarios_db["تقنية المعلومات"]) + + # تخصيص السيناريوهات حسب الموقع والأفق الزمني + time_multipliers = { + "قصير المدى (1-2 سنة)": 1.0, + "متوسط المدى (3-5 سنوات)": 1.5, + "طويل المدى (5+ سنوات)": 2.0 + } + + multiplier = time_multipliers.get(time_horizon, 1.0) + + # إضافة تفاصيل خاصة بالمخاوف المذكورة + concern_insights = f"\n\n**بخصوص مخاوفك حول '{concern}':**\n" + if "منافس" in concern or "المنافسة" in concern: + concern_insights += "• المنافسة عامل مهم - يمكن تحويلها لفرصة من خلال التمايز والابتكار\n" + concern_insights += "• دراسة المنافسين بعمق تساعد في تحديد الفجوات في السوق" + elif "تمويل" in concern or "المال" in concern or "رأس المال" in concern: + concern_insights += "• التخطيط المالي الدقيق والنمو المستدام يقلل من المخاطر المالية\n" + concern_insights += "• التمويل التدريجي أفضل من التوسع السريع غير المدروس" + elif "تقني" in concern or "التكنولوجيا" in concern: + concern_insights += "• الاستثمار في التقنية المناسبة (ليس الأحدث دائماً) يحقق عائد أفضل\n" + concern_insights += "• الشراكات التقنية قد تكون أفضل من البناء من الصفر" + else: + concern_insights += "• التخطيط الجيد والاستعداد للتحديات يقلل من المخاطر\n" + concern_insights += "• المرونة والقدرة على التكيف أساسية للنجاح" + + return { + "optimistic": { + **sector_scenarios["optimistic"], + "concern_note": concern_insights + }, + "realistic": { + **sector_scenarios["realistic"], + "concern_note": concern_insights + }, + "pessimistic": { + **sector_scenarios["pessimistic"], + "concern_note": concern_insights + }, + "executive_summary": f""" +بناءً على تحليل '{project_type}' في قطاع {sector} بموقع {location} على أفق زمني {time_horizon}، +تشير التوقعات إلى فرص واعدة مع ضرورة الاستعداد للتحديات. السوق يشهد تحولات مستمرة تتطلب +مرونة وقدرة على الابتكار. نجاح المشروع يعتمد على التخطيط الدقيق، فهم احتياجات السوق، +والتنفيذ الفعّال مع المراجعة المستمرة للاستراتيجية. + +**أبرز النقاط:** +- الفرص متاحة ولكنها تتطلب تنفيذاً ممتازاً +- المنافسة موجودة وتزداد في معظم القطاعات +- التكيف السريع والابتكار المستمر ضروريان +- التخطيط المالي المحكم يقلل المخاطر بشكل كبير + """ + } + +# دالة لتوليد الفرص والمخاطر +def generate_opportunities_risks(sector, time_horizon, concern): + """توليد قوائم الفرص والمخاطر""" + + opportunities_db = { + "تقنية المعلومات": [ + "التحول الرقمي المتسارع في المؤسسات الحكومية والخاصة", + "ازدياد الاستثمار في البنية التحتية التقنية", + "نمو الطلب على الحلول السحابية والأمن السيبراني", + "دعم حكومي قوي لقطاع التقنية والابتكار", + "فرص التصدير للأسواق الإقليمية والعالمية", + "نمو سوق الذكاء الاصطناعي والبيانات الضخمة" + ], + "الخدمات الغذائية": [ + "نمو قطاع المطاعم والمقاهي بنسبة 8-12% سنوياً", + "ازدياد الإنفاق على الطعام خارج المنزل", + "فرص التوسع في خدمات التوصيل والطلبات الإلكترونية", + "إمكانية بناء علامة تجارية مميزة", + "فرص الامتياز التجاري بعد نجاح الفرع الأول", + "تزايد الاهتمام بالأطعمة الصحية والعضوية" + ], + "التعليم والتدريب": [ + "الطلب المتزايد على التعليم المستمر وتطوير المهارات", + "دعم حكومي لبرامج التدريب والتطوير", + "نمو سوق التعليم الإلكتروني بنسبة تتجاوز 20% سنوياً", + "فرص الشراكات مع الشركات الكبرى", + "إمكانية الوصول لجمهور واسع عبر الإنترنت", + "تزايد الحاجة لمهارات تقنية ومهنية متخصصة" + ], + "التجارة الإلكترونية": [ + "نمو التجارة الإلكترونية بمعدل 25-30% سنوياً", + "تحسن البنية التحتية للخدمات اللوجستية والدفع", + "ازدياد ثقة المستهلكين في الشراء عبر الإنترنت", + "فرص البيع عبر الحدود والأسواق الإقليمية", + "إمكانية الاستفادة من البيانات لتحسين التجربة", + "نمو التسوق عبر الهاتف المحمول" + ], + "الصحة والعافية": [ + "وعي متزايد بأهمية الصحة الوقائية", + "نمو سوق اللياقة البدنية والعافية", + "زيادة الإنفاق على الصحة والرعاية الشخصية", + "فرص الشراكات مع شركات التأمين والمؤسسات", + "تزايد الطلب على الخدمات الصحية المتخصصة", + "دعم حكومي لقطاع الصحة الخاصة" + ] + } + + risks_db = { + "تقنية المعلومات": [ + "منافسة شديدة من شركات تقنية راسخة ومحلية وعالمية", + "سرعة التغير التقنولوجي تتطلب تطوير مستمر", + "صعوبة استقطاب والاحتفاظ بالكفاءات التقنية", + "تحديات الأمن السيبراني وحماية البيانات", + "تغيرات تنظيمية وقوانين حماية البيانات", + "مخاطر الاعتماد على تقنيات طرف ثالث" + ], + "الخدمات الغذائية": [ + "منافسة شرسة من مطاعم راسخة وسلاسل عالمية", + "ارتفاع تكاليف التشغيل (إيجار، عمالة، مواد خام)", + "تقلبات في أسعار المواد الغذائية", + "صرامة المتطلبات الصحية والرقابية", + "تغير أذواق المستهلكين وموسمية الطلب", + "مخاطر سمعة من حادث صحي واحد" + ], + "التعليم والتدريب": [ + "تشبع السوق في بعض المجالات التدريبية", + "منافسة من منصات تعليم عالمية مجانية ومدفوعة", + "صعوبة إثبات العائد على الاستثمار في التدريب", + "تحديات في جذب والاحتفاظ بمدربين أكفاء", + "تغير احتياجات السوق من المهارات", + "مخاطر تنظيمية ومتطلبات الاعتماد" + ], + "التجارة الإلكترونية": [ + "منافسة من منصات كبرى مثل أمازون ونون", + "ارتفاع تكاليف اكتساب العملاء والتسويق الرقمي", + "تحديات الخدمات اللوجستية والشحن", + "مشاكل إرجاع المنتجات وخدمة العملاء", + "مخاطر الاحتيال والمدفوعات الإلكترونية", + "صعوبة بناء الثقة مع عملاء جدد" + ], + "الصحة والعافية": [ + "متطلبات تنظيمية وترخيصية صارمة", + "مخاطر المسؤولية القانونية والطبية", + "تكاليف التأمين المرتفعة", + "صعوبة استقطاب كوادر صحية مؤهلة", + "منافسة من مراكز صحية راسخة ومستشفيات", + "تحديات في تحصيل المستحقات من التأمين" + ] + } + + sector_opps = opportunities_db.get(sector, opportunities_db["تقنية المعلومات"]) + sector_risks = risks_db.get(sector, risks_db["تقنية المعلومات"]) + + return { + "opportunities": sector_opps[:6], + "risks": sector_risks[:6] + } + +# دالة لتوليد الأسئلة الاستشرافية +def generate_foresight_questions(project_type, sector, concern): + """توليد أسئلة استشرافية ذكية""" + + questions = [ + f"ماذا لو تغيرت احتياجات العملاء في قطاع {sector} بشكل جذري خلال السنتين القادمتين؟", + f"ماذا لو دخل منافس كبير (محلي أو عالمي) إلى سوق {sector} في منطقتك؟", + f"ماذا لو أصبحت التقنيات الجديدة (الذكاء الاصطناعي، التشغيل الآلي) معياراً أساسياً في {sector}؟", + f"ماذا لو تغيرت القوانين والأنظمة المتعلقة بـ{sector} بشكل كبير؟", + f"ماذا لو واجه '{project_type}' أزمة اقتصادية أو انكماش في السوق؟", + f"ماذا لو أصبح العملاء يفضلون نموذج عمل مختلف تماماً عن نموذجك الحالي؟", + f"ماذا لو ظهرت فرصة توسع كبيرة ولكنها تتطلب استثماراً ضخماً - هل أنت مستعد؟" + ] + + # إضافة سؤال مخصص بناءً على المخاوف + if concern: + questions.insert(2, f"ماذا لو تحقق القلق الأكبر لديك بخصوص '{concern}'؟") + + return questions[:7] + +# الحالة الأولية +if 'analysis_done' not in st.session_state: + st.session_state.analysis_done = False + +# العنوان الرئيسي +st.markdown('

🔮 أداة الاستشراف الذكي

', unsafe_allow_html=True) +st.markdown('

نظّم تفكيرك حول المستقبل قبل اتخاذ القرار

', unsafe_allow_html=True) + +# الجزء الأول: نموذج الإدخال +if not st.session_state.analysis_done: + st.markdown("---") + st.markdown("### 📝 معلومات المشروع أو القرار") + + col1, col2 = st.columns(2) + + with col1: + project_type = st.text_input( + "🎯 نوع المشروع أو القرار", + placeholder="مثال: افتتاح مطعم، تطوير تطبيق، خدمة استشارية...", + help="صف بإيجاز طبيعة المشروع أو القرار الذي تفكر فيه" + ) + + location = st.text_input( + "📍 الموقع", + placeholder="مثال: الرياض، جدة، دبي...", + help="المدينة أو المنطقة التي سيعمل فيها المشروع" + ) + + sector = st.selectbox( + "🏢 القطاع", + [ + "تقنية المعلومات", + "الخدمات الغذائية", + "التعليم والتدريب", + "التجارة الإلكترونية", + "الصحة والعافية", + "الخدمات المهنية", + "التصنيع", + "العقارات", + "السياحة والضيافة", + "النقل واللوجستيات" + ], + help="اختر القطاع الأقرب لمشروعك" + ) + + with col2: + time_horizon = st.selectbox( + "⏰ الأفق الزمني", + [ + "قصير المدى (1-2 سنة)", + "متوسط المدى (3-5 سنوات)", + "طويل المدى (5+ سنوات)" + ], + help="ما المدة الزمنية التي تفكر فيها للتخطيط؟" + ) + + concern = st.text_area( + "💭 أكثر شيء يقلقك بشأن المستقبل", + placeholder="مثال: المنافسة الشديدة، عدم وجود تمويل كافٍ، التغيرات التقنية السريعة...", + help="شارك أكبر مخاوفك - سنأخذها في الاعتبار عند التحليل", + height=150 + ) + + st.markdown("---") + + # زر التحليل + col_center = st.columns([1, 2, 1])[1] + with col_center: + analyze_button = st.button("🚀 ابدأ التحليل الاستشرافي", use_container_width=True) + + if analyze_button: + # التحقق من اكتمال البيانات + if not project_type or not location or not concern: + st.error("⚠️ الرجاء إكمال جميع الحقول المطلوبة") + else: + # عرض مؤشر التحميل + with st.spinner("🔄 جارٍ توليد السيناريوهات المستقبلية..."): + time.sleep(2) # محاكاة المعالجة + + # توليد التحليل + st.session_state.scenarios = generate_scenarios( + project_type, location, sector, time_horizon, concern + ) + st.session_state.opp_risks = generate_opportunities_risks( + sector, time_horizon, concern + ) + st.session_state.questions = generate_foresight_questions( + project_type, sector, concern + ) + st.session_state.project_info = { + "project_type": project_type, + "location": location, + "sector": sector, + "time_horizon": time_horizon, + "concern": concern + } + st.session_state.analysis_done = True + st.rerun() + +# الجزء الثاني: عرض النتائج +else: + # عرض معلومات المشروع في الأعلى + st.markdown("### 📊 نتائج التحليل الاستشرافي") + + col1, col2, col3, col4 = st.columns(4) + with col1: + st.markdown(f""" +
+
نوع المشروع
+
+ {st.session_state.project_info['project_type']} +
+
+ """, unsafe_allow_html=True) + + with col2: + st.markdown(f""" +
+
الموقع
+
+ {st.session_state.project_info['location']} +
+
+ """, unsafe_allow_html=True) + + with col3: + st.markdown(f""" +
+
القطاع
+
+ {st.session_state.project_info['sector']} +
+
+ """, unsafe_allow_html=True) + + with col4: + st.markdown(f""" +
+
الأفق الزمني
+
+ {st.session_state.project_info['time_horizon']} +
+
+ """, unsafe_allow_html=True) + + st.markdown("---") + + # 1) الملخص التنفيذي + st.markdown('

📋 الملخص التنفيذي

', unsafe_allow_html=True) + st.markdown(f""" +
+ {st.session_state.scenarios['executive_summary']} +
+ """, unsafe_allow_html=True) + + st.markdown("
", unsafe_allow_html=True) + + # 2) السيناريوهات المستقبلية + st.markdown('

🎯 السيناريوهات المستقبلية

', unsafe_allow_html=True) + + # خيار العرض (مختصر أو مفصل) + view_mode = st.radio( + "طريقة العرض:", + ["عرض مختصر", "عرض تفصيلي"], + horizontal=True, + label_visibility="collapsed" + ) + + detailed = (view_mode == "عرض تفصيلي") + + # سيناريو متفائل + st.markdown(f""" +
+

+ 🌟 السيناريو المتفائل: {st.session_state.scenarios['optimistic']['title']} +

+

+ {st.session_state.scenarios['optimistic']['summary']} +

+ """, unsafe_allow_html=True) + + if detailed: + st.markdown('

التفاصيل الرئيسية:

', unsafe_allow_html=True) + for detail in st.session_state.scenarios['optimistic']['details']: + st.markdown(f"• {detail}") + st.markdown(f""" +
+ احتمالية الحدوث: {st.session_state.scenarios['optimistic']['probability']}% | + التأثير المتوقع: {st.session_state.scenarios['optimistic']['impact']} +
+ """, unsafe_allow_html=True) + + st.markdown("
", unsafe_allow_html=True) + + # سيناريو واقعي + st.markdown(f""" +
+

+ ⚖️ السيناريو المرجح (الواقعي): {st.session_state.scenarios['realistic']['title']} +

+

+ {st.session_state.scenarios['realistic']['summary']} +

+ """, unsafe_allow_html=True) + + if detailed: + st.markdown('

التفاصيل الرئيسية:

', unsafe_allow_html=True) + for detail in st.session_state.scenarios['realistic']['details']: + st.markdown(f"• {detail}") + st.markdown(f""" +
+ احتمالية الحدوث: {st.session_state.scenarios['realistic']['probability']}% | + التأثير المتوقع: {st.session_state.scenarios['realistic']['impact']} +
+ """, unsafe_allow_html=True) + + st.markdown("
", unsafe_allow_html=True) + + # سيناريو متشائم + st.markdown(f""" +
+

+ ⚠️ السيناريو المتشائم: {st.session_state.scenarios['pessimistic']['title']} +

+

+ {st.session_state.scenarios['pessimistic']['summary']} +

+ """, unsafe_allow_html=True) + + if detailed: + st.markdown('

التفاصيل الرئيسية:

', unsafe_allow_html=True) + for detail in st.session_state.scenarios['pessimistic']['details']: + st.markdown(f"• {detail}") + st.markdown(f""" +
+ احتمالية الحدوث: {st.session_state.scenarios['pessimistic']['probability']}% | + التأثير المتوقع: {st.session_state.scenarios['pessimistic']['impact']} +
+ """, unsafe_allow_html=True) + + st.markdown("
", unsafe_allow_html=True) + + # رسم بياني للاحتماليات + if detailed: + st.markdown("
", unsafe_allow_html=True) + fig = go.Figure(data=[ + go.Bar( + x=['السيناريو المتفائل', 'السيناريو المرجح', 'السيناريو المتشائم'], + y=[ + st.session_state.scenarios['optimistic']['probability'], + st.session_state.scenarios['realistic']['probability'], + st.session_state.scenarios['pessimistic']['probability'] + ], + marker_color=['#48bb78', '#4299e1', '#f56565'], + text=[ + f"{st.session_state.scenarios['optimistic']['probability']}%", + f"{st.session_state.scenarios['realistic']['probability']}%", + f"{st.session_state.scenarios['pessimistic']['probability']}%" + ], + textposition='auto', + ) + ]) + fig.update_layout( + title="احتمالية حدوث كل سيناريو", + yaxis_title="الاحتمالية (%)", + height=400, + font=dict(family="Cairo", size=14), + plot_bgcolor='rgba(0,0,0,0)', + paper_bgcolor='white', + showlegend=False + ) + st.plotly_chart(fig, use_container_width=True) + + st.markdown("
", unsafe_allow_html=True) + + # 3) الفرص والمخاطر + st.markdown('

⚡ الفرص والمخاطر

', unsafe_allow_html=True) + + col_opp, col_risk = st.columns(2) + + with col_opp: + st.markdown("### ✅ الفرص المتاحة") + for i, opp in enumerate(st.session_state.opp_risks['opportunities'], 1): + st.markdown(f""" +
+ {i}. {opp} +
+ """, unsafe_allow_html=True) + + with col_risk: + st.markdown("### ⚠️ المخاطر المحتملة") + for i, risk in enumerate(st.session_state.opp_risks['risks'], 1): + st.markdown(f""" +
+ {i}. {risk} +
+ """, unsafe_allow_html=True) + + st.markdown("
", unsafe_allow_html=True) + + # 4) الأسئلة الاستشرافية + st.markdown('

❓ أسئلة استشرافية للتفكير العميق

', unsafe_allow_html=True) + st.markdown('

هذه الأسئلة تساعدك على استكشاف سيناريوهات مختلفة والاستعداد للمستقبل:

', unsafe_allow_html=True) -""" -# Welcome to Streamlit! + for i, question in enumerate(st.session_state.questions, 1): + st.markdown(f""" +
+ السؤال {i}: {question} +
+ """, unsafe_allow_html=True) -Edit `/streamlit_app.py` to customize this app to your heart's desire :heart: + st.markdown("

", unsafe_allow_html=True) -If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community -forums](https://discuss.streamlit.io). + # 5) أزرار الإجراءات + col1, col2, col3 = st.columns([1, 1, 1]) -In the meantime, below is an example of what you can do with just a few lines of code: -""" + with col1: + # زر تحميل التقرير + report_data = { + "project_info": st.session_state.project_info, + "scenarios": st.session_state.scenarios, + "opportunities_risks": st.session_state.opp_risks, + "questions": st.session_state.questions, + "generated_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S") + } + report_json = json.dumps(report_data, ensure_ascii=False, indent=2) -with st.echo(code_location='below'): - total_points = st.slider("Number of points in spiral", 1, 5000, 2000) - num_turns = st.slider("Number of turns in spiral", 1, 100, 9) + st.download_button( + label="📥 تحميل التقرير (JSON)", + data=report_json, + file_name=f"تقرير_استشرافي_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json", + mime="application/json", + use_container_width=True + ) - Point = namedtuple('Point', 'x y') - data = [] + with col2: + # زر تحليل جديد + if st.button("🔄 تحليل مشروع جديد", use_container_width=True): + st.session_state.analysis_done = False + st.rerun() - points_per_turn = total_points / num_turns + with col3: + # زر مشاركة (placeholder) + st.button("📤 مشاركة التقرير", use_container_width=True, disabled=True, + help="قريباً: إمكانية مشاركة التقرير عبر البريد الإلكتروني") - for curr_point_num in range(total_points): - curr_turn, i = divmod(curr_point_num, points_per_turn) - angle = (curr_turn + 1) * 2 * math.pi * i / points_per_turn - radius = curr_point_num / total_points - x = radius * math.cos(angle) - y = radius * math.sin(angle) - data.append(Point(x, y)) + # التنويه القانوني + st.markdown(""" +
+ ⚠️ تنويه مهم: هذه الأداة تقدم تحليلاً استشرافياً للمساعدة في التفكير الاستراتيجي فقط. + لا تتنبأ بالمستقبل ولا تقدم توصيات استثمارية أو قانونية أو مالية. يُنصح باستشارة + خبراء متخصصين قبل اتخاذ أي قرارات مصيرية. +
+ """, unsafe_allow_html=True) - st.altair_chart(alt.Chart(pd.DataFrame(data), height=500, width=500) - .mark_circle(color='#0068c9', opacity=0.5) - .encode(x='x:Q', y='y:Q')) +# Footer +st.markdown("

", unsafe_allow_html=True) +st.markdown(""" +
+

تم التطوير بواسطة أداة الاستشراف الذكي • النسخة الأولية (MVP) • 2026

+
+""", unsafe_allow_html=True)