lodgy commited on
Commit
2279fac
·
verified ·
1 Parent(s): 1bee47d

Upload 8 files

Browse files
Files changed (6) hide show
  1. DEPLOYMENT_GUIDE.md +224 -0
  2. README.md +202 -92
  3. admin_panel.py +499 -0
  4. app.py +414 -179
  5. chicken_ai.py +398 -242
  6. requirements.txt +4 -0
DEPLOYMENT_GUIDE.md ADDED
@@ -0,0 +1,224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 🚀 دليل النشر على Hugging Face Spaces
2
+
3
+ ## 📋 المتطلبات الأساسية
4
+
5
+ ### 1. حساب Hugging Face
6
+ - إنشاء حساب على [huggingface.co](https://huggingface.co/)
7
+ - التحقق من البريد الإلكتروني
8
+ - إعداد الملف الشخصي
9
+
10
+ ### 2. إعداد Git (اختياري)
11
+ ```bash
12
+ git config --global user.name "اسمك"
13
+ git config --global user.email "بريدك@example.com"
14
+ ```
15
+
16
+ ## 🔧 خطوات النشر
17
+
18
+ ### الطريقة الأولى: رفع الملفات مباشرة
19
+
20
+ 1. **إنشاء Space جديد**
21
+ - اذهب إلى [huggingface.co/new-space](https://huggingface.co/new-space)
22
+ - اختر اسماً مناسباً: `chicken-assistant-arabic`
23
+ - اختر License: `MIT`
24
+ - اختر SDK: `Gradio`
25
+ - اختر Hardware: `CPU basic` (مجاني)
26
+
27
+ 2. **رفع الملفات**
28
+ - اضغط على "Files" في الصفحة الرئيسية للـ Space
29
+ - اضغط "Add file" → "Upload files"
30
+ - ارفع جميع الملفات التالية:
31
+ ```
32
+ app.py
33
+ chicken_ai.py
34
+ admin_panel.py (اختياري)
35
+ requirements.txt
36
+ README.md
37
+ LICENSE
38
+ data/
39
+ ├── diseases.md
40
+ ├── nutrition.md
41
+ ├── daily_tips.md
42
+ ├── chicken_breeds.md
43
+ └── prevention_treatment_general.md
44
+ ```
45
+
46
+ 3. **إعداد ملف التكوين**
47
+ - أنشئ ملف `app.py` في الجذر (موجود بالفعل)
48
+ - تأكد من أن الملف يحتوي على:
49
+ ```python
50
+ if __name__ == "__main__":
51
+ app.launch()
52
+ ```
53
+
54
+ ### الطريقة الثانية: استخدام Git
55
+
56
+ 1. **استنساخ المستودع**
57
+ ```bash
58
+ git clone https://huggingface.co/spaces/YOUR_USERNAME/chicken-assistant-arabic
59
+ cd chicken-assistant-arabic
60
+ ```
61
+
62
+ 2. **نسخ الملفات**
63
+ ```bash
64
+ cp -r /path/to/chicken_assistant/* .
65
+ ```
66
+
67
+ 3. **رفع التغييرات**
68
+ ```bash
69
+ git add .
70
+ git commit -m "Initial commit: Arabic Chicken Assistant"
71
+ git push
72
+ ```
73
+
74
+ ## ⚙️ إعدادات متقدمة
75
+
76
+ ### 1. متغيرات البيئة
77
+ إذا كنت تستخدم APIs خارجية، أضف متغيرات البيئة في إعدادات الـ Space:
78
+ ```
79
+ OPENAI_API_KEY=your_key_here
80
+ CUSTOM_CONFIG=production
81
+ ```
82
+
83
+ ### 2. إعدادات الأجهزة
84
+ - **CPU Basic**: مجاني، مناسب للاستخدام العادي
85
+ - **CPU Upgrade**: مدفوع، أداء أفضل
86
+ - **GPU**: للمشاريع التي تتطلب معالجة مكثفة
87
+
88
+ ### 3. إعدادات الخصوصية
89
+ - **Public**: متاح للجميع
90
+ - **Private**: متاح لك فقط (يتطلب اشتراك مدفوع)
91
+
92
+ ## 📁 هيكل الملفات المطلوب
93
+
94
+ ```
95
+ chicken-assistant-arabic/
96
+ ├── app.py # الملف الرئيسي
97
+ ├── chicken_ai.py # نموذج الذكاء الاصطناعي
98
+ ├── admin_panel.py # لوحة الإدارة (اختياري)
99
+ ├── requirements.txt # المتطلبات
100
+ ├── README.md # التوثيق
101
+ ├── LICENSE # الترخيص
102
+ ├── .gitignore # ملفات Git المتجاهلة
103
+ └── data/ # قاعدة البيانات
104
+ ├── diseases.md
105
+ ├── nutrition.md
106
+ ├── daily_tips.md
107
+ ├── chicken_breeds.md
108
+ └── prevention_treatment_general.md
109
+ ```
110
+
111
+ ## 🔍 اختبار النشر
112
+
113
+ ### 1. اختبار محلي
114
+ ```bash
115
+ # تشغيل التطبيق محلياً
116
+ python app.py
117
+
118
+ # فتح المتصفح على
119
+ http://localhost:7860
120
+ ```
121
+
122
+ ### 2. اختبار على Hugging Face
123
+ - انتظر حتى يكتمل البناء (Build)
124
+ - اضغط على رابط التطبيق
125
+ - اختبر جميع الوظائف
126
+
127
+ ## 🐛 حل المشاكل الشائعة
128
+
129
+ ### 1. خطأ في المتطلبات
130
+ ```bash
131
+ # تأكد من صحة requirements.txt
132
+ pip install -r requirements.txt
133
+ ```
134
+
135
+ ### 2. خطأ في الترميز
136
+ ```python
137
+ # أضف في بداية الملفات Python
138
+ # -*- coding: utf-8 -*-
139
+ ```
140
+
141
+ ### 3. مشاكل الذاكرة
142
+ - قلل من حجم قاعدة البيانات
143
+ - استخدم lazy loading للبيانات الكبيرة
144
+ - فكر في ترقية الأجهزة
145
+
146
+ ### 4. مشاكل الأداء
147
+ ```python
148
+ # استخدم caching للبيانات المتكررة
149
+ import functools
150
+
151
+ @functools.lru_cache(maxsize=128)
152
+ def expensive_function():
153
+ pass
154
+ ```
155
+
156
+ ## 🔧 تحسينات الأداء
157
+
158
+ ### 1. تحسين التحميل
159
+ ```python
160
+ # تحميل البيانات مرة واحدة عند البدء
161
+ @gr.cache
162
+ def load_data():
163
+ return data
164
+ ```
165
+
166
+ ### 2. ضغط الملفات
167
+ ```bash
168
+ # ضغط الصور والملفات الكبيرة
169
+ gzip large_file.json
170
+ ```
171
+
172
+ ### 3. تحسين الذاكرة
173
+ ```python
174
+ # استخدام generators بدلاً من lists
175
+ def get_data():
176
+ for item in large_dataset:
177
+ yield item
178
+ ```
179
+
180
+ ## 📊 مراقبة الأداء
181
+
182
+ ### 1. إحصائيات الاستخدام
183
+ - راقب عدد المستخدمين من لوحة تحكم Hugging Face
184
+ - تتبع الأخطاء والمشاكل
185
+
186
+ ### 2. تحديث التطبيق
187
+ ```bash
188
+ # تحديث الكود
189
+ git pull origin main
190
+ git add .
191
+ git commit -m "Update: new features"
192
+ git push
193
+ ```
194
+
195
+ ## 🔒 الأمان والخصوصية
196
+
197
+ ### 1. حماية البيانات الحساسة
198
+ - لا تضع مفاتيح API في الكود
199
+ - استخدم متغيرات البيئة
200
+ - راجع الملفات قبل الرفع
201
+
202
+ ### 2. إعدادات الخصوصية
203
+ ```python
204
+ # تعطيل التحليلات إذا لزم الأمر
205
+ app.launch(analytics_enabled=False)
206
+ ```
207
+
208
+ ## 📞 الدعم والمساعدة
209
+
210
+ ### موارد مفيدة
211
+ - [توثيق Hugging Face Spaces](https://huggingface.co/docs/hub/spaces)
212
+ - [توثيق Gradio](https://gradio.app/docs/)
213
+ - [مجتمع Hugging Face](https://discuss.huggingface.co/)
214
+
215
+ ### في حالة المشاكل
216
+ 1. راجع logs البناء في Hugging Face
217
+ 2. اختبر التطبيق محلياً أولاً
218
+ 3. اطلب المساعدة في المجتمع
219
+ 4. راسل فريق الدعم إذا لزم الأمر
220
+
221
+ ---
222
+
223
+ **ملاحظة**: هذا الدليل يفترض استخدام الحساب المجاني. للميزات المتقدمة، قد تحتاج لاشتراك مدفوع.
224
+
README.md CHANGED
@@ -1,108 +1,218 @@
1
- ---
2
- title: مساعد تربية الدجاج الذكي
3
- emoji: 🐔
4
- colorFrom: blue
5
- colorTo: purple
6
- sdk: gradio
7
- sdk_version: 5.38.0
8
- app_file: app.py
9
- pinned: false
10
- license: mit
11
- ---
12
 
13
- # 🐔 مساعد تربية الدجاج الذكي
14
 
15
- مساعد ذكي متخصص في تربية الدجاج البلدي والصناعي، مصمم لمساعدة المربين الصغار والمتوسطين على تحسين إنتاجهم ورعاية دجاجهم بأفضل الطرق العلمية.
16
 
17
  ## ✨ الميزات الرئيسية
18
 
19
- ### 🩺 تشخيص الأمراض
20
- - تشخيص دقيق للأمراض بناءً على الأعراض المدخلة
21
- - توصيات علاجية مفصلة لكل مرض
22
- - نصائح الوقاية والنظافة
23
- - تغطية شاملة لأكثر من 10 أمراض شائعة
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
- - **الواجهة**: Gradio للتفاعل السهل والبديهي
52
- - **اللغة**: Python مع خوارزميات ذكية للتشخيص
53
- - **قاعدة المعرفة**: شاملة ومحدثة بأحدث المعلومات العلمية
54
- - **التصميم**: واجهة عربية متجاوبة وسهلة الاستخدام
55
-
56
- ## 📋 كيفية الاستخدام
57
-
58
- ### تشخيص الأمراض
59
- 1. انتقل إلى تبويب "تشخيص الأمراض"
60
- 2. اكتب الأعراض التي تلاحظها (افصل بينها بفاصلة)
61
- 3. اضغط "تشخيص المرض"
62
- 4. ستحصل على التشخيص المحتمل مع العلاج والوقاية
63
-
64
- ### إنشاء خطة تغذية
65
- 1. انتقل إلى تبويب "خطط التغذية"
66
- 2. أدخل عمر الدجاج بالأسابيع
67
- 3. اختر نوع الدجاج (بياض/لاحم/مختلط)
68
- 4. حدد حالة الدجاج (صحي/مريض/نقاهة)
69
- 5. اضغط "إنشاء خطة التغذية"
70
-
71
- ### الاستشارات العامة
72
- 1. انتقل إلى تبويب "استشارات عامة"
73
- 2. اكتب سؤالك بوضوح
74
- 3. اضغط "اسأل"
75
- 4. ستحصل على إجابة شاملة ومفيدة
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
- هذا المشروع مرخص تحت رخصة MIT - انظر ملف [LICENSE](LICENSE) للتفاصيل.
 
 
 
 
 
 
 
101
 
102
- ## 👨‍💻 المطور
103
 
104
- تم تطوير هذا المساعد بواسطة **Manus AI** بهدف مساعدة مربي الدجاج على تحسين إنتاجهم ورعاية دجاجهم بأفضل الطرق العلمية.
 
 
 
 
 
 
 
 
 
 
 
 
105
 
106
  ---
107
 
108
- **ملاحظة**: هذا التطبيق تعليمي واسترشادي، ولا يغني عن استشارة الطبيب البيطري في الحالات الشديدة.
 
 
 
1
+ # 🐔 مساعد تربية الدجاج الذكي - الإصدار المتقدم
2
+
3
+ [![Gradio](https://img.shields.io/badge/Gradio-4.0+-blue)](https://gradio.app/)
4
+ [![Python](https://img.shields.io/badge/Python-3.11+-green)](https://python.org/)
5
+ [![License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE)
 
 
 
 
 
 
6
 
7
+ ## 🌟 نظرة عامة
8
 
9
+ مساعد تربية الدجاج الذكي هو نظام متطور يستخدم الذكاء الاصطناعي لمساعدة مربي الدجاج الصغار والمتوسطين على تحسين إنتاجهم ورعاية دجاجهم بطريقة علمية ومدروسة. يوفر النظام تشخيصاً دقيقاً للأمراض، خطط تغذية مخصصة، استشارات فورية، ولوحة تحكم شاملة لإدارة المزرعة.
10
 
11
  ## ✨ الميزات الرئيسية
12
 
13
+ ### 🔍 تشخيص الأمراض المتقدم
14
+ - **تشخيص ذكي**: تحليل الأعراض باستخدام خوارزميات متطورة
15
+ - **دقة عالية**: نسبة ثقة مئوية لكل تشخيص محتمل
16
+ - **علاج شامل**: توصيات علاجية مفصلة مع إجراءات الوقاية والنظافة
17
+ - **قاعدة بيانات موسعة**: تشمل أكثر من 15 مرضاً شائعاً
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
+ - **الواجهة الأمامية**: Gradio 4.0+ مع تصميم عربي احترافي
45
+ - **الذكاء الاصطناعي**: خوارزميات تعلم آلة مخصصة
46
+ - **تحليل البيانات**: Pandas, Plotly للمخططات التفاعلية
47
+ - **قاعدة البيانات**: JSON لسهولة النشر والصيانة
48
+ - **اللغة**: Python 3.11+ مع دعم كامل للعربية
49
+
50
+ ## 📦 التثبيت والتشغيل
51
+
52
+ ### المتطلبات
53
+ ```bash
54
+ Python 3.11+
55
+ pip (مدير الحزم)
56
+ ```
57
+
58
+ ### خطوات التثبيت
59
+ ```bash
60
+ # استنساخ المشروع
61
+ git clone https://github.com/your-username/chicken-assistant.git
62
+ cd chicken-assistant
63
+
64
+ # تثبيت المتطلبات
65
+ pip install -r requirements.txt
66
+
67
+ # تشغيل التطبيق الرئيسي
68
+ python app.py
69
+
70
+ # تشغيل لوحة الإدارة (اختياري)
71
+ python admin_panel.py
72
+ ```
73
+
74
+ ### الوصول للتطبيق
75
+ - **التطبيق الرئيسي**: http://localhost:7860
76
+ - **لوحة الإدارة**: http://localhost:7861
77
+
78
+ ## 📚 دليل الاستخدام
79
+
80
+ ### للمربين
81
+ 1. **تشخيص الأمراض**: أدخل الأعراض الملاحظة واحصل على تشخيص فوري
82
+ 2. **خطط التغذية**: حدد عمر ونوع الدجاج للحصول على خطة تغذية مخصصة
83
+ 3. **الاستشارات**: اطرح أي سؤال واحصل على إجابة من الخبير الذكي
84
+ 4. **تتبع الإنتاج**: سجل بيانات الإنتاج اليومية وراقب الأداء
85
+
86
+ ### للمديرين
87
+ 1. **إدارة المحتوى**: أضف أمراض وسلالات جديدة حسب المنطقة
88
+ 2. **التقارير**: أنشئ تقارير شاملة عن أداء المزرعة
89
+ 3. **التنبيهات**: أنشئ وإدارة التنبيهات للمشاكل المختلفة
90
+ 4. **الإعدادات**: خصص النظام حسب احتياجات المزرعة
91
+
92
+ ## 🔧 التخصيص والتطوير
93
+
94
+ ### إضافة أمراض جديدة
95
+ ```python
96
+ # في ملف chicken_ai.py
97
+ diseases_db["اسم المرض"] = {
98
+ "symptoms": ["عرض1", "عرض2"],
99
+ "probability_weights": {"عرض1": 0.8, "عرض2": 0.6},
100
+ "treatment": "وصف العلاج",
101
+ "prevention": "إجراءات الوقاية",
102
+ "hygiene": "متطلبات النظافة"
103
+ }
104
+ ```
105
+
106
+ ### إضافة سلالات جديدة
107
+ ```python
108
+ # في ملف chicken_ai.py
109
+ breeds_db["اسم السلالة"] = {
110
+ "type": "بياض/لاحم",
111
+ "egg_production": "200-250 بيضة/سنة",
112
+ "characteristics": "وصف الخصائص",
113
+ "immunity": "مستوى المناعة"
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
+ - الأندلسي الأزرق (بياض)
139
+ - الفيومي المصري (محلي)
140
+
141
+ ## 🌍 العلائق البديلة المدعومة
142
+
143
+ ### مص��در البروتين البديلة
144
+ - دودة الوجبة المجففة
145
+ - مسحوق السمك المحلي
146
+ - بقايا المسالخ المعالجة
147
+ - البقوليات المطحونة
148
+ - مخلفات الجبن والألبان
149
+
150
+ ### مصادر الطاقة البديلة
151
+ - نخالة الأرز
152
+ - مخلفات المخابز
153
+ - البطاطا المسلوقة
154
+ - الذرة المكسرة
155
+ - بذور عباد الشمس
156
+
157
+ ### المكملات الطبيعية
158
+ - قشر البيض المطحون (كالسيوم)
159
+ - الخضروات الورقية (فيتامينات)
160
+ - الثوم والبصل (مضادات حيوية طبيعية)
161
+ - خل التفاح (تحسين الهضم)
162
+ - الأعشاب الطبية المحلية
163
+
164
+ ## 🔒 الأمان والخصوصية
165
+
166
+ - **حماية البيانات**: جميع البيانات محفوظة محلياً
167
+ - **لا توجد اتصالات خارجية**: النظام يعمل بشكل مستقل
168
+ - **تشفير الملفات**: إمكانية تشفير ملفات البيانات الحساسة
169
+ - **نسخ احتياطية**: نظام نسخ احتياطي تلقائي
170
 
171
  ## 🤝 المساهمة
172
 
173
+ نرحب بمساهماتكم لتطوير المشروع:
174
+
175
+ 1. Fork المشروع
176
+ 2. إنشاء فرع جديد (`git checkout -b feature/amazing-feature`)
177
+ 3. Commit التغييرات (`git commit -m 'Add amazing feature'`)
178
+ 4. Push للفرع (`git push origin feature/amazing-feature`)
179
+ 5. فتح Pull Request
180
+
181
+ ## 📞 الدعم والمساعدة
182
+
183
+ - **البريد الإلكتروني**: support@chicken-assistant.com
184
+ - **التوثيق**: [docs.chicken-assistant.com](https://docs.chicken-assistant.com)
185
+ - **المجتمع**: [community.chicken-assistant.com](https://community.chicken-assistant.com)
186
 
187
  ## 📄 الترخيص
188
 
189
+ هذا المشروع مرخص تحت رخصة MIT - راجع ملف [LICENSE](LICENSE) للتفاصيل.
190
+
191
+ ## 🙏 شكر وتقدير
192
+
193
+ - **فريق Manus AI** لتطوير النظام
194
+ - **مجتمع مربي الدجاج العربي** للملاحظات والاقتراحات
195
+ - **الخبراء البيطريين** للمراجعة العلمية
196
+ - **المساهمين** في تطوير المشروع
197
 
198
+ ## 🔄 سجل التحديثات
199
 
200
+ ### الإصدار 2.0.0 (الحالي)
201
+ - ✅ واجهة مستخدم محدثة بالكامل
202
+ - ✅ لوحة تحكم إدارية متقدمة
203
+ - ✅ نظام تشخيص محسن
204
+ - ✅ علائق بديلة ومحلية
205
+ - ✅ مخططات تفاعلية
206
+ - ✅ نظام تنبيهات ذكي
207
+
208
+ ### الإصدار 1.0.0
209
+ - ✅ النسخة الأساسية
210
+ - ✅ تشخيص الأمراض الأساسي
211
+ - ✅ خطط التغذية البسيطة
212
+ - ✅ واجهة Gradio أساسية
213
 
214
  ---
215
 
216
+ **تم تطوير هذا المساعد بواسطة:** [Manus AI](https://manus.ai)
217
+ **الهدف:** مساعدة مربي الدجاج العرب على تحسين إنتاجهم ورعاية دجاجهم بطريقة علمية ومدروسة
218
+
admin_panel.py ADDED
@@ -0,0 +1,499 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+ import plotly.graph_objects as go
4
+ import plotly.express as px
5
+ from datetime import datetime, timedelta
6
+ import json
7
+ import os
8
+ from typing import Dict, List, Any
9
+ from chicken_ai import AdvancedChickenAI
10
+
11
+ class AdminPanel:
12
+ def __init__(self):
13
+ self.ai = AdvancedChickenAI()
14
+ self.data_dir = "/home/ubuntu/chicken_assistant/admin_data"
15
+ self.ensure_data_directory()
16
+
17
+ def ensure_data_directory(self):
18
+ """التأكد من وجود مجلد البيانات"""
19
+ os.makedirs(self.data_dir, exist_ok=True)
20
+
21
+ # إنشاء ملفات البيانات الأساسية إذا لم تكن موجودة
22
+ default_files = {
23
+ "users.json": [],
24
+ "farm_settings.json": {
25
+ "farm_name": "مزرعة الدجاج الذكية",
26
+ "location": "",
27
+ "capacity": 1000,
28
+ "established_date": datetime.now().strftime("%Y-%m-%d")
29
+ },
30
+ "alerts.json": [],
31
+ "reports.json": []
32
+ }
33
+
34
+ for filename, default_content in default_files.items():
35
+ filepath = os.path.join(self.data_dir, filename)
36
+ if not os.path.exists(filepath):
37
+ with open(filepath, 'w', encoding='utf-8') as f:
38
+ json.dump(default_content, f, ensure_ascii=False, indent=2)
39
+
40
+ def load_data(self, filename: str) -> Any:
41
+ """تحميل البيانات من ملف"""
42
+ filepath = os.path.join(self.data_dir, filename)
43
+ try:
44
+ with open(filepath, 'r', encoding='utf-8') as f:
45
+ return json.load(f)
46
+ except:
47
+ return []
48
+
49
+ def save_data(self, filename: str, data: Any) -> bool:
50
+ """حفظ البيانات في ملف"""
51
+ filepath = os.path.join(self.data_dir, filename)
52
+ try:
53
+ with open(filepath, 'w', encoding='utf-8') as f:
54
+ json.dump(data, f, ensure_ascii=False, indent=2)
55
+ return True
56
+ except:
57
+ return False
58
+
59
+ def add_disease(self, name: str, symptoms: str, treatment: str, prevention: str, hygiene: str) -> str:
60
+ """إضافة مرض جديد"""
61
+ if not all([name, symptoms, treatment, prevention, hygiene]):
62
+ return "❌ يرجى ملء جميع الحقول المطلوبة"
63
+
64
+ # تحديث قاعدة بيانات الأمراض
65
+ symptoms_list = [s.strip() for s in symptoms.split(',')]
66
+ weights = {symptom: 0.8 for symptom in symptoms_list} # وزن افتراضي
67
+
68
+ self.ai.diseases_db[name] = {
69
+ "symptoms": symptoms_list,
70
+ "probability_weights": weights,
71
+ "treatment": treatment,
72
+ "prevention": prevention,
73
+ "hygiene": hygiene
74
+ }
75
+
76
+ # حفظ في ملف منفصل للأمراض المخصصة
77
+ custom_diseases = self.load_data("custom_diseases.json")
78
+ custom_diseases[name] = self.ai.diseases_db[name]
79
+ self.save_data("custom_diseases.json", custom_diseases)
80
+
81
+ return f"✅ تم إضافة المرض '{name}' بنجاح!"
82
+
83
+ def add_breed(self, name: str, breed_type: str, egg_production: str, characteristics: str, immunity: str) -> str:
84
+ """إضافة سلالة جديدة"""
85
+ if not all([name, breed_type, characteristics, immunity]):
86
+ return "❌ يرجى ملء جميع الحقول المطلوبة"
87
+
88
+ breed_info = {
89
+ "type": breed_type,
90
+ "characteristics": characteristics,
91
+ "immunity": immunity
92
+ }
93
+
94
+ if egg_production:
95
+ breed_info["egg_production"] = egg_production
96
+ breed_info["egg_color"] = "غير محدد"
97
+
98
+ self.ai.breeds_db[name] = breed_info
99
+
100
+ # حفظ في ملف منفصل للسلالات المخصصة
101
+ custom_breeds = self.load_data("custom_breeds.json")
102
+ custom_breeds[name] = breed_info
103
+ self.save_data("custom_breeds.json", custom_breeds)
104
+
105
+ return f"✅ تم إضافة السلالة '{name}' بنجاح!"
106
+
107
+ def generate_farm_report(self) -> str:
108
+ """إنشاء تقرير شامل للمزرعة"""
109
+ # تحميل بيانات الإنتاج
110
+ production_file = "/home/ubuntu/chicken_assistant/production_data.json"
111
+ if os.path.exists(production_file):
112
+ with open(production_file, 'r', encoding='utf-8') as f:
113
+ production_data = json.load(f)
114
+ else:
115
+ production_data = []
116
+
117
+ if not production_data:
118
+ return "📊 لا توجد بيانات إنتاج متاحة لإنشاء التقرير"
119
+
120
+ # حساب الإحصائيات
121
+ total_eggs = sum(record.get('eggs', 0) for record in production_data)
122
+ total_feed = sum(record.get('feed', 0) for record in production_data)
123
+ days_count = len(production_data)
124
+ avg_eggs_per_day = total_eggs / days_count if days_count > 0 else 0
125
+ avg_feed_per_day = total_feed / days_count if days_count > 0 else 0
126
+
127
+ # حساب كفاءة التحويل
128
+ feed_conversion_ratio = total_feed / total_eggs if total_eggs > 0 else 0
129
+
130
+ # تحليل الاتجاهات
131
+ recent_data = production_data[-7:] if len(production_data) >= 7 else production_data
132
+ recent_avg_eggs = sum(record.get('eggs', 0) for record in recent_data) / len(recent_data)
133
+
134
+ trend = "📈 متزايد" if recent_avg_eggs > avg_eggs_per_day else "📉 متناقص" if recent_avg_eggs < avg_eggs_per_day else "➡️ مستقر"
135
+
136
+ report = f"""
137
+ # 📊 تقرير أداء المزرعة الشامل
138
+
139
+ ## 📈 إحصائيات الإنتاج العامة
140
+ - **فترة التقرير:** {days_count} يوم
141
+ - **إجمالي إنتاج البيض:** {total_eggs:,} بيضة
142
+ - **متوسط الإنتاج اليومي:** {avg_eggs_per_day:.1f} بيضة/يوم
143
+ - **إجمالي استهلاك العلف:** {total_feed:.1f} كجم
144
+ - **متوسط استهلاك العلف:** {avg_feed_per_day:.1f} كجم/يوم
145
+
146
+ ## 🔄 كفاءة التحويل
147
+ - **معدل تحويل العلف:** {feed_conversion_ratio:.2f} كجم علف/بيضة
148
+ - **الاتجاه الحالي:** {trend}
149
+
150
+ ## 📊 تحليل الأداء
151
+ - **أعلى إنتاج يومي:** {max(record.get('eggs', 0) for record in production_data)} بيضة
152
+ - **أقل إنتاج يومي:** {min(record.get('eggs', 0) for record in production_data)} بيضة
153
+ - **متوسط الأسبوع الأخير:** {recent_avg_eggs:.1f} بيضة/يوم
154
+
155
+ ## 💡 التوصيات
156
+ """
157
+
158
+ # إضافة توصيات بناءً على الأداء
159
+ if feed_conversion_ratio > 0.15:
160
+ report += "- ⚠️ معدل تحويل العلف مرتفع، يُنصح بمراجعة جودة العلف ونوعه\n"
161
+
162
+ if recent_avg_eggs < avg_eggs_per_day * 0.9:
163
+ report += "- 📉 انخفاض في الإنتاج مؤخراً، يُنصح بفحص صحة القطيع\n"
164
+
165
+ if avg_eggs_per_day < 0.7: # أقل من 70% إنتاج
166
+ report += "- 🔍 إنتاجية منخفضة، يُنصح بمراجعة التغذية والإضاءة\n"
167
+
168
+ report += f"\n**تاريخ التقرير:** {datetime.now().strftime('%Y-%m-%d %H:%M')}"
169
+
170
+ # حفظ التقرير
171
+ reports = self.load_data("reports.json")
172
+ reports.append({
173
+ "date": datetime.now().isoformat(),
174
+ "type": "farm_performance",
175
+ "content": report
176
+ })
177
+ self.save_data("reports.json", reports)
178
+
179
+ return report
180
+
181
+ def create_alert(self, alert_type: str, message: str, priority: str) -> str:
182
+ """إنشاء تنبيه جديد"""
183
+ if not all([alert_type, message, priority]):
184
+ return "❌ يرجى ملء جميع الحقول"
185
+
186
+ alerts = self.load_data("alerts.json")
187
+
188
+ new_alert = {
189
+ "id": len(alerts) + 1,
190
+ "type": alert_type,
191
+ "message": message,
192
+ "priority": priority,
193
+ "created_at": datetime.now().isoformat(),
194
+ "status": "active"
195
+ }
196
+
197
+ alerts.append(new_alert)
198
+ self.save_data("alerts.json", alerts)
199
+
200
+ priority_emoji = {"عالي": "🔴", "متوسط": "🟡", "منخفض": "🟢"}
201
+ return f"✅ تم إنشاء التنبيه بنجاح!\n{priority_emoji.get(priority, '⚪')} {alert_type}: {message}"
202
+
203
+ def get_active_alerts(self) -> str:
204
+ """الحصول على التنبيهات النشطة"""
205
+ alerts = self.load_data("alerts.json")
206
+ active_alerts = [alert for alert in alerts if alert.get("status") == "active"]
207
+
208
+ if not active_alerts:
209
+ return "✅ لا توجد تنبيهات نشطة حالياً"
210
+
211
+ output = "## 🚨 التنبيهات النشطة\n\n"
212
+ priority_emoji = {"عالي": "🔴", "متوسط": "🟡", "منخفض": "🟢"}
213
+
214
+ for alert in sorted(active_alerts, key=lambda x: x.get("created_at", ""), reverse=True):
215
+ emoji = priority_emoji.get(alert.get("priority", ""), "⚪")
216
+ created_date = datetime.fromisoformat(alert.get("created_at", "")).strftime("%Y-%m-%d %H:%M")
217
+
218
+ output += f"### {emoji} {alert.get('type', 'غير محدد')}\n"
219
+ output += f"**الرسالة:** {alert.get('message', '')}\n"
220
+ output += f"**الأولوية:** {alert.get('priority', 'غير محدد')}\n"
221
+ output += f"**التاريخ:** {created_date}\n\n"
222
+ output += "---\n\n"
223
+
224
+ return output
225
+
226
+ def update_farm_settings(self, farm_name: str, location: str, capacity: int) -> str:
227
+ """تحدي�� إعدادات المزرعة"""
228
+ if not farm_name:
229
+ return "❌ اسم المزرعة مطلوب"
230
+
231
+ settings = self.load_data("farm_settings.json")
232
+ settings.update({
233
+ "farm_name": farm_name,
234
+ "location": location,
235
+ "capacity": capacity,
236
+ "last_updated": datetime.now().isoformat()
237
+ })
238
+
239
+ if self.save_data("farm_settings.json", settings):
240
+ return f"✅ تم تحديث إعدادات المزرعة بنجاح!\nالاسم: {farm_name}\nالموقع: {location}\nالسعة: {capacity:,} طائر"
241
+ else:
242
+ return "❌ حدث خطأ في حفظ الإعدادات"
243
+
244
+ # إنشاء مثيل من لوحة الإدارة
245
+ admin = AdminPanel()
246
+
247
+ def create_admin_interface():
248
+ """إنشاء واجهة لوحة الإدارة"""
249
+
250
+ with gr.Blocks(
251
+ title="🛠️ لوحة التحكم الإدارية - مساعد تربية الدجاج",
252
+ theme=gr.themes.Soft(
253
+ primary_hue="blue",
254
+ secondary_hue="emerald",
255
+ neutral_hue="slate",
256
+ font=[gr.themes.GoogleFont("Cairo"), "Arial", "sans-serif"]
257
+ ),
258
+ css="""
259
+ .admin-header {
260
+ background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 100%);
261
+ color: white;
262
+ padding: 2rem;
263
+ border-radius: 15px;
264
+ margin-bottom: 2rem;
265
+ text-align: center;
266
+ }
267
+ .admin-card {
268
+ background: white;
269
+ border-radius: 12px;
270
+ padding: 1.5rem;
271
+ box-shadow: 0 4px 15px rgba(0,0,0,0.1);
272
+ border: 1px solid #e2e8f0;
273
+ margin-bottom: 1rem;
274
+ }
275
+ .metric-grid {
276
+ display: grid;
277
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
278
+ gap: 1rem;
279
+ margin: 1rem 0;
280
+ }
281
+ .metric-item {
282
+ background: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%);
283
+ color: white;
284
+ padding: 1rem;
285
+ border-radius: 10px;
286
+ text-align: center;
287
+ }
288
+ """
289
+ ) as admin_app:
290
+
291
+ # العنوان الرئيسي
292
+ gr.HTML("""
293
+ <div class="admin-header">
294
+ <h1 style="font-size: 2.5rem; margin-bottom: 0.5rem;">🛠️ لوحة التحكم الإدارية</h1>
295
+ <p style="font-size: 1.2rem; opacity: 0.9;">إدارة شاملة لنظام مساعد تربية الدجاج الذكي</p>
296
+ </div>
297
+ """)
298
+
299
+ with gr.Tabs() as admin_tabs:
300
+
301
+ # تبويب إدارة المحتوى
302
+ with gr.Tab("📝 إدارة المحتوى"):
303
+ gr.HTML("<div class='admin-card'>")
304
+ gr.Markdown("### 🦠 إضافة مرض جديد")
305
+
306
+ with gr.Row():
307
+ with gr.Column():
308
+ disease_name = gr.Textbox(label="اسم المرض", placeholder="مثال: إنفلونزا الطيور")
309
+ disease_symptoms = gr.Textbox(
310
+ label="الأعراض (مفصولة بفواصل)",
311
+ placeholder="خمول، حمى، صعوبة تنفس",
312
+ lines=2
313
+ )
314
+ disease_treatment = gr.Textbox(
315
+ label="العلاج",
316
+ placeholder="وصف العلاج المناسب...",
317
+ lines=3
318
+ )
319
+
320
+ with gr.Column():
321
+ disease_prevention = gr.Textbox(
322
+ label="الوقاية",
323
+ placeholder="إجراءات الوقاية...",
324
+ lines=3
325
+ )
326
+ disease_hygiene = gr.Textbox(
327
+ label="النظافة",
328
+ placeholder="إجراءات النظافة المطلوبة...",
329
+ lines=3
330
+ )
331
+
332
+ add_disease_btn = gr.Button("➕ إضافة المرض", variant="primary", size="lg")
333
+ disease_status = gr.Markdown()
334
+
335
+ gr.HTML("</div>")
336
+
337
+ gr.HTML("<div class='admin-card'>")
338
+ gr.Markdown("### 🐔 إضافة سلالة جديدة")
339
+
340
+ with gr.Row():
341
+ with gr.Column():
342
+ breed_name = gr.Textbox(label="اسم السلالة", placeholder="مثال: براهما")
343
+ breed_type = gr.Dropdown(
344
+ label="نوع السلالة",
345
+ choices=["بياض", "لاحم", "ثنائي الغرض", "زينة"],
346
+ value="بياض"
347
+ )
348
+ breed_egg_production = gr.Textbox(
349
+ label="إنتاج البيض (اختياري)",
350
+ placeholder="200-250 بيضة/سنة"
351
+ )
352
+
353
+ with gr.Column():
354
+ breed_characteristics = gr.Textbox(
355
+ label="الخصائص",
356
+ placeholder="وصف خصائص السلالة...",
357
+ lines=3
358
+ )
359
+ breed_immunity = gr.Dropdown(
360
+ label="مستوى المناعة",
361
+ choices=["ممتازة", "جيدة", "متوسطة", "ضعيفة"],
362
+ value="جيدة"
363
+ )
364
+
365
+ add_breed_btn = gr.Button("➕ إضافة السلالة", variant="primary", size="lg")
366
+ breed_status = gr.Markdown()
367
+
368
+ gr.HTML("</div>")
369
+
370
+ # تبويب التقارير والإحصائيات
371
+ with gr.Tab("📊 التقارير والإحصائيات"):
372
+ gr.HTML("<div class='admin-card'>")
373
+ gr.Markdown("### 📈 تقارير الأداء")
374
+
375
+ generate_report_btn = gr.Button("📊 إنشاء تقرير شامل", variant="primary", size="lg")
376
+ farm_report_output = gr.Markdown()
377
+
378
+ gr.HTML("</div>")
379
+
380
+ # تبويب التنبيهات
381
+ with gr.Tab("🚨 إدارة التنبيهات"):
382
+ gr.HTML("<div class='admin-card'>")
383
+ gr.Markdown("### ➕ إنشاء تنبيه جديد")
384
+
385
+ with gr.Row():
386
+ with gr.Column():
387
+ alert_type = gr.Dropdown(
388
+ label="نوع التنبيه",
389
+ choices=["صحة القطيع", "نقص العلف", "انخفاض الإنتاج", "صيانة المعدات", "أخرى"],
390
+ value="صحة القطيع"
391
+ )
392
+ alert_priority = gr.Dropdown(
393
+ label="الأولوية",
394
+ choices=["عالي", "متوسط", "منخفض"],
395
+ value="متوسط"
396
+ )
397
+
398
+ with gr.Column():
399
+ alert_message = gr.Textbox(
400
+ label="رسالة التنبيه",
401
+ placeholder="وصف التنبيه...",
402
+ lines=3
403
+ )
404
+
405
+ create_alert_btn = gr.Button("🚨 إنشاء التنبيه", variant="primary", size="lg")
406
+ alert_status = gr.Markdown()
407
+
408
+ gr.HTML("</div>")
409
+
410
+ gr.HTML("<div class='admin-card'>")
411
+ gr.Markdown("### 📋 التنبيهات النشطة")
412
+
413
+ refresh_alerts_btn = gr.Button("🔄 تحديث التنبيهات", variant="secondary")
414
+ active_alerts_output = gr.Markdown()
415
+
416
+ gr.HTML("</div>")
417
+
418
+ # تبويب إعدادات المزرعة
419
+ with gr.Tab("⚙️ إعدادات المزرعة"):
420
+ gr.HTML("<div class='admin-card'>")
421
+ gr.Markdown("### 🏠 معلومات المزرعة")
422
+
423
+ # تحميل الإعدادات الحالية
424
+ current_settings = admin.load_data("farm_settings.json")
425
+
426
+ with gr.Row():
427
+ with gr.Column():
428
+ farm_name_input = gr.Textbox(
429
+ label="اسم المزرعة",
430
+ value=current_settings.get("farm_name", ""),
431
+ placeholder="اسم المزرعة"
432
+ )
433
+ farm_location_input = gr.Textbox(
434
+ label="الموقع",
435
+ value=current_settings.get("location", ""),
436
+ placeholder="المدينة، البلد"
437
+ )
438
+
439
+ with gr.Column():
440
+ farm_capacity_input = gr.Number(
441
+ label="السعة (عدد الطيور)",
442
+ value=current_settings.get("capacity", 1000),
443
+ minimum=1
444
+ )
445
+
446
+ update_settings_btn = gr.Button("💾 حفظ الإعدادات", variant="primary", size="lg")
447
+ settings_status = gr.Markdown()
448
+
449
+ gr.HTML("</div>")
450
+
451
+ # ربط الأحداث
452
+ add_disease_btn.click(
453
+ fn=admin.add_disease,
454
+ inputs=[disease_name, disease_symptoms, disease_treatment, disease_prevention, disease_hygiene],
455
+ outputs=[disease_status]
456
+ )
457
+
458
+ add_breed_btn.click(
459
+ fn=admin.add_breed,
460
+ inputs=[breed_name, breed_type, breed_egg_production, breed_characteristics, breed_immunity],
461
+ outputs=[breed_status]
462
+ )
463
+
464
+ generate_report_btn.click(
465
+ fn=admin.generate_farm_report,
466
+ outputs=[farm_report_output]
467
+ )
468
+
469
+ create_alert_btn.click(
470
+ fn=admin.create_alert,
471
+ inputs=[alert_type, alert_message, alert_priority],
472
+ outputs=[alert_status]
473
+ )
474
+
475
+ refresh_alerts_btn.click(
476
+ fn=admin.get_active_alerts,
477
+ outputs=[active_alerts_output]
478
+ )
479
+
480
+ update_settings_btn.click(
481
+ fn=admin.update_farm_settings,
482
+ inputs=[farm_name_input, farm_location_input, farm_capacity_input],
483
+ outputs=[settings_status]
484
+ )
485
+
486
+ # تحميل التنبيهات عند بدء التطبيق
487
+ admin_app.load(fn=admin.get_active_alerts, outputs=[active_alerts_output])
488
+
489
+ return admin_app
490
+
491
+ if __name__ == "__main__":
492
+ admin_interface = create_admin_interface()
493
+ admin_interface.launch(
494
+ server_name="0.0.0.0",
495
+ server_port=7861,
496
+ share=False,
497
+ show_error=True
498
+ )
499
+
app.py CHANGED
@@ -1,260 +1,494 @@
1
  import gradio as gr
 
 
 
 
2
  import json
3
- from chicken_ai import ChickenAI
 
4
 
5
- # إنشاء مثيل من المساعد الذكي
6
- ai_assistant = ChickenAI()
7
 
8
- def diagnose_symptoms(symptoms_text):
9
- """تشخيص الأمراض بناءً على الأعراض"""
10
- if not symptoms_text.strip():
11
- return "يرجى إدخال الأعراض التي تلاحظها على الدجاج."
 
 
 
 
 
12
 
13
- # تقسيم الأعراض
14
- symptoms = [s.strip() for s in symptoms_text.split(',') if s.strip()]
15
 
16
- # التشخيص
17
- diagnoses = ai_assistant.diagnose_disease(symptoms)
 
 
 
 
 
 
 
 
 
 
18
 
19
- if not diagnoses:
20
- return "لم أتمكن من تحديد مرض محتمل بناءً على الأعراض المذكورة. يرجى مراجعة طبيب بيطري."
 
 
 
 
 
 
21
 
22
- result = "## التشخيص المحتمل:\n\n"
 
 
 
 
23
 
24
- for i, (disease, confidence) in enumerate(diagnoses, 1):
25
- percentage = int(confidence * 100)
26
- result += f"### {i}. {disease.name} (احتمالية: {percentage}%)\n\n"
27
- result += f"**العلاج المقترح:**\n{disease.treatment}\n\n"
28
- result += f"**الوقاية:**\n{disease.prevention}\n\n"
29
- result += f"**النظافة:**\n{disease.hygiene}\n\n"
30
- result += "---\n\n"
31
 
32
- result += "⚠️ **تنبيه:** هذا التشخيص استرشادي فقط. يُنصح بمراجعة طبيب بيطري للحالات الشديدة."
 
 
33
 
34
- return result
35
 
36
- def generate_feeding_plan(age_weeks, chicken_type, condition):
37
- """توليد خطة تغذية"""
 
 
 
 
 
 
 
 
38
  try:
39
- age = int(age_weeks)
40
- except:
 
 
41
  return "يرجى إدخال عمر صحيح بالأسابيع."
 
 
 
 
 
42
 
43
- plan = ai_assistant.generate_nutrition_plan(age, chicken_type, condition)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
 
45
- if not plan:
46
- return "لم أتمكن من إنشاء خطة تغذية مناسبة. يرجى التحقق من البيانات المدخلة."
47
 
48
- result = f"## خطة التغذية المقترحة\n\n"
49
- result += f"**نوع العلف:** {plan.feed_type}\n\n"
50
- result += f"**الكمية اليومية:** {plan.daily_amount}\n\n"
51
- result += f"**عدد الوجبات:** {plan.meals_per_day}\n\n"
52
- result += f"**كمية الماء:** {plan.water_amount}\n\n"
53
- result += f"**إضافات مهمة:** {plan.supplements}\n\n"
54
 
55
- # إضافة نصائح عامة
56
- result += "### نصائح إضافية:\n\n"
57
- result += "• تأكد من نظافة المعالف والمشارب يومياً\n"
58
- result += "• وفر الماء النظيف باستمرار\n"
59
- result += "• راقب استهلاك العلف والماء يومياً\n"
60
- result += "• تدرج في تغيير نوع العلف خلال 7-10 أيام\n"
61
 
62
- return result
 
 
 
63
 
64
- def answer_general_question(question):
65
- """الإجابة على الأسئلة العامة"""
66
- if not question.strip():
67
- return "يرجى كتابة سؤالك."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
 
69
- answer = ai_assistant.answer_question(question)
70
- return answer
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
- def get_daily_tips():
73
- """الحصول على نصائح يومية"""
74
- tip = ai_assistant.get_daily_tip()
75
- prevention_tip = ai_assistant.get_prevention_tip()
76
-
77
- result = "## نصيحة اليوم 💡\n\n"
78
- result += f"**الرعاية اليومية:** {tip}\n\n"
79
- result += f"**الوقاية:** {prevention_tip}\n\n"
80
- result += "---\n\n"
81
- result += "💡 **تذكر:** الوقاية خير من العلاج!"
82
-
83
- return result
84
 
85
- # تصميم الواجهة
86
  with gr.Blocks(
87
- title="مساعد تربية الدجاج الذكي",
88
- theme=gr.themes.Soft(),
 
 
 
 
 
89
  css="""
90
  .gradio-container {
91
- font-family: 'Arial', sans-serif;
92
- direction: rtl;
93
- text-align: right;
94
  }
95
- .gr-button {
96
- background: linear-gradient(45deg, #4CAF50, #45a049);
97
- border: none;
98
  color: white;
99
- font-weight: bold;
 
 
 
100
  }
101
- .gr-button:hover {
102
- background: linear-gradient(45deg, #45a049, #4CAF50);
 
 
 
 
 
103
  }
104
- .header {
105
- text-align: center;
106
- padding: 20px;
 
 
 
 
 
 
 
107
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
108
  color: white;
 
109
  border-radius: 10px;
110
- margin-bottom: 20px;
 
111
  }
112
  """
113
  ) as app:
114
 
115
  # العنوان الرئيسي
116
  gr.HTML("""
117
- <div class="header">
118
- <h1>🐔 مساعد تربية الدجاج الذكي</h1>
119
- <p>مساعدك المتخصص في تربية الدجاج البلدي والصناعي</p>
120
- <p>تشخيص الأمراض • خطط التغذية • نصائح الرعاية • استشارات عامة</p>
 
 
 
121
  </div>
122
  """)
123
 
124
- with gr.Tabs():
 
125
 
126
- # تبويب تشخيص الأمراض
127
- with gr.Tab("🩺 تشخيص الأمراض"):
128
- gr.Markdown("### اكتب الأعراض التي تلاحظها على الدجاج (افصل بينها بفاصلة)")
 
 
129
 
130
  with gr.Row():
131
  with gr.Column(scale=2):
132
  symptoms_input = gr.Textbox(
133
- label="الأعراض",
134
- placeholder="مثال: خمول، فقدان شهية، إسهال، صعوبة في التنفس",
135
  lines=3,
136
- rtl=True
137
  )
138
- diagnose_btn = gr.Button("تشخيص المرض", variant="primary")
139
 
140
- with gr.Column(scale=1):
141
- gr.Markdown("""
142
- **أمثلة على الأعراض:**
143
- - خمول وكسل
144
- - فقدان الشهية
145
- - إسهال (أبيض، أخضر، دموي)
146
- - صعوبة في التنفس
147
- - عطس وسعال
148
- - تورم الوجه
149
- - انخفاض إنتاج البيض
150
- """)
151
 
152
- diagnosis_output = gr.Markdown(label="نتيجة التشخيص")
153
- diagnose_btn.click(diagnose_symptoms, inputs=symptoms_input, outputs=diagnosis_output)
154
 
155
- # تبويب خطط التغذية
156
- with gr.Tab("🌾 خطط التغذية"):
157
- gr.Markdown("### أدخل معلومات الدجاج لإنشاء خطة تغذية مناسبة")
 
 
158
 
159
  with gr.Row():
160
- age_input = gr.Number(
161
- label="العمر بالأسابيع",
162
- value=10,
163
- minimum=1,
164
- maximum=100
165
- )
166
- type_input = gr.Dropdown(
167
- label="نوع الدجاج",
168
- choices=["بياض", "لاحم", "مختلط"],
169
- value="بياض"
170
- )
171
- condition_input = gr.Dropdown(
172
- label="حالة الدجاج",
173
- choices=["صحي", "مريض", "نقاهة"],
174
- value="صحي"
175
- )
 
 
 
 
 
176
 
177
- feeding_btn = gr.Button("إنشاء خطة التغذية", variant="primary")
178
- feeding_output = gr.Markdown(label="خطة التغذية")
179
- feeding_btn.click(
180
- generate_feeding_plan,
181
- inputs=[age_input, type_input, condition_input],
182
- outputs=feeding_output
183
- )
184
 
185
- # تبويب الأسئلة العامة
186
- with gr.Tab(" استشارات عامة"):
187
- gr.Markdown("### اسأل أي سؤال حول تربية الدجاج")
 
 
188
 
189
  with gr.Row():
190
  with gr.Column(scale=2):
191
  question_input = gr.Textbox(
192
  label="سؤالك",
193
- placeholder="مثال: كيف أزيد من إنتاج البيض؟",
194
- lines=2,
195
- rtl=True
196
  )
197
- ask_btn = gr.Button("اسأل", variant="primary")
198
 
199
- with gr.Column(scale=1):
200
- gr.Markdown("""
201
- **أمثلة على الأسئلة:**
202
- - كيف أزيد من إنتاج البيض؟
203
- - ما هي أفضل طريقة لتنظيف الحظيرة؟
204
- - كم مرة أغير الماء؟
205
- - متى أحصن الدجاج؟
206
- - ما هي علامات الدجاج الصحي؟
207
- """)
208
 
209
- answer_output = gr.Markdown(label="الإجابة")
210
- ask_btn.click(answer_general_question, inputs=question_input, outputs=answer_output)
211
 
212
- # تبويب النصائح اليومية
213
- with gr.Tab("💡 نصائح يومية"):
214
- gr.Markdown("### احصل على نصائح يومية لرعاية دجاجك")
 
 
215
 
216
- tips_btn = gr.Button("احصل على نصيحة اليوم", variant="primary")
217
- tips_output = gr.Markdown(label="نصائح اليوم")
218
- tips_btn.click(get_daily_tips, outputs=tips_output)
 
 
 
 
 
 
 
 
219
 
220
- # عرض بعض النصائح الثابتة
221
- gr.Markdown("""
222
- ### نصائح سريعة:
 
 
 
 
223
 
224
- 🔹 **الماء النظيف:** غير الماء مرتين يومياً على الأقل
 
 
 
 
 
225
 
226
- 🔹 **التهوية:** تأكد من وجود تهوية جيدة دون تيارات هوائية مباشرة
 
 
 
 
 
 
227
 
228
- 🔹 **النظافة:** قلب الفرشة يومياً وأزل المبللة منها
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
 
230
- 🔹 **المراقبة:** افحص الدجاج يومياً لملاحظة أي تغييرات
 
 
 
 
 
231
 
232
- 🔹 **التغذية:** استخدم علف مناسب للمرحلة العمرية
 
 
 
 
233
 
234
- 🔹 **الإضاءة:** وفر 14-16 ساعة إضاءة للدجاج البياض
235
- """)
236
 
237
- # معلومات إضافية
238
- gr.Markdown("""
239
- ---
 
 
 
 
 
 
 
 
 
240
 
241
- ### ⚠️ تنبيهات مهمة:
 
 
 
 
242
 
243
- - هذا المساعد يقدم نصائح استرشادية فقط
244
- - في الحالات الشديدة، يُنصح بمراجعة طبيب بيطري
245
- - اتبع برامج التحصين الموصى بها في منطقتك
246
- - احتفظ بسجلات للعلاجات والتحصينات
 
247
 
248
- ### 📞 للطوارئ:
249
- - اعزل الطيور المريضة فوراً
250
- - لا تخلط الأدوية بدون استشارة
251
- - التزم بفترات السحب للأدوية
252
 
253
- ---
 
 
 
 
 
 
 
254
 
255
- **تم تطوير هذا المساعد بواسطة:** Manus AI
256
- **الهدف:** مساعدة مربي الدجاج الصغار والمتوسطين على تحسين إنتاجهم ورعاية دجاجهم
257
- """)
258
 
259
  # تشغيل التطبيق
260
  if __name__ == "__main__":
@@ -262,6 +496,7 @@ if __name__ == "__main__":
262
  server_name="0.0.0.0",
263
  server_port=7860,
264
  share=False,
265
- show_error=True
 
266
  )
267
 
 
1
  import gradio as gr
2
+ import pandas as pd
3
+ import plotly.graph_objects as go
4
+ import plotly.express as px
5
+ from datetime import datetime, timedelta
6
  import json
7
+ import os
8
+ from chicken_ai import AdvancedChickenAI
9
 
10
+ # إنشاء مثيل من نموذج الذكاء الاصطناعي
11
+ ai = AdvancedChickenAI()
12
 
13
+ # متغيرات عامة لتخزين البيانات
14
+ production_data = []
15
+ health_records = []
16
+ feed_consumption = []
17
+
18
+ def format_diagnosis_results(results):
19
+ """تنسيق نتائج التشخيص"""
20
+ if not results:
21
+ return "لم يتم العثور على تشخيص مطابق للأعراض المدخلة."
22
 
23
+ output = "## 🔍 نتائج التشخيص\n\n"
 
24
 
25
+ for i, result in enumerate(results, 1):
26
+ confidence_percentage = result.probability * 100
27
+ confidence_emoji = "🔴" if confidence_percentage >= 80 else "🟡" if confidence_percentage >= 60 else "🟢"
28
+
29
+ output += f"### {confidence_emoji} التشخيص {i}: {result.disease}\n"
30
+ output += f"**نسبة الثقة:** {confidence_percentage:.1f}%\n"
31
+ output += f"**الأعراض المطابقة:** {', '.join(result.symptoms_matched)}\n\n"
32
+
33
+ output += f"**💊 العلاج:**\n{result.treatment}\n\n"
34
+ output += f"**🛡️ الوقاية:**\n{result.prevention}\n\n"
35
+ output += f"**🧼 النظافة:**\n{result.hygiene}\n\n"
36
+ output += "---\n\n"
37
 
38
+ return output
39
+
40
+ def format_nutrition_plan(plan):
41
+ """تنسيق خطة التغذية"""
42
+ output = f"## 🍽️ خطة التغذية المخصصة\n\n"
43
+ output += f"**العمر:** {plan.age_weeks} أسبوع\n"
44
+ output += f"**نوع الدجاج:** {plan.chicken_type}\n"
45
+ output += f"**الحالة:** {plan.condition}\n\n"
46
 
47
+ output += f"### 📊 المتطلبات الغذائية:\n"
48
+ output += f"- **البروتين:** {plan.protein_percentage}%\n"
49
+ output += f"- **الطاقة:** {plan.energy_kcal} كيلو كالوري/كجم\n"
50
+ output += f"- **الكمية اليومية:** {plan.daily_amount} جرام\n"
51
+ output += f"- **عدد الوجبات:** {plan.feeding_frequency} وجبات يومياً\n\n"
52
 
53
+ output += f"### 💊 المكملات الغذائية:\n"
54
+ for supplement in plan.supplements:
55
+ output += f"- {supplement}\n"
 
 
 
 
56
 
57
+ output += f"\n### 🌱 العلائق البديلة المقترحة:\n"
58
+ for feed in plan.alternative_feeds:
59
+ output += f"- {feed}\n"
60
 
61
+ return output
62
 
63
+ def diagnose_disease_interface(symptoms):
64
+ """واجهة تشخيص الأمراض"""
65
+ if not symptoms.strip():
66
+ return "يرجى إدخال الأعراض أولاً."
67
+
68
+ results = ai.diagnose_disease(symptoms)
69
+ return format_diagnosis_results(results)
70
+
71
+ def generate_nutrition_plan_interface(age, chicken_type, condition):
72
+ """واجهة توليد خطة التغذية"""
73
  try:
74
+ age_weeks = int(age)
75
+ plan = ai.generate_nutrition_plan(age_weeks, chicken_type, condition)
76
+ return format_nutrition_plan(plan)
77
+ except ValueError:
78
  return "يرجى إدخال عمر صحيح بالأسابيع."
79
+
80
+ def answer_question_interface(question):
81
+ """واجهة الأسئلة والأجوبة"""
82
+ if not question.strip():
83
+ return "يرجى كتابة سؤالك أولاً."
84
 
85
+ answer = ai.answer_general_question(question)
86
+ return f"## 💬 الإجابة:\n\n{answer}"
87
+
88
+ def get_daily_tips_interface():
89
+ """واجهة النصائح اليومية"""
90
+ tips = ai.get_daily_tips()
91
+ output = "## 📝 نصائح يومية لتربية الدجاج\n\n"
92
+ for i, tip in enumerate(tips, 1):
93
+ output += f"{i}. {tip}\n\n"
94
+ return output
95
+
96
+ def get_breed_info_interface(breed_name):
97
+ """واجهة معلومات السلالات"""
98
+ if not breed_name.strip():
99
+ return "يرجى اختيار سلالة من القائمة."
100
+
101
+ breed_info = ai.get_breed_info(breed_name)
102
+ if not breed_info:
103
+ return f"لم يتم العثور على معلومات عن سلالة {breed_name}."
104
 
105
+ output = f"## 🐔 معلومات سلالة {breed_name}\n\n"
106
+ output += f"**النوع:** {breed_info['type']}\n"
107
 
108
+ if 'egg_production' in breed_info:
109
+ output += f"**إنتاج البيض:** {breed_info['egg_production']}\n"
110
+ output += f"**لون البيض:** {breed_info['egg_color']}\n"
 
 
 
111
 
112
+ if 'growth_rate' in breed_info:
113
+ output += f"**معدل النمو:** {breed_info['growth_rate']}\n"
 
 
 
 
114
 
115
+ output += f"**الخصائص:** {breed_info['characteristics']}\n"
116
+ output += f"**المناعة:** {breed_info['immunity']}\n"
117
+
118
+ return output
119
 
120
+ def add_production_record(date, eggs_count, feed_consumed, notes):
121
+ """إضافة سجل إنتاج"""
122
+ global production_data
123
+
124
+ try:
125
+ record = {
126
+ "date": date,
127
+ "eggs": int(eggs_count) if eggs_count else 0,
128
+ "feed": float(feed_consumed) if feed_consumed else 0.0,
129
+ "notes": notes or ""
130
+ }
131
+ production_data.append(record)
132
+
133
+ # حفظ البيانات في ملف
134
+ with open('/home/ubuntu/chicken_assistant/production_data.json', 'w', encoding='utf-8') as f:
135
+ json.dump(production_data, f, ensure_ascii=False, indent=2)
136
+
137
+ return f"✅ تم إضافة السجل بنجاح!\nالتاريخ: {date}\nعدد البيض: {record['eggs']}\nالعلف المستهلك: {record['feed']} كجم"
138
 
139
+ except ValueError:
140
+ return "❌ خطأ في البيانات المدخلة. يرجى التأكد من صحة الأرقام."
141
+
142
+ def generate_production_chart():
143
+ """إنشاء مخطط الإنتاج"""
144
+ if not production_data:
145
+ return None
146
+
147
+ df = pd.DataFrame(production_data)
148
+ df['date'] = pd.to_datetime(df['date'])
149
+ df = df.sort_values('date')
150
+
151
+ # مخطط إنتاج البيض
152
+ fig = go.Figure()
153
+
154
+ fig.add_trace(go.Scatter(
155
+ x=df['date'],
156
+ y=df['eggs'],
157
+ mode='lines+markers',
158
+ name='إنتاج البيض',
159
+ line=dict(color='#FF6B6B', width=3),
160
+ marker=dict(size=8)
161
+ ))
162
+
163
+ fig.update_layout(
164
+ title='📈 تطور إنتاج البيض',
165
+ xaxis_title='التاريخ',
166
+ yaxis_title='عدد البيض',
167
+ font=dict(family="Arial", size=12),
168
+ plot_bgcolor='white',
169
+ paper_bgcolor='white',
170
+ showlegend=True
171
+ )
172
+
173
+ return fig
174
+
175
+ def generate_feed_consumption_chart():
176
+ """إنشاء مخطط استهلاك العلف"""
177
+ if not production_data:
178
+ return None
179
+
180
+ df = pd.DataFrame(production_data)
181
+ df['date'] = pd.to_datetime(df['date'])
182
+ df = df.sort_values('date')
183
+
184
+ fig = go.Figure()
185
+
186
+ fig.add_trace(go.Bar(
187
+ x=df['date'],
188
+ y=df['feed'],
189
+ name='استهلاك العلف',
190
+ marker_color='#4ECDC4'
191
+ ))
192
+
193
+ fig.update_layout(
194
+ title='📊 استهلاك العلف اليومي',
195
+ xaxis_title='التاريخ',
196
+ yaxis_title='الكمية (ك��م)',
197
+ font=dict(family="Arial", size=12),
198
+ plot_bgcolor='white',
199
+ paper_bgcolor='white'
200
+ )
201
+
202
+ return fig
203
+
204
+ def load_existing_data():
205
+ """تحميل البيانات الموجودة"""
206
+ global production_data
207
+
208
+ try:
209
+ if os.path.exists('/home/ubuntu/chicken_assistant/production_data.json'):
210
+ with open('/home/ubuntu/chicken_assistant/production_data.json', 'r', encoding='utf-8') as f:
211
+ production_data = json.load(f)
212
+ except:
213
+ production_data = []
214
 
215
+ # تحميل البيانات عند بدء التطبيق
216
+ load_existing_data()
 
 
 
 
 
 
 
 
 
 
217
 
218
+ # إنشاء الواجهة الرئيسية
219
  with gr.Blocks(
220
+ title="🐔 مساعد تربية الدجاج الذكي",
221
+ theme=gr.themes.Soft(
222
+ primary_hue="emerald",
223
+ secondary_hue="blue",
224
+ neutral_hue="slate",
225
+ font=[gr.themes.GoogleFont("Cairo"), "Arial", "sans-serif"]
226
+ ),
227
  css="""
228
  .gradio-container {
229
+ max-width: 1200px !important;
230
+ margin: auto !important;
 
231
  }
232
+ .main-header {
233
+ text-align: center;
234
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
235
  color: white;
236
+ padding: 2rem;
237
+ border-radius: 15px;
238
+ margin-bottom: 2rem;
239
+ box-shadow: 0 10px 30px rgba(0,0,0,0.1);
240
  }
241
+ .feature-card {
242
+ background: white;
243
+ border-radius: 12px;
244
+ padding: 1.5rem;
245
+ box-shadow: 0 4px 15px rgba(0,0,0,0.1);
246
+ border: 1px solid #e2e8f0;
247
+ transition: transform 0.3s ease;
248
  }
249
+ .feature-card:hover {
250
+ transform: translateY(-5px);
251
+ box-shadow: 0 8px 25px rgba(0,0,0,0.15);
252
+ }
253
+ .tab-nav {
254
+ background: #f8fafc;
255
+ border-radius: 10px;
256
+ padding: 0.5rem;
257
+ }
258
+ .metric-card {
259
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
260
  color: white;
261
+ padding: 1rem;
262
  border-radius: 10px;
263
+ text-align: center;
264
+ margin: 0.5rem;
265
  }
266
  """
267
  ) as app:
268
 
269
  # العنوان الرئيسي
270
  gr.HTML("""
271
+ <div class="main-header">
272
+ <h1 style="font-size: 2.5rem; margin-bottom: 0.5rem; font-weight: bold;">
273
+ 🐔 مساعد تربية الدجاج الذكي
274
+ </h1>
275
+ <p style="font-size: 1.2rem; opacity: 0.9; margin: 0;">
276
+ نظام متطور لإدارة ومراقبة تربية الدجاج مع ذكاء اصطناعي متقدم
277
+ </p>
278
  </div>
279
  """)
280
 
281
+ # التبويبات الرئيسية
282
+ with gr.Tabs(elem_classes="tab-nav") as tabs:
283
 
284
+ # تبويب التشخيص
285
+ with gr.Tab("🔍 تشخيص الأمراض", elem_id="diagnosis-tab"):
286
+ gr.HTML("<div class='feature-card'>")
287
+ gr.Markdown("### 🩺 نظام التشخيص الذكي")
288
+ gr.Markdown("أدخل الأعراض التي تلاحظها على الدجاج وسيقوم النظام بتحليلها وتقديم التشخيص المحتمل مع العلاج المناسب.")
289
 
290
  with gr.Row():
291
  with gr.Column(scale=2):
292
  symptoms_input = gr.Textbox(
293
+ label="الأعراض الملاحظة",
294
+ placeholder="مثال: خمول، فقدان شهية، إسهال أخضر، صعوبة في التنفس",
295
  lines=3,
296
+ info="اكتب الأعراض مفصولة بفواصل"
297
  )
298
+ diagnose_btn = gr.Button("🔍 تشخيص المرض", variant="primary", size="lg")
299
 
300
+ with gr.Column(scale=3):
301
+ diagnosis_output = gr.Markdown(label="نتائج التشخيص")
 
 
 
 
 
 
 
 
 
302
 
303
+ gr.HTML("</div>")
 
304
 
305
+ # تبويب التغذية
306
+ with gr.Tab("🍽️ خطط التغذية", elem_id="nutrition-tab"):
307
+ gr.HTML("<div class='feature-card'>")
308
+ gr.Markdown("### 🌾 مولد خطط التغذية المتقدم")
309
+ gr.Markdown("احصل على خطة تغذية مخصصة تتضمن العلائق البديلة والمكملات الغذائية المناسبة.")
310
 
311
  with gr.Row():
312
+ with gr.Column():
313
+ age_input = gr.Number(
314
+ label="العمر بالأسابيع",
315
+ value=10,
316
+ minimum=1,
317
+ maximum=100
318
+ )
319
+ chicken_type = gr.Dropdown(
320
+ label="نوع الدجاج",
321
+ choices=["بياض", "لاحم", "مختلط"],
322
+ value="بياض"
323
+ )
324
+ condition = gr.Dropdown(
325
+ label="الحالة الصحية",
326
+ choices=["صحي", "مريض", "نقاهة"],
327
+ value="صحي"
328
+ )
329
+ nutrition_btn = gr.Button("🍽️ إنشاء خطة التغذية", variant="primary", size="lg")
330
+
331
+ with gr.Column(scale=2):
332
+ nutrition_output = gr.Markdown(label="خطة التغذية")
333
 
334
+ gr.HTML("</div>")
 
 
 
 
 
 
335
 
336
+ # تبويب الاستشارات
337
+ with gr.Tab("💬 استشارات عامة", elem_id="consultation-tab"):
338
+ gr.HTML("<div class='feature-card'>")
339
+ gr.Markdown("### 🤖 مساعد الاستشارات الذكي")
340
+ gr.Markdown("اطرح أي سؤال حول تربية الدجاج واحصل على إجابة مفصلة من خبير الذكاء الاصطناعي.")
341
 
342
  with gr.Row():
343
  with gr.Column(scale=2):
344
  question_input = gr.Textbox(
345
  label="سؤالك",
346
+ placeholder="مثال: كيف أزيد من إنتاج البيض؟ أو ما هي أفضل طريقة لتنظيف الحظيرة؟",
347
+ lines=3
 
348
  )
349
+ ask_btn = gr.Button("💬 اسأل الخبير", variant="primary", size="lg")
350
 
351
+ with gr.Column(scale=3):
352
+ answer_output = gr.Markdown(label="الإجابة")
 
 
 
 
 
 
 
353
 
354
+ gr.HTML("</div>")
 
355
 
356
+ # تبويب السلالات
357
+ with gr.Tab("🐔 معلومات السلالات", elem_id="breeds-tab"):
358
+ gr.HTML("<div class='feature-card'>")
359
+ gr.Markdown("### 📚 دليل سلالات الدجاج")
360
+ gr.Markdown("تعرف على خصائص وإنتاجية السلالات المختلفة لاختيار الأنسب لمشروعك.")
361
 
362
+ with gr.Row():
363
+ with gr.Column():
364
+ breed_selector = gr.Dropdown(
365
+ label="اختر السلالة",
366
+ choices=list(ai.breeds_db.keys()),
367
+ value="ليجهورن"
368
+ )
369
+ breed_info_btn = gr.Button("📖 عرض المعلومات", variant="primary", size="lg")
370
+
371
+ with gr.Column(scale=2):
372
+ breed_info_output = gr.Markdown(label="معلومات السلالة")
373
 
374
+ gr.HTML("</div>")
375
+
376
+ # تبويب النصائح
377
+ with gr.Tab("📝 نصائح يومية", elem_id="tips-tab"):
378
+ gr.HTML("<div class='feature-card'>")
379
+ gr.Markdown("### 💡 نصائح الخبراء")
380
+ gr.Markdown("احصل على نصائح يومية مفيدة لتحسين إدارة مزرعتك وزيادة الإنتاجية.")
381
 
382
+ with gr.Row():
383
+ with gr.Column():
384
+ tips_btn = gr.Button("📝 احصل على نصائح جديدة", variant="primary", size="lg")
385
+
386
+ with gr.Column(scale=2):
387
+ tips_output = gr.Markdown(label="النصائح اليومية")
388
 
389
+ gr.HTML("</div>")
390
+
391
+ # تبويب لوحة التحكم
392
+ with gr.Tab("📊 لوحة التحكم", elem_id="dashboard-tab"):
393
+ gr.HTML("<div class='feature-card'>")
394
+ gr.Markdown("### 📈 إدارة الإنتاج والمراقبة")
395
+ gr.Markdown("سجل بيانات الإنتاج اليومية وراقب الأداء من خلال المخططات التفاعلية.")
396
 
397
+ # قسم إدخال البيانات
398
+ with gr.Row():
399
+ with gr.Column():
400
+ gr.Markdown("#### ➕ إضافة سجل جديد")
401
+ record_date = gr.Textbox(label="التاريخ", value=datetime.now().strftime("%Y-%m-%d"), placeholder="YYYY-MM-DD")
402
+ eggs_count = gr.Number(label="عدد البيض", value=0, minimum=0)
403
+ feed_consumed = gr.Number(label="العلف المستهلك (كجم)", value=0.0, minimum=0, step=0.1)
404
+ notes = gr.Textbox(label="ملاحظات", placeholder="أي ملاحظات إضافية...")
405
+ add_record_btn = gr.Button("➕ إضافة السجل", variant="primary")
406
+ record_status = gr.Markdown()
407
+
408
+ with gr.Column():
409
+ gr.Markdown("#### 📊 إحصائيات سريعة")
410
+ if production_data:
411
+ total_eggs = sum(record.get('eggs', 0) for record in production_data)
412
+ total_feed = sum(record.get('feed', 0) for record in production_data)
413
+ avg_eggs = total_eggs / len(production_data) if production_data else 0
414
+
415
+ gr.HTML(f"""
416
+ <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;">
417
+ <div class="metric-card">
418
+ <h3>🥚 إجمالي البيض</h3>
419
+ <h2>{total_eggs}</h2>
420
+ </div>
421
+ <div class="metric-card">
422
+ <h3>🌾 إجمالي العلف</h3>
423
+ <h2>{total_feed:.1f} كجم</h2>
424
+ </div>
425
+ <div class="metric-card">
426
+ <h3>📈 متوسط البيض</h3>
427
+ <h2>{avg_eggs:.1f}/يوم</h2>
428
+ </div>
429
+ <div class="metric-card">
430
+ <h3>📅 عدد السجلات</h3>
431
+ <h2>{len(production_data)}</h2>
432
+ </div>
433
+ </div>
434
+ """)
435
 
436
+ # قسم المخططات
437
+ with gr.Row():
438
+ with gr.Column():
439
+ production_chart = gr.Plot(label="📈 مخطط إنتاج البيض")
440
+ with gr.Column():
441
+ feed_chart = gr.Plot(label="📊 مخطط استهلاك العلف")
442
 
443
+ # تحديث المخططات عند بدء التطبيق
444
+ app.load(
445
+ fn=lambda: (generate_production_chart(), generate_feed_consumption_chart()),
446
+ outputs=[production_chart, feed_chart]
447
+ )
448
 
449
+ gr.HTML("</div>")
 
450
 
451
+ # ربط الأحداث
452
+ diagnose_btn.click(
453
+ fn=diagnose_disease_interface,
454
+ inputs=[symptoms_input],
455
+ outputs=[diagnosis_output]
456
+ )
457
+
458
+ nutrition_btn.click(
459
+ fn=generate_nutrition_plan_interface,
460
+ inputs=[age_input, chicken_type, condition],
461
+ outputs=[nutrition_output]
462
+ )
463
 
464
+ ask_btn.click(
465
+ fn=answer_question_interface,
466
+ inputs=[question_input],
467
+ outputs=[answer_output]
468
+ )
469
 
470
+ breed_info_btn.click(
471
+ fn=get_breed_info_interface,
472
+ inputs=[breed_selector],
473
+ outputs=[breed_info_output]
474
+ )
475
 
476
+ tips_btn.click(
477
+ fn=get_daily_tips_interface,
478
+ outputs=[tips_output]
479
+ )
480
 
481
+ add_record_btn.click(
482
+ fn=add_production_record,
483
+ inputs=[record_date, eggs_count, feed_consumed, notes],
484
+ outputs=[record_status]
485
+ ).then(
486
+ fn=lambda: (generate_production_chart(), generate_feed_consumption_chart()),
487
+ outputs=[production_chart, feed_chart]
488
+ )
489
 
490
+ # تحميل النصائح عند بدء التطبيق
491
+ app.load(fn=get_daily_tips_interface, outputs=[tips_output])
 
492
 
493
  # تشغيل التطبيق
494
  if __name__ == "__main__":
 
496
  server_name="0.0.0.0",
497
  server_port=7860,
498
  share=False,
499
+ show_error=True,
500
+ quiet=False
501
  )
502
 
chicken_ai.py CHANGED
@@ -1,13 +1,15 @@
1
- import json
2
  import re
 
3
  from typing import Dict, List, Tuple, Optional
4
  from dataclasses import dataclass
5
  from datetime import datetime
6
 
7
  @dataclass
8
- class Disease:
9
- name: str
10
- symptoms: List[str]
 
11
  treatment: str
12
  prevention: str
13
  hygiene: str
@@ -16,275 +18,429 @@ class Disease:
16
  class NutritionPlan:
17
  age_weeks: int
18
  chicken_type: str
19
- feed_type: str
20
- daily_amount: str
21
- meals_per_day: str
22
- water_amount: str
23
- supplements: str
 
 
24
 
25
- class ChickenAI:
26
  def __init__(self):
27
- self.diseases = self._load_diseases()
28
- self.nutrition_plans = self._load_nutrition_plans()
29
- self.daily_tips = self._load_daily_tips()
30
- self.prevention_tips = self._load_prevention_tips()
31
 
32
- def _load_diseases(self) -> List[Disease]:
33
- """تحميل قاعدة بيانات الأمراض"""
34
- diseases = [
35
- Disease(
36
- name="نيوكاسل",
37
- symptoms=["خمول شديد", "فقدان شهية", "إسهال مائي أخضر", "صعوبة في التنفس", "عطس", "سعال", "تورم الوجه والرأس", "شلل الأجنحة والأرجل", "التواء الرقبة", "انخفاض حاد في إنتاج البيض"],
38
- treatment="لا يوجد علاج فعال للمرض نفسه، ولكن يمكن تقديم مضادات حيوية للوقاية من العدوى البكتيرية الثانوية. التركيز على الرعاية الداعمة (توفير الماء والغذاء).",
39
- prevention=لتحصين المنتظم (لقاحات حية وميتة عزل الطيور الجديدة، نظافة وتطهير الحظائر بشكل دوري، التحكم في حركة الزوار.",
40
- hygiene="تطهير شامل للمعدات والحظائر بمطهرات فعالة بعد تفشي المرض."
41
- ),
42
- Disease(
43
- name="الكوكسيديا",
44
- symptoms=["خمول", "كششان", "فقدان شهية", "إسهال دموي أو مخاطي", "شحوب العرف والدلايات", "انخفاض النمو أو إنتاج البيض"],
45
- treatment="أدوية مضادة للكوكسيديا (مثل الأمبروليوم، السلفا)، يمكن إضافتها لماء الشرب أو العلف.",
46
- prevention="استخدام علف يحتوي على مضادات كوكسيديا، نظافة الفرشة الجيدة والجافة، تجنب الرطوبة الزائدة، توفير مساحة كافية للطيور.",
47
- hygiene="إزالة الفرشة المبللة والمتسخة بانتظام، تطهير المعالف والمشارب."
48
- ),
49
- Disease(
50
- name="الإسهال الأبيض",
51
- symptoms=["خمول", "تكتل الريش حول فتحة المجمع", "إسهال أبيض طباشيري", "صعوبة في التنفس", "ارتفاع معدل النفوق"],
52
- treatment="مضادات حيوية مثل السلفا أو الفلورفينيكول.",
53
- prevention="شراء كتاكيت من مصادر موثوقة وخالية من المرض، اختبار الطيور الأم، نظافة وتطهير الفقاسات والحظائر.",
54
- hygiene="تطهير شامل للمعدات والحظائر، التخلص السليم من الطيور النافقة."
55
- ),
56
- Disease(
57
- name=دري الدجاج",
58
- symptoms=["ظهور بثور أو تقرحات على الأجزاء غير المريشة", "تقرحات على العرف والدلايات", "تقرحات حول العينين", "تقرحات داخل الفم والحلق"],
59
- treatment="لا يوجد علاج محدد، ولكن يمكن استخدام المطهرات الموضعية للبثور الخارجية، ومضادات حيوية للوقاية من العدوى الثانوية.",
60
- prevention="التحصين (لقاح الجدري)، مكافحة الحشرات (الناموس) التي تنقل المرض.",
61
- hygiene=طهير الحظائر والمعدات، التخلص من الطيور المصابة بشدة."
62
- ),
63
- Disease(
64
- name="التهاب الشعب الهوائية المعدي",
65
- symptoms=["عطس", "سعال", "رشح أنفي", "صعوبة في التنفس", "انخفاض حاد في إنتاج البيض", "بيض مشوه أو رقيق القشرة", "انخفاض جودة البيض"],
66
- treatment="لا يوجد علاج محدد للفيروس، ولكن يمكن استخدام مضادات حيوية للسيطرة على العدوى البكتيرية الثانوية، وفيتامينات لدعم الطيور.",
67
- prevention=لتحصين المنتظم، تحسين التهوية، تقليل الإجهاد.",
68
- hygiene=ظافة وتطهير الحظائر والمعدات بانتظام."
69
- ),
70
- Disease(
71
- name=لمايكوبلازما",
72
- symptoms=["سعال",طس", "رشح أنفي", "تورم الجيوب الأنفية", "التهاب العين", "صعوبة في التنفس", "انخفاض النمو وإنتاج البيض"],
73
- treatment="مضادات حيوية مثل التايلوزين، التيلمايكوسين، أو الدوكسيسايكلين.",
74
- prevention="شراء كتاكيت من قطعان خالية من المايكوبلازما، نظافة الحظائر، تقليل الغبار والأمونيا.",
75
- hygiene=طهير شامل للحظائر والمعدات بعد كل دورة إنتاج."
76
- ),
77
- Disease(
78
- name="الكوليرا",
79
- symptoms=["نفوق مفاجئ", "خمول", "فقدان شهية", "إسهال أخضر مصفر", "تورم المفاصل والعرف والدلايات", "صعوبة في التنفس"],
80
- treatment="مضادات حيوية مثل السلفا أو التتراسيكلين.",
81
- prevention="التحصين، مكافحة القوارض والطيور البرية، نظافة الحظائر ومصادر المياه.",
82
- hygiene="تطهير شامل للحظائر والمعدات، التخلص السليم من الطيور النافقة."
83
- ),
84
- Disease(
85
- name="ماريك",
86
- symptoms=["شلل تدريجي في الأجنحة والأرجل", "أورام داخلية", "شلل العين", "العين الرمادية", "نفوق"],
87
- treatment="لا يوجد علاج.",
88
- prevention="التحصين في عمر يوم واحد (ضروري جداً)، شراء كتاكيت من مصادر موثوقة.",
89
- hygiene="نظافة وتطهير الحظائر بشكل جيد."
90
- ),
91
- Disease(
92
- name="التهاب الأمعاء النخري",
93
- symptoms=["خمول", "كششان", "إسهال", "نفوق مفاجئ", "انتفاخ البطن", "ريش منتفش"],
94
- treatment="مضادات حيوية مثل الأموكسيسيلين أو الباسيتراسين.",
95
- prevention="إدارة جيدة للفرشة، تجنب التغيرات المفاجئة في العلف، استخدام البروبيوتيك.",
96
- hygiene=زالة الفرشة المبللة، تطهير الحظائر."
97
- ),
98
- Disease(
99
- name="الإجهاد الحراري",
100
- symptoms=["لهث شديد", "فتح الفم للتنفس", "رفع الأجنحة بعيداً عن الجسم", "انخفاض استهلاك العلف", "انخفاض إنتاج البيض", "نفوق"],
101
- treatment="تبريد الحظيرة (رش الماء، مراوح)، توفير ماء بارد ونظيف، إضافة فيتامينات وأملاح معدنية لماء الشرب.",
102
- prevention=وفير تهوية جيدة، عزل الحظائر، توفير الظل، تقليل كثافة الطيور.",
103
- hygiene="الحفاظ على بيئة نظيفة يقلل من الإجهاد العام."
104
- )
105
- ]
106
- return diseases
107
 
108
- def _load_nutrition_plans(self) -> Dict[str, List[NutritionPlan]]:
109
- """تحميل خطط التغذية"""
110
- plans = {
111
- "كتاكيت": [
112
- NutritionPlan(1, "كتاكيت", "علف بادئ بروتين 22-24%", "10-15 جرام يومياً", "6-8 وجبات", "30-50 مل", "فيتامينات ومعادن، جلوكوز 5%"),
113
- NutritionPlan(2, "كتاكيت", "علف بادئ بروتين 20-22%", "20-25 جرام يومياً", "5-6 وجبات", "50-80 مل", "فيتامينات مرة أسبوعياً"),
114
- NutritionPlan(3, "كتاكيت", "علف بادئ بروتين 18-20%", "35-45 جرام يومياً", "4-5 وجبات", "80-120 مل", "خضروات مقطعة صغيرة"),
115
- NutritionPlan(4, "كتاكيت", "علف بادئ بروتين 18-20%", "35-45 جرام يومياً", "4-5 وجبات", "80-120 مل", "خضروات مقطعة صغيرة"),
116
- NutritionPlan(5, "كتاكيت", "علف نامي بروتين 16-18%", "50-70 جرام يومياً", "3-4 وجبات", "120-150 مل", "حبوب مخلوطة"),
117
- NutritionPlan(6, "كتاكيت", "علف نامي بروتين 16-18%", "50-70 جرام يومياً", "3-4 وجبات", "120-150 مل", "حبوب مخلوطة")
118
- ],
119
- "نامي": [
120
- NutritionPlan(8, "نامي", "علف نامي بروتين 16-18%", "70-90 جرام يومياً", "3 وجبات", "150-200 مل", "حبوب مخلوطة 20%"),
121
- NutritionPlan(12, "نامي", "علف نامي بروتين 14-16%", "90-110 جرام يومياً", "2-3 وجبات", "200-250 مل", "خضروات وفواكه، حصى صغيرة"),
122
- NutritionPlan(16, "نامي", "علف نامي بروتين 14-16%", "90-110 جرام يومياً", "2-3 وجبات", "200-250 مل", "خضروات وفواكه، حصى صغيرة")
123
- ],
124
- "بياض": [
125
- NutritionPlan(20, "بياض", "علف بياض بروتين 16-18%، كالسيوم 3.5-4%", "110-130 جرام يومياً", "2-3 وجبات", "250-300 مل", "مصادر كالسيوم إضافية، خضروات ورقية، حبوب مخلوطة 30%")
126
- ],
127
- "لاحم": [
128
- NutritionPlan(20, "لاحم", "علف تسمين بروتين 18-22%", "150-200 جرام يومياً", "3-4 وجبات", "300-400 مل", "تركيز على الطاقة والبروتين")
129
- ],
130
- "مريض": [
131
- NutritionPlan(0, "مريض", "علف مطحون ناعم، مبلل قليلاً", "50-70% من الكمية العادية", "حسب الحالة", "ماء + فيتامينات + أملاح", "حسب نوع المرض")
132
- ]
 
 
 
 
 
 
133
  }
134
- return plans
135
 
136
- def _load_daily_tips(self) -> List[str]:
137
- """تحميل النصائح اليومية"""
138
- return [
139
- "تغيير الماء في المشارب مرتين يومياً على الأقل، أو أكثر في الأيام الحارة",
140
- "توفير فتحات تهوية مناسبة تسمح بدخول الهواء النقي وخروج الهواء الفاسد",
141
- "للدجاج البياض: توفير 14-16 ساعة إضاءة يومياً",
142
- "تقليب الفرشة يومياً للحفاظ على جفافها ومنع تكون الكتل",
143
- "فحص الدجاج يومياً لملاحظة أي تغييرات في السلوك",
144
- "سد جميع الفتحات في الحظيرة لمنع دخول القوارض",
145
- "تنظيف وتطهير المعالف والمشارب بانتظام"
146
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
 
148
- def _load_prevention_tips(self) -> List[str]:
149
- """تحميل نصائح الوقاية"""
150
- return [
151
- "تقييد دخول الزوار والمركبات إلى المزرعة",
152
- "وضع الطيور الجديدة في حجر صحي لمدة 2-4 أسابيع",
153
- "الحفاظ على درجة حرارة مناسبة داخل الحظيرة",
154
- "تجنب الاكتظاظ في الحظيرة",
155
- ستخدام علف عالي الجودة ومناسب للمرحلة العمرية",
156
- "الفحص اليومي للقطيع لاكتشاف المشاكل مبكراً",
157
- "التشخيص الدقيق قبل استخدام الأدوية"
158
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
- def diagnose_disease(self, symptoms: List[str]) -> List[Tuple[Disease, float]]:
161
- """تشخيص المرض بناءً على الأعراض"""
 
162
  results = []
163
 
164
- for disease in self.diseases:
165
- # حساب نسبة التطابق
166
- matching_symptoms = 0
167
- for symptom in symptoms:
168
- for disease_symptom in disease.symptoms:
 
 
169
  if self._symptoms_match(symptom, disease_symptom):
170
- matching_symptoms += 1
 
 
171
  break
172
 
173
- if matching_symptoms > 0:
174
- confidence = matching_symptoms / len(disease.symptoms)
175
- results.append((disease, confidence))
 
 
 
 
 
 
 
 
 
 
176
 
177
- # ترتيب النتائج حسب نسبة التطابق
178
- results.sort(key=lambda x: x[1], reverse=True)
179
  return results[:3] # أفضل 3 تشخيصات
180
 
181
- def _symptoms_match(self, user_symptom: str, disease_symptom: str) -> bool:
182
- """فحص تطابق الأعراض"""
183
- user_words = set(user_symptom.lower().split())
184
- disease_words = set(disease_symptom.lower().split())
185
 
186
- # إذا كان هناك تطابق في كلمة واحدة على الأقل
187
- return len(user_words.intersection(disease_words)) > 0
188
-
189
- def generate_nutrition_plan(self, age_weeks: int, chicken_type: str, condition: str = "صحي") -> Optional[NutritionPlan]:
190
- """توليد خطة تغذية"""
191
- if condition == "مريض":
192
- return self.nutrition_plans["مريض"][0]
 
 
 
 
 
 
 
 
 
193
 
194
- # تحديد نوع الدجاج بناءً على العمر والنوع
 
 
 
 
 
 
 
 
 
195
  if age_weeks <= 6:
196
- category = "كتاكيت"
197
  elif age_weeks <= 18:
198
- category = "نامي"
199
- elif chicken_type == "بياض":
200
- category = "بياض"
201
  else:
202
- category = "لاحم"
203
 
204
- if category in self.nutrition_plans:
205
- plans = self.nutrition_plans[category]
206
- # العثور على أقرب خطة للعمر المطلوب
207
- best_plan = min(plans, key=lambda p: abs(p.age_weeks - age_weeks))
208
- return best_plan
209
 
210
- return None
211
-
212
- def answer_question(self, question: str) -> str:
213
- """الإجابة على الأسئلة العامة"""
214
- question_lower = question.lower()
215
 
216
- # أسئلة حول الماء
217
- if any(word in question_lower for word in [اء", "شرب", "مياه"]):
218
- return """الماء هو العنصر الأكثر أهمية لصحة الدجاج:
219
-
220
- يجب تغيير الماء مرتين يومياً على الأقل
221
- توفير ماء نظيف وعذب باستمرار
222
- في الشتاء، تأكد من أن الماء ليس بارداً جداً
223
- الدجاجة الواحدة تحتاج 250-300 مل ماء يومياً
224
- نظف المشارب بانتظام لمنع نمو البكتيريا"""
 
 
 
 
225
 
226
- # أسئلة حول البيض
227
- elif any(word in question_lower for word in ["بيض", "إنتاج", "وضع"]):
228
- return """لزيادة إنتاج البيض:
 
 
229
 
230
- توفير علف بياض عالي الجودة (بروتين 16-18%)
231
- إضافة مصادر كالسيوم (قشر المحار، قشر البيض المطحون)
232
- • توفير 14-16 ساعة إضاءة يومياً
233
- تقليل الإجهاد والحفاظ على بيئة هادئة
234
- • توفير خضروات ورقية خضراء
235
- • الحفاظ على درجة حرارة مناسبة (18-24°م)"""
236
-
237
- # أسئلة حول التغذية
238
- elif any(word in question_lower for word in ["علف", "طعام", "تغذية", "أكل"]):
239
- return """نصائح التغذية السليمة:
240
 
241
- استخدم علف مناسب للمرحلة العمرية
242
- الكتاكيت: علف بادئ عالي البروتين (20-24%)
243
- • الدجاج البالغ: علف بياض أو تسمين حسب الغرض
244
- أضف خضروات وفواكه كمكملات (20-30% من الوجبة)
245
- • تجنب الطعام المتعفن أو المالح
246
- • وفر حصى صغيرة للهضم"""
247
 
248
- # أسئلة حول النظافة
249
- elif any(word in question_lower for word in ["نظافة", "تنظيف", "فرشة", "كوشة"]):
250
- return """نصائح النظافة:
251
-
252
- • قلب الفرشة يومياً للحفاظ على جفافها
253
- • أضف طبقة جديدة من الفرشة بانتظام
254
- • أزل الفرشة المبللة والمتسخة فوراً
255
- • نظف المعالف والمشارب يومياً
256
- • طهر الحظيرة بالكامل بين الدورات
257
- • تخلص من الطيور النافقة بطريقة آمنة"""
258
 
259
- # أسئلة حول الأمراض
260
- elif any(word in question_lower for word in ["مرض", "علاج", "دواء", "مضاد"]):
261
- return """نصائح عامة للأمراض:
262
-
263
- اعزل الطيور المريضة فوراً
264
- • لا تخلط الأدوية مع بعضها إلا بإشراف طبيب بيطري
265
- • أكمل مدة العلاج كاملة حتى لو تحسنت الأعراض
266
- • التزم بفترة السحب للأدوية قبل تسويق المنتجات
267
- • احتفظ بسجلات للعلاجات المستخدمة
268
- • الوقاية أفضل من العلاج - اتبع برنامج التحصين"""
 
 
 
 
 
269
 
270
- else:
271
- return """أهلاً بك! أنا مساعدك المتخصص في تربية الدجاج.
272
-
273
- يمكنني مساعدتك في:
274
- تشخيص الأمراض بناءً على الأعراض
275
- • وضع خطط تغذية مناسبة
276
- • تقديم نصائح الرعاية اليومية
277
- • الإجابة على أسئلتك حول تربية الدجاج
278
-
279
- كيف يمكنني مساعدتك اليوم؟"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
 
281
- def get_daily_tip(self) -> str:
282
- """الحصول على نصيحة يومية"""
283
- import random
284
- return random.choice(self.daily_tips)
285
 
286
- def get_prevention_tip(self) -> str:
287
- """الحصول على نصيحة وقاية"""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
  import random
289
- return random.choice(self.prevention_tips)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
 
 
1
+ import os
2
  import re
3
+ import json
4
  from typing import Dict, List, Tuple, Optional
5
  from dataclasses import dataclass
6
  from datetime import datetime
7
 
8
  @dataclass
9
+ class DiagnosisResult:
10
+ disease: str
11
+ probability: float
12
+ symptoms_matched: List[str]
13
  treatment: str
14
  prevention: str
15
  hygiene: str
 
18
  class NutritionPlan:
19
  age_weeks: int
20
  chicken_type: str
21
+ condition: str
22
+ protein_percentage: float
23
+ energy_kcal: int
24
+ daily_amount: int
25
+ feeding_frequency: int
26
+ supplements: List[str]
27
+ alternative_feeds: List[str]
28
 
29
+ class AdvancedChickenAI:
30
  def __init__(self):
31
+ self.diseases_db = self._load_diseases_database()
32
+ self.nutrition_db = self._load_nutrition_database()
33
+ self.breeds_db = self._load_breeds_database()
34
+ self.alternative_feeds_db = self._load_alternative_feeds_database()
35
 
36
+ def _load_diseases_database(self) -> Dict:
37
+ """تحميل قاعدة بيانات الأمراض المحدثة"""
38
+ return {
39
+ "نيوكاسل": {
40
+ "symptoms": ["خمول", "فقدان شهية", "إسهال أخضر", "أعراض تنفسية", "التواء الرقبة", "شلل", "نفوق مفاجئ"],
41
+ "probability_weights": {"خمول": 0.8, "فقدان شهية": 0.9, "إسهال أخضر": 0.95, "أعراض تنفسية": 0.9, "التواء الرقبة": 0.98, "شلل": 0.95, "نفوق مفاجئ": 0.9},
42
+ "treatment": "لا يوجد علاج نوعي للفيروس. استخدام مضادات حيوية واسعة الطيف (التايلوزين أو الدوكسيسايكلين) للسيطرة على العدوى البكتيرية الثانوية. إضافة فيتامينات A, D, E وأملاح معدنية في ماء الشرب لدعم المناعة.",
43
+ "prevention": "تطبيق برنامج تحصين صارم يتضمن لقاحات حية وميتة. التشديد على إجراءات الأمن الحيوي الصارمة لمنع دخول الفيروس للمزرعة. المراقبة المستمرة للقطيع.",
44
+ "hygiene": "تطهير شامل للحظائر والمعدات. التحكم في حركة الأشخاص والمركبات. مكافحة القوارض والطيور البرية."
45
+ },
46
+ "كوكسيديا": {
47
+ "symptoms": ["إسهال دموي", "خمول", "فقدان شهية", "شحوب", "انخفاض النمو", "ريش منفوش"],
48
+ "probability_weights": {"إسهال دموي": 0.95, "خمول": 0.8, "فقدان شهية": 0.85, "شحوب": 0.9, "انخفاض النمو": 0.8, يش منفوش": 0.7},
49
+ "treatment": "استخدام مضادات الكوكسيديا الحديثة (التولترازوريل أو الديكلازوريل) بجرعات دقيقة. إضافة فيتامين K لتقليل النزيف المعوي. في الحالات الشديدة، علاج جماعي للقطيع.",
50
+ "prevention": "إدارة الفرشة بشكل ممتاز لضمان جفافها المستمر. استخدام علف يحتوي على مضادات كوكسيديا بشكل وقائي. التناوب بين أنواع مضادات الكوكسيديا لمنع تطور المقاومة.",
51
+ "hygiene": "تنظيف وتطهير الحظائر بانتظام. تغيير الفرشة عند الحاجة. ضمان جفاف البيئة."
52
+ },
53
+ "إسهال أبيض": {
54
+ "symptoms": ["إسهال أبيض", "خمول", "فقدان شهية", "عطش شديد", "انخفاض النمو", "نفوق في الكتاكيت"],
55
+ "probability_weights": {"إسهال أبيض": 0.98, "خمول": 0.8, "فقدان شهية": 0.85, "عطش شديد": 0.9, "انخفاض النمو": 0.8, "نفوق في الكتاكيت": 0.9},
56
+ "treatment": "استخدام مضادات حيوية فعالة ضد السالمونيلا مثل الفلورفينيكول أو الجنتاميسين تحت إشراف بيطري. عزل الطيور المصابة والتخلص منها بشكل آمن.",
57
+ "prevention": "الشراء من مصادر موثوقة ومعتمدة وخالية من السالمونيلا. تطبيق برامج اختبار منتظمة للقطيع الأم للكشف عن حاملي المرض.",
58
+ "hygiene": "التطهير الشامل للفقاسات والحظائر ومعدات التربية باستخدام مطهرات قوية."
59
+ },
60
+ "جدري الدجاج": {
61
+ "symptoms": ["بثور على الوجه", "تورم الوجه", "صعوبة في التنفس", "انخفاض إنتاج البيض", "خمول"],
62
+ "probability_weights": {"بثور على الوجه": 0.98, "تورم الوجه": 0.9, "صعوبة في التنفس": 0.85, "انخفاض إنتاج البيض": 0.8, "خمول": 0.7},
63
+ "treatment": "لا يوجد علاج نوعي للفيروس. استخدام مطهرات موضعية (صبغة اليود أو محلول برمنجنات البوتاسيوم) على البثور الخارجية. استخدام مضادات حيوية واسعة الطيف إذا حدثت عدوى بكتيرية ثانوية.",
64
+ "prevention": "التحصين الإجباري للقطيع في المناطق الموبوءة باستخدام لقاح الجدري (طريقة الوخز بالجناح). مكافحة الحشرات الناقلة للمرض مثل البعوض والذباب.",
65
+ "hygiene": "توفير بيئة نظيفة وجافة. استخدام المبيدات الحشرية الآمنة للدواجن."
66
+ },
67
+ "التهاب الشعب الهوائية": {
68
+ "symptoms": ["سعال", "عطس", "رشح", "صعوبة في التنفس", "انخفاض إنتاج البيض"],
69
+ "probability_weights": {"سعال": 0.9, "عطس": 0.85, "رشح": 0.8, "صعوبة في التنفس": 0.9, "انخفاض إنتاج البيض": 0.8},
70
+ "treatment": "لا يوجد علاج نوعي للفيروس. استخدام مضادات حيوية للسيطرة على العدوى البكتيرية الثانوية. إضافة فيتامينات A و E ومحفزات مناعة في ماء الشرب. تحسين التهوية وتدفئة الحظيرة.",
71
+ "prevention": "تطبيق برنامج تحصين دقيق باستخدام اللقاحات المناسبة للسلالات المنتشرة في المنطقة. التشديد على الأمن الحيوي. تجنب الإجهاد البيئي.",
72
+ "hygiene": "تحسين التهوية. تقليل مستويات الغبار والأمونيا في الحظيرة."
73
+ },
74
+ "مايكوبلازما": {
75
+ "symptoms": ["أعراض تنفسية", "تورم الوجه", "إفرازات أنفية", "انخفاض إنتاج البيض"],
76
+ "probability_weights": {"أعراض تنفسية": 0.9, "تورم الوجه": 0.85, "إفرازات أنفية": 0.9, "انخفاض إنتاج البيض": 0.8},
77
+ "treatment": "استخدام مضادات حيوية فعالة ضد المايكوبلازما مثل التايلوزين، التيلمايكوسين، أو الدوكسيسايكلين. يجب أن يكون العلاج مبكراً ولفترة كافية.",
78
+ "prevention": "الشراء من قطعان أم خالية من المايكوبلازما. تقليل مستويات الغبار والأمونيا في الحظيرة عن طريق التهوية الجيدة وإدارة الفرشة.",
79
+ "hygiene": "تحسين التهوية. إدارة الفرشة بشكل جيد. تقليل الغبار."
80
+ },
81
+ "كوليرا": {
82
+ "symptoms": ["إسهال أصفر", "خمول", "فقدان شهية", "انتفاخ الوجه", "صعوبة في التنفس"],
83
+ "probability_weights": {"إسهال أصفر": 0.9, "خمول": 0.8, "فقدان شهية": 0.85, "انتفاخ الوجه": 0.9, "صعوبة في التنفس": 0.8},
84
+ "treatment": "استخدام مضادات حيوية فعالة مثل السلفا، التتراسيكلين، أو الفلورفينيكول. يجب أن يكون العلاج مبكراً ومستمراً. في حالات التفشي، قد يكون العلاج الجماعي ضرورياً.",
85
+ "prevention": "التحصين المنتظم ضد الكوليرا. مكافحة القوارض والطيور البرية التي تعتبر خزاناً للمرض. تطبيق إجراءات أمن حيوي صارمة.",
86
+ "hygiene": "نظافة وتطهير الحظائر ومصادر المياه. مكافحة القوارض."
87
+ },
88
+ "ماريك": {
89
+ "symptoms": ["شلل في الأرجل", "شلل في الأجنحة", "عمى", "أورام", "نفوق"],
90
+ "probability_weights": {"شلل في الأرجل": 0.95, "شلل في الأجنحة": 0.9, "عمى": 0.85, "أورام": 0.9, "نفوق": 0.8},
91
+ "treatment": "لا يوجد علاج للمرض بعد الإصابة. التركيز على الرعاية الداعمة فقط.",
92
+ "prevention": "التحصين الإجباري للكتاكيت في عمر يوم واحد (في الفقاسة) باستخدام لقاح ماريك. التأكد من جودة اللقاح وطريقة التطبيق الصحيحة.",
93
+ "hygiene": "نظافة وتطهير الحظائر بشكل جيد قبل إدخال الكتاكيت. الشراء من مصادر موثوقة."
94
+ },
95
+ "التهاب الأمعاء النخري": {
96
+ "symptoms": ["إسهال", "خمول", "فقدان شهية", "انتفاخ البطن", "نفوق مفاجئ"],
97
+ "probability_weights": {"إسهال": 0.9, "خمول": 0.8, "فقدان شهية": 0.85, "انتفاخ البطن": 0.9, "نفوق مفاجئ": 0.8},
98
+ "treatment": "استخدام مضادات حيوية مثل الأموكسيسيلين، الباسيتراسين، أو الميترونيدازول. يمكن إضافة البروبيوتيك والبريبايوتيك لدعم صحة الأمعاء.",
99
+ "prevention": "إدارة الفرشة الجيدة والجافة. تجنب التغيرات المفاجئة في العلف. استخدام البروبيوتيك والبريبايوتيك بشكل وقائي.",
100
+ "hygiene": "إدارة الفرشة بشكل جيد. التحكم في العوامل المسببة للإجهاد."
101
+ },
102
+ "إجهاد حراري": {
103
+ "symptoms": ["لهاث", "انتشار الأجنحة", "انخفاض إنتاج البيض", "فقدان شهية", "خمول"],
104
+ "probability_weights": {"لهاث": 0.95, "انتشار الأجنحة": 0.9, "انخفاض إنتاج البيض": 0.85, "فقدان شهية": 0.8, "خمول": 0.8},
105
+ "treatment": "توفير مياه شرب باردة ونظيفة مع إضافة فيتامين C والأملاح المعدنية. رش الدجاج بالماء البارد (رذاذ خفيف). استخدام مراوح تبريد وأنظمة تبريد تبخيري.",
106
+ "prevention": "تصميم حظائر جيدة التهوية والعزل. توفير الظل الكافي. استخدام أنظمة تبريد فعالة. تقليل كثافة الطيور في الحظيرة.",
107
+ "hygiene": "توفير مياه شرب كافية. إضافة مضادات الإجهاد الحراري للعلف أو الماء."
108
+ }
109
+ }
 
110
 
111
+ def _load_nutrition_database(self) -> Dict:
112
+ """تحميل قاعدة بيانات التغذية المحدثة"""
113
+ return {
114
+ "starter": { # 0-6 أسابيع
115
+ "protein": {ياض": 20-22, "لاحم": 22-24, "مختلط": 21-23},
116
+ "energy": {ياض": 2900-3000, "لاحم": 3000-3100, "مختلط": 2950-3050},
117
+ "daily_amount": {ياض": 25-40, "لاحم": 30-50, "مختلط": 28-45},
118
+ "feeding_frequency": 4,
119
+ "supplements": ["فيتامين A", "فيتامين D3", "فيتامين E", "فيتامين K", "فيتامينات B المركبة"]
120
+ },
121
+ "grower": { # 7-18 أسابيع
122
+ "protein": {"بياض": 16-18, "لاحم": 18-20, "مختلط": 17-19},
123
+ "energy": {"بياض": 2800-2900, "لاحم": 3100-3200, "مختلط": 2950-3050},
124
+ "daily_amount": {"بياض": 60-80, "لاحم": 80-120, "مختلط": 70-100},
125
+ "feeding_frequency": 3,
126
+ "supplements": ["كالسيوم", "فوسفور", "فيتامين D3", "فيتامينات B"]
127
+ },
128
+ "layer": { # 19+ أسابيع (بياض)
129
+ "protein": {"بياض": 16-18, "مختلط": 16-18},
130
+ "energy": {"بياض": 2700-2800, "مختلط": 2750-2850},
131
+ "daily_amount": {"بياض": 110-130, "مختلط": 115-135},
132
+ "feeding_frequency": 2,
133
+ "supplements": ["كالسيوم عالي", "فيتامين D3", "فيتامين E", "أوميغا 3"]
134
+ },
135
+ "finisher": { # 6+ أسابيع (لاحم)
136
+ "protein": {"لاحم": 18-20},
137
+ "energy": {"لاحم": 3200-3300},
138
+ "daily_amount": {"لاحم": 150-200},
139
+ "feeding_frequency": 2,
140
+ "supplements": ["فيتامين E", "سيلينيوم", "مضادات الأكسدة"]
141
+ }
142
  }
 
143
 
144
+ def _load_breeds_database(self) -> Dict:
145
+ """تحميل قاعدة بيانات السلالات"""
146
+ return {
147
+ "ليجهورن": {
148
+ "type": "بياض",
149
+ "egg_production": "280-320 بيضة/سنة",
150
+ "egg_color": "أبيض",
151
+ "characteristics": "نشيطة، صغيرة الحجم، استهلاك قليل للعلف",
152
+ "immunity": "جيدة"
153
+ },
154
+ "رود آيلاند": {
155
+ "type": "ثنائي الغرض",
156
+ "egg_production": "200-300 بيضة/سنة",
157
+ "egg_color": "بني",
158
+ "characteristics": "قوية ومقاومة، ريش أحمر داكن",
159
+ "immunity": "ممتازة"
160
+ },
161
+ "أوسترالورب": {
162
+ "type": "ثنائي الغرض",
163
+ "egg_production": "250-300 بيضة/سنة",
164
+ "egg_color": "بني",
165
+ "characteristics": "هادئة ومطيعة، سوداء اللون",
166
+ "immunity": "قوية"
167
+ },
168
+ "فيومي": {
169
+ "type": "بياض",
170
+ "egg_production": "150-200 بيضة/سنة",
171
+ "egg_color": "أبيض/كريمي",
172
+ "characteristics": "مقاومة للأمراض، تتحمل الظروف الصعبة",
173
+ "immunity": "ممتازة"
174
+ },
175
+ "ساسكس": {
176
+ "type": "ثنائي الغرض",
177
+ "egg_production": "200-250 بيضة/سنة",
178
+ "egg_color": "بني",
179
+ "characteristics": "هادئة ومطيعة، ريش أبيض مع أطراف سوداء",
180
+ "immunity": "جيدة"
181
+ },
182
+ "روس 308": {
183
+ "type": "لاحم",
184
+ "growth_rate": "5-7 أسابيع للتسويق",
185
+ "characteristics": "نمو سريع، كفاءة تحويل علف عالية",
186
+ "immunity": "جيدة"
187
+ },
188
+ "كوب 500": {
189
+ "type": "لاحم",
190
+ "growth_rate": "5-7 أسابيع للتسويق",
191
+ "characteristics": "نمو سريع، إنتاجية عالية من اللحم",
192
+ "immunity": "جيدة"
193
+ }
194
+ }
195
 
196
+ def _load_alternative_feeds_database(self) -> Dict:
197
+ """تحميل قاعدة بيانات العلائق البديلة"""
198
+ return {
199
+ "protein_sources": {
200
+ "نباتية": [
201
+ "كسب عباد الشمس - بديل جيد لكسب فول الصويا",
202
+ "كسب الكتان - مصدر للبروتين والأوميغا 3",
203
+ لبقوليات لفول، العدس، الحمص) - بعد المعالجة الحرارية",
204
+ "الخميرة - غنية بالبروتين وفيتامينات B",
205
+ "السبيرولينا - طحالب غنية بالبروتين والفيتامينات"
206
+ ],
207
+ "حيوانية": [
208
+ "مسحوق اللحم والعظم - غني بالبروتين والكالسيوم والفوسفور",
209
+ "مسحوق السمك - بروتين عالي الجودة",
210
+ "ديدان الأرض والحشرات - مصادر بروتين مستدامة"
211
+ ]
212
+ },
213
+ "energy_sources": [
214
+ "الشعير - بديل جزئي للذرة، غني بالألياف",
215
+ "القمح - مصدر جيد للطاقة",
216
+ "الأرز المكسور - مصدر طاقة عالي للكتاكيت",
217
+ "الدهون والزيوت النباتية - لزيادة محتوى الطاقة",
218
+ "البطاطا الحلوة والبطاطس المطبوخة - مصادر كربوهيدرات"
219
+ ],
220
+ "vitamin_sources": [
221
+ "الأعلاف الخضراء (البرسيم، السبانخ، الخس) - فيتامينات A و K",
222
+ "الجزر - غني بالبيتا كاروتين",
223
+ "الخميرة - فيتامينات B المركبة",
224
+ "زيت كبد الحوت - فيتامينات A و D",
225
+ "التعرض لأشعة الشمس - فيتامين D طبيعي"
226
+ ]
227
+ }
228
 
229
+ def diagnose_disease(self, symptoms: str) -> List[DiagnosisResult]:
230
+ """تشخيص الأمراض بناءً على الأعراض مع خوارزمية محسنة"""
231
+ symptoms_list = [s.strip() for s in symptoms.split(',') if s.strip()]
232
  results = []
233
 
234
+ for disease, data in self.diseases_db.items():
235
+ matched_symptoms = []
236
+ total_probability = 0.0
237
+
238
+ for symptom in symptoms_list:
239
+ # البحث عن تطابق جزئي أو كامل
240
+ for disease_symptom in data["symptoms"]:
241
  if self._symptoms_match(symptom, disease_symptom):
242
+ matched_symptoms.append(disease_symptom)
243
+ weight = data["probability_weights"].get(disease_symptom, 0.5)
244
+ total_probability += weight
245
  break
246
 
247
+ if matched_symptoms:
248
+ # حساب الاحتمالية النهائية
249
+ probability = min(total_probability / len(data["symptoms"]), 1.0)
250
+
251
+ result = DiagnosisResult(
252
+ disease=disease,
253
+ probability=probability,
254
+ symptoms_matched=matched_symptoms,
255
+ treatment=data["treatment"],
256
+ prevention=data["prevention"],
257
+ hygiene=data["hygiene"]
258
+ )
259
+ results.append(result)
260
 
261
+ # ترتيب النتائج حسب الاحتمالية
262
+ results.sort(key=lambda x: x.probability, reverse=True)
263
  return results[:3] # أفضل 3 تشخيصات
264
 
265
+ def _symptoms_match(self, input_symptom: str, disease_symptom: str) -> bool:
266
+ """فحص تطابق الأعراض مع تحسينات في المطابقة"""
267
+ input_symptom = input_symptom.strip().lower()
268
+ disease_symptom = disease_symptom.strip().lower()
269
 
270
+ # تطابق كامل
271
+ if input_symptom == disease_symptom:
272
+ return True
273
+
274
+ # تطابق جزئي
275
+ if input_symptom in disease_symptom or disease_symptom in input_symptom:
276
+ return True
277
+
278
+ # مرادفات شائعة
279
+ synonyms = {
280
+ "خمول": ["كسل", "ضعف", "عدم نشاط"],
281
+ "فقدان شهية": ["عدم أكل", "رفض الطعام", "قلة أكل"],
282
+ "إسهال": ["براز سائل", "إسهال شديد"],
283
+ "صعوبة تنفس": ["ضيق تنفس", "أعراض تنفسية", "مشاكل تنفسية"],
284
+ "نفوق": ["موت", "وفاة", "نفوق مفاجئ"]
285
+ }
286
 
287
+ for key, values in synonyms.items():
288
+ if (input_symptom == key.lower() and disease_symptom.lower() in [v.lower() for v in values]) or \
289
+ (disease_symptom.lower() == key.lower() and input_symptom in [v.lower() for v in values]):
290
+ return True
291
+
292
+ return False
293
+
294
+ def generate_nutrition_plan(self, age_weeks: int, chicken_type: str, condition: str) -> NutritionPlan:
295
+ """توليد خطة تغذية مخصصة مع العلائق البديلة"""
296
+ # تحديد مرحلة النمو
297
  if age_weeks <= 6:
298
+ phase = "starter"
299
  elif age_weeks <= 18:
300
+ phase = "grower"
301
+ elif chicken_type == "لاحم":
302
+ phase = "finisher"
303
  else:
304
+ phase = "layer"
305
 
306
+ phase_data = self.nutrition_db[phase]
 
 
 
 
307
 
308
+ # تعديل القيم حسب الحالة
309
+ protein_base = phase_data["protein"][chicken_type]
310
+ energy_base = phase_data["energy"][chicken_type]
311
+ amount_base = phase_data["daily_amount"][chicken_type]
 
312
 
313
+ # تعديلات حسب الحالة
314
+ if condition == "مريض":
315
+ protein_adjustment = 1.1 # زيادة البروتين 10%
316
+ energy_adjustment = 0.9 # تقليل الطاقة 10%
317
+ amount_adjustment = 0.8 # تقليل الكمية 20%
318
+ elif condition == "نقاهة":
319
+ protein_adjustment = 1.05
320
+ energy_adjustment = 0.95
321
+ amount_adjustment = 0.9
322
+ else: # صحي
323
+ protein_adjustment = 1.0
324
+ energy_adjustment = 1.0
325
+ amount_adjustment = 1.0
326
 
327
+ # حساب القيم النهائية
328
+ if isinstance(protein_base, dict):
329
+ protein_final = protein_base[chicken_type] * protein_adjustment
330
+ else:
331
+ protein_final = protein_base * protein_adjustment
332
 
333
+ if isinstance(energy_base, dict):
334
+ energy_final = energy_base[chicken_type] * energy_adjustment
335
+ else:
336
+ energy_final = energy_base * energy_adjustment
 
 
 
 
 
 
337
 
338
+ if isinstance(amount_base, dict):
339
+ amount_final = amount_base[chicken_type] * amount_adjustment
340
+ else:
341
+ amount_final = amount_base * amount_adjustment
 
 
342
 
343
+ # اختيار العلائق البديلة المناسبة
344
+ alternative_feeds = self._select_alternative_feeds(phase, chicken_type, condition)
 
 
 
 
 
 
 
 
345
 
346
+ return NutritionPlan(
347
+ age_weeks=age_weeks,
348
+ chicken_type=chicken_type,
349
+ condition=condition,
350
+ protein_percentage=round(protein_final, 1),
351
+ energy_kcal=int(energy_final),
352
+ daily_amount=int(amount_final),
353
+ feeding_frequency=phase_data["feeding_frequency"],
354
+ supplements=phase_data["supplements"],
355
+ alternative_feeds=alternative_feeds
356
+ )
357
+
358
+ def _select_alternative_feeds(self, phase: str, chicken_type: str, condition: str) -> List[str]:
359
+ """اختيار العلائق البديلة المناسبة"""
360
+ alternatives = []
361
 
362
+ # مصادر البروتين البديلة
363
+ if phase in ["starter", "grower"] or chicken_type == "لاحم":
364
+ alternatives.extend([
365
+ "كسب عباد الشمسديل كسب فول الصويا)",
366
+ "مسحوق السمك (للنمو السريع)",
367
+ "الخميرة (غنية بفيتامينات B)"
368
+ ])
369
+
370
+ # مصادر الطاقة البديلة
371
+ alternatives.extend([
372
+ "الشعير المطحون (75% من طاقة الذرة)",
373
+ "القمح المكسور (مصدر طاقة جيد)",
374
+ "الأرز المكسور (للكتاكيت)"
375
+ ])
376
+
377
+ # إضافات خاصة حسب الحالة
378
+ if condition == "مريض":
379
+ alternatives.extend([
380
+ "البروبيوتيك (لصحة الأمعاء)",
381
+ "فيتامين C (مضاد للإجهاد)",
382
+ "الأعلاف الخضراء (فيتامينات طبيعية)"
383
+ ])
384
+ elif condition == "نقاهة":
385
+ alternatives.extend([
386
+ "زيت كبد الحوت (فيتامينات A و D)",
387
+ "العسل الطبيعي (طاقة سريعة)",
388
+ "الجزر المبشور (بيتا كاروتين)"
389
+ ])
390
+
391
+ return alternatives[:5] # أفضل 5 بدائل
392
 
393
+ def get_breed_info(self, breed_name: str) -> Optional[Dict]:
394
+ """الحصول على معلومات السلالة"""
395
+ return self.breeds_db.get(breed_name)
 
396
 
397
+ def get_daily_tips(self) -> List[str]:
398
+ """الحصول على نصائح يومية متقدمة"""
399
+ tips = [
400
+ "🌡️ راقب درجة الحرارة: الحرارة المثلى للدجاج البالغ 18-24°م",
401
+ "💧 تأكد من نظافة الماء: غير الماء يومياً واغسل المشارب",
402
+ "🌾 فحص العلف: تأكد من عدم وجود عفن أو رطوبة في العلف",
403
+ "🧹 نظافة الحظيرة: نظف الفرشة وأزل الفضلات بانتظام",
404
+ "👁️ مراقبة السلوك: لاحظ أي تغيير في سلوك أو شهية الدجاج",
405
+ "🌬️ التهوية الجيدة: تأكد من تجديد الهواء دون تيارات باردة",
406
+ "🦠 الأمن الحيوي: اغسل يديك قبل وبعد التعامل مع الدجاج",
407
+ "📊 سجل الإنتاج: احتفظ بسجل يومي لإنتاج البيض والاستهلاك",
408
+ "🌱 الأعلاف الخضراء: قدم خضروات طازجة كمكمل غذائي",
409
+ "⚡ الإضاءة المناسبة: 14-16 ساعة إضاءة يومياً للدجاج البياض"
410
+ ]
411
+
412
+ # اختيار 3 نصائح عشوائية
413
  import random
414
+ return random.sample(tips, 3)
415
+
416
+ def answer_general_question(self, question: str) -> str:
417
+ """الإجابة على الأسئلة العامة مع ذكاء اصطناعي محسن"""
418
+ question = question.lower().strip()
419
+
420
+ # قاعدة معرفة للأسئلة الشائعة
421
+ qa_database = {
422
+ "ماء": "يحتاج الدجاج إلى ماء نظيف وبارد متاح على مدار 24 ساعة. الدجاجة الواحدة تشرب حوالي 200-300 مل يومياً في الظروف العادية، وقد تزيد في الطقس الحار. يجب تغيير الماء يومياً وتنظيف المشارب بانتظام.",
423
+
424
+ "بيض": "لزيادة إنتاج البيض: 1) قدم علفاً متوازناً يحتوي على 16-18% بروتين، 2) وفر 14-16 ساعة إضاءة يومياً، 3) حافظ على درجة حرارة 18-24°م، 4) قدم كالسيوم إضافي (قشر المحار)، 5) قلل الإجهاد والضوضاء.",
425
+
426
+ "علف": "الدجاج البالغ يحتاج 100-130 جرام علف يومياً. يجب أن يحتوي العلف على: بروتين 16-18%، طاقة 2700-2800 كيلو كالوري/كجم، كالسيوم 3.5-4%، فوسفور 0.6%، وفيتامينات ومعادن متوازنة.",
427
+
428
+ "تحصين": "برنامج التحصين الأساسي: 1) ماريك (يوم واحد)، 2) نيوكاسل + التهاب الشعب (7-10 أيام)، 3) جامبورو (14-18 يوم)، 4) نيوكاسل (تنشيطي في 4-5 أسابيع)، 5) جدري الدجاج (6-8 أسابيع). استشر طبيباً بيطرياً للبرنامج المناسب لمنطقتك.",
429
+
430
+ "نظافة": "نظف الحظيرة يومياً من الفضلات، غير الفرشة أسبوعياً أو عند الحاجة، طهر المعدات شهرياً، اغسل المشارب والمعالف كل 2-3 أيام، وتأكد من التهوية الجيدة لمنع تراكم الأمونيا.",
431
+
432
+ "حرارة": "الحرارة المثلى للدجاج البالغ 18-24°م. في الطقس الحار: وفر ظلاً، زد كمية الماء، استخدم مراوح، قدم العلف في الأوقات الباردة. في الطقس البارد: وفر تدفئة إضافية، تأكد من عدم وجود تيارات هواء، زد كمية العلف.",
433
+
434
+ "مساحة": "كل دجاجة تحتاج 0.25-0.4 متر مربع داخل الحظيرة، و2-4 متر مربع في المرعى الخارجي. الازدحام يؤدي إلى الإجهاد، انتشار الأمراض، وانخفاض الإنتاج.",
435
+
436
+ "فيتامينات": "الفيتامينات المهمة للدجاج: A (للنمو والرؤية)، D3 (لامتصاص الكالسيوم)، E (مضاد أكسدة)، K (تجلط الدم)، B المركبة (الأيض). يمكن إضافتها للماء أو العلف حسب الحاجة."
437
+ }
438
+
439
+ # البحث عن الكلمات المفتاحية
440
+ for keyword, answer in qa_database.items():
441
+ if keyword in question:
442
+ return answer
443
+
444
+ # إجابة عامة إذا لم يتم العثور على تطابق
445
+ return "أعتذر، لم أتمكن من فهم سؤالك بوضوح. يرجى إعادة صياغة السؤال أو تحديد الموضوع الذي تريد معرفة المزيد عنه (مثل: التغذية، الأمراض، التحصين، النظافة، إنتاج البيض، إلخ)."
446
 
requirements.txt CHANGED
@@ -1,4 +1,8 @@
1
  gradio>=4.0.0
 
 
 
 
2
  python-multipart
3
  uvicorn
4
  fastapi
 
1
  gradio>=4.0.0
2
+ pandas>=1.5.0
3
+ plotly>=5.0.0
4
+ numpy>=1.21.0
5
+ python-dateutil>=2.8.0
6
  python-multipart
7
  uvicorn
8
  fastapi