لقد أحدث الذكاء الاصطناعي تحولاً في تطوير البرمجيات. يتناول هذا الفصل تقنيات كتابة الأوامر لتوليد الأكواد وتصحيح الأخطاء والمراجعة وسير عمل التطوير.

<Callout type="info" title="الذكاء الاصطناعي كشريك في البرمجة">
يتفوق الذكاء الاصطناعي في توليد الأكواد وتصحيح الأخطاء والتوثيق - لكن راجع دائماً الكود المُولَّد من حيث الأمان والصحة وقابلية الصيانة. لا تنشر أبداً كوداً من الذكاء الاصطناعي دون اختباره.
</Callout>

## توليد الأكواد

### ما يجب فعله وما يجب تجنبه: أوامر الأكواد

<Compare 
  before={{ label: "❌ طلب غامض", content: "اكتب دالة للتحقق من صحة البريد الإلكتروني." }}
  after={{ label: "✓ مواصفات كاملة", content: "اكتب دالة Python للتحقق من صحة عناوين البريد الإلكتروني.\n\nالمدخل: سلسلة نصية (بريد إلكتروني محتمل)\nالمخرج: tuple[bool, str | None] - (صالح، رسالة_الخطأ)\nالتعامل مع: سلسلة فارغة، None، أحرف يونيكود\nاستخدم regex، وأضف تلميحات الأنواع وسلسلة التوثيق." }}
/>

### توليد الدوال

<TryIt compact prompt={`اكتب دالة \${language:Python} تقوم بـ \${description:التحقق من صحة عناوين البريد الإلكتروني}.

المتطلبات:
- المدخل: \${inputTypes:سلسلة نصية (بريد إلكتروني محتمل)}
- المخرج: \${outputType:قيمة منطقية ورسالة خطأ اختيارية}
- التعامل مع الحالات الحدية: \${edgeCases:سلسلة فارغة، None، أحرف يونيكود}
- الأداء: \${performance:قياسي}

يتضمن:
- تلميحات الأنواع/التعليقات التوضيحية
- سلسلة توثيق مع أمثلة
- التحقق من صحة المدخلات
- معالجة الأخطاء`} />

### توليد الأصناف/الوحدات

<TryIt compact prompt={`أنشئ صنف \${language:Python} لـ \${purpose:إدارة جلسات المستخدمين}.

تصميم الصنف:
- الاسم: \${className:SessionManager}
- المسؤولية: \${responsibility:التعامل مع دورة حياة جلسة المستخدم}
- الخصائص: \${properties:session_id، user_id، created_at، expires_at}
- الدوال: \${methods:create()، validate()، refresh()، destroy()}

المتطلبات:
- اتبع نمط \${designPattern:Singleton}
- تضمين التغليف المناسب
- إضافة سلاسل توثيق شاملة
- تضمين مثال للاستخدام

الاختبار:
- تضمين هيكل اختبارات الوحدة`} />

### توليد نقاط نهاية API

<TryIt compact prompt={`أنشئ نقطة نهاية REST API لـ \${resource:ملفات تعريف المستخدمين}.

الإطار: \${framework:FastAPI}
الطريقة: \${method:GET}
المسار: \${path:/api/users/{id}}

الطلب:
- الترويسات: \${headers:Authorization Bearer token}
- مخطط الجسم: \${bodySchema:غير متاح لـ GET}
- معاملات الاستعلام: \${queryParams:include_posts (منطقي)}

الاستجابة:
- النجاح: \${successResponse:200 مع كائن المستخدم}
- الأخطاء: \${errorResponses:401 غير مصرح، 404 غير موجود}

يتضمن:
- التحقق من صحة المدخلات
- فحص المصادقة
- معالجة الأخطاء
- مراعاة تحديد معدل الطلبات`} />

## تصحيح الأخطاء

<Callout type="tip" title="مبدأ تصحيح الأخطاء">
قم دائماً بتضمين **السلوك المتوقع** و**السلوك الفعلي** و**رسالة الخطأ** (إن وجدت). كلما قدمت سياقاً أكثر، كلما تمكن الذكاء الاصطناعي من تحديد السبب الجذري بشكل أسرع.
</Callout>

### تحليل الأخطاء

<TryIt compact prompt={`صحح هذا الكود. يجب أن \${expectedBehavior:يعيد مجموع جميع الأرقام} لكنه بدلاً من ذلك \${actualBehavior:يعيد 0 لجميع المدخلات}.

الكود:
\${code:الصق الكود الخاص بك هنا}

رسالة الخطأ (إن وجدت):
\${error:لا يوجد}

خطوات التصحيح:
1. تحديد ما يحاول الكود فعله
2. تتبع التنفيذ مع المدخل المعطى
3. إيجاد نقطة التباين بين السلوك المتوقع والفعلي
4. شرح السبب الجذري
5. تقديم الإصلاح مع الشرح`} />

### تفسير رسائل الخطأ

<TryIt compact prompt={`اشرح هذا الخطأ وكيفية إصلاحه:

الخطأ:
\${errorMessage:الصق رسالة الخطأ أو تتبع المكدس هنا}

السياق:
- اللغة/الإطار: \${framework:Python 3.11}
- ما كنت أحاول فعله: \${action:قراءة ملف JSON}
- الكود ذو الصلة: \${codeSnippet:الصق الكود ذو الصلة}

قدم:
1. شرح بسيط للخطأ
2. السبب الجذري
3. إصلاح خطوة بخطوة
4. كيفية منع هذا في المستقبل`} />

### تصحيح الأداء

<TryIt compact prompt={`هذا الكود بطيء. حلله وحسّنه:

الكود:
\${code:الصق الكود الخاص بك هنا}

الأداء الحالي: \${currentPerformance:يستغرق 30 ثانية لـ 1000 عنصر}
الأداء المستهدف: \${targetPerformance:أقل من 5 ثوانٍ}
القيود: \${constraints:حد الذاكرة 512 ميغابايت}

قدم:
1. تحديد نقاط الاختناق
2. شرح سبب بطء كل منها
3. اقتراح التحسينات (مرتبة حسب التأثير)
4. عرض الكود المحسّن
5. تقدير التحسين`} />

## مراجعة الأكواد

### ما يجب فعله وما يجب تجنبه: أوامر مراجعة الأكواد

<Compare 
  before={{ label: "❌ طلب عام", content: "راجع هذا الكود." }}
  after={{ label: "✓ معايير محددة", content: "راجع هذا الكود لطلب سحب.\n\nتحقق من:\n1. الصحة: الأخطاء، أخطاء المنطق، الحالات الحدية\n2. الأمان: مخاطر الحقن، مشاكل المصادقة\n3. الأداء: استعلامات N+1، تسريبات الذاكرة\n4. قابلية الصيانة: التسمية، التعقيد\n\nالتنسيق: 🔴 حرج / 🟡 مهم / 🟢 اقتراح" }}
/>

### المراجعة الشاملة

<TryIt compact prompt={`راجع هذا الكود لطلب سحب.

الكود:
\${code:الصق الكود الخاص بك هنا}

راجع من حيث:
1. **الصحة**: الأخطاء، أخطاء المنطق، الحالات الحدية
2. **الأمان**: الثغرات، مخاطر الحقن، مشاكل المصادقة
3. **الأداء**: عدم الكفاءة، استعلامات N+1، تسريبات الذاكرة
4. **قابلية الصيانة**: القراءة، التسمية، التعقيد
5. **أفضل الممارسات**: اتفاقيات \${framework:Python/Django}

نسّق مراجعتك كالتالي:
🔴 حرج: يجب إصلاحه قبل الدمج
🟡 مهم: يجب إصلاحه
🟢 اقتراح: من الجيد وجوده
💭 سؤال: يحتاج توضيحاً`} />

### المراجعة الأمنية

<TryIt compact prompt={`قم بمراجعة أمنية لهذا الكود:

الكود:
\${code:الصق الكود الخاص بك هنا}

تحقق من:
- [ ] ثغرات الحقن (SQL، XSS، الأوامر)
- [ ] عيوب المصادقة/التفويض
- [ ] كشف البيانات الحساسة
- [ ] التبعيات غير الآمنة
- [ ] مشاكل التشفير
- [ ] ثغرات التحقق من المدخلات
- [ ] معالجة الأخطاء التي تسرب المعلومات

لكل اكتشاف:
- الخطورة: حرج/عالي/متوسط/منخفض
- الموقع: رقم السطر أو الدالة
- المشكلة: الوصف
- الاستغلال: كيف يمكن مهاجمته
- الإصلاح: العلاج الموصى به`} />

## إعادة الهيكلة

### اكتشاف روائح الكود

<TryIt compact prompt={`حلل هذا الكود بحثاً عن روائح الكود وفرص إعادة الهيكلة:

الكود:
\${code:الصق الكود الخاص بك هنا}

حدد:
1. الدوال الطويلة (اقترح الاستخراج)
2. الكود المكرر (اقترح تحسينات DRY)
3. الشروط المعقدة (اقترح التبسيط)
4. التسمية السيئة (اقترح أسماء أفضل)
5. الترابط الشديد (اقترح فك الترابط)

لكل مشكلة، أظهر الكود قبل وبعد.`} />

### تطبيق أنماط التصميم

<TryIt compact prompt={`أعد هيكلة هذا الكود باستخدام نمط \${patternName:Factory}.

الكود الحالي:
\${code:الصق الكود الخاص بك هنا}

الأهداف:
- \${whyPattern:فصل إنشاء الكائنات عن الاستخدام}
- \${benefits:سهولة الاختبار والتوسعة}

قدم:
1. شرح النمط
2. كيفية تطبيقه هنا
3. الكود المُعاد هيكلته
4. المقايضات للنظر فيها`} />

## الاختبار

### توليد اختبارات الوحدة

<TryIt compact prompt={`اكتب اختبارات وحدة لهذه الدالة:

الدالة:
\${code:الصق الدالة الخاصة بك هنا}

إطار الاختبار: \${testFramework:pytest}

غطِّ:
- المسار السعيد (مدخلات عادية)
- الحالات الحدية (فارغ، null، قيم حدية)
- حالات الخطأ (مدخلات غير صالحة)
- \${specificScenarios:الوصول المتزامن، مدخلات كبيرة}

التنسيق: نمط Arrange-Act-Assert
تضمين: أسماء اختبارات وصفية`} />

### توليد حالات الاختبار

<TryIt compact prompt={`ولّد حالات اختبار لهذه الميزة:

الميزة: \${featureDescription:تسجيل المستخدم مع التحقق من البريد الإلكتروني}
معايير القبول: \${acceptanceCriteria:يمكن للمستخدم التسجيل، يتلقى بريداً إلكترونياً، يمكنه التحقق من الحساب}

قدم حالات الاختبار بهذا التنسيق:

| المعرف | السيناريو | بالنظر إلى | عندما | ثم | الأولوية |
|--------|----------|----------|------|-----|----------|
| TC01 | ... | ... | ... | ... | عالية |`} />

## الهندسة المعمارية والتصميم

### تصميم النظام

<TryIt compact prompt={`صمم نظاماً لـ \${requirement:تطبيق دردشة في الوقت الفعلي}.

القيود:
- الحمل المتوقع: \${expectedLoad:10,000 مستخدم متزامن}
- متطلبات زمن الاستجابة: \${latency:< 100 مللي ثانية لتسليم الرسائل}
- التوفر: \${availability:99.9%}
- الميزانية: \${budget:معتدلة، تفضيل المصادر المفتوحة}

قدم:
1. مخطط الهندسة المعمارية عالي المستوى (ASCII/نص)
2. أوصاف المكونات
3. تدفق البيانات
4. اختيارات التقنية مع المبررات
5. استراتيجية التوسع
6. المقايضات والبدائل المدروسة`} />

### تصميم مخطط قاعدة البيانات

<TryIt compact prompt={`صمم مخطط قاعدة بيانات لـ \${application:منصة تجارة إلكترونية}.

المتطلبات:
- \${feature1:حسابات المستخدمين مع الملفات الشخصية والعناوين}
- \${feature2:كتالوج المنتجات مع الفئات والمتغيرات}
- \${feature3:الطلبات مع عناصر السطر وتتبع الدفع}

قدم:
1. وصف العلاقات بين الكيانات
2. تعريفات الجداول مع الأعمدة والأنواع
3. الفهارس للاستعلامات الشائعة
4. علاقات المفاتيح الأجنبية
5. استعلامات نموذجية للعمليات الرئيسية`} />

## توليد التوثيق

### توثيق API

<TryIt compact prompt={`ولّد توثيق API من هذا الكود:

الكود:
\${code:الصق كود نقطة النهاية الخاصة بك هنا}

التنسيق: \${format:OpenAPI/Swagger YAML}

يتضمن:
- وصف نقطة النهاية
- مخططات الطلب/الاستجابة
- أمثلة على الطلبات/الاستجابات
- رموز الخطأ
- متطلبات المصادقة`} />

### التوثيق المضمن

<TryIt compact prompt={`أضف توثيقاً شاملاً لهذا الكود:

الكود:
\${code:الصق الكود الخاص بك هنا}

أضف:
- سلسلة توثيق الملف/الوحدة (الغرض، الاستخدام)
- سلاسل توثيق الدوال/الدوال (المعاملات، القيم المرجعة، الاستثناءات، أمثلة)
- تعليقات مضمنة للمنطق المعقد فقط
- تلميحات الأنواع إذا كانت مفقودة

النمط: \${docStyle:Google}`} />

## قوالب الأوامر من prompts.chat

### تصرف كمطور أول

```
أريدك أن تتصرف كمطور برمجيات أول. سأقدم كوداً وأطرح 
أسئلة عنه. ستراجع الكود وتقترح تحسينات وتشرح المفاهيم 
وتساعد في تصحيح الأخطاء. يجب أن تكون ردودك تعليمية 
وتساعدني على أن أصبح مطوراً أفضل.
```

### تصرف كمراجع أكواد

```
أريدك أن تتصرف كمراجع أكواد. سأقدم طلبات سحب مع 
تغييرات في الكود، وستراجعها بدقة. تحقق من الأخطاء 
ومشاكل الأمان ومشاكل الأداء والالتزام بأفضل الممارسات. 
قدم ملاحظات بناءة تساعد المطور على التحسن.
```

### تصرف كمهندس برمجيات

```
أريدك أن تتصرف كمهندس برمجيات. سأصف متطلبات النظام 
والقيود، وستصمم هندسات قابلة للتوسع وسهلة الصيانة. 
اشرح قرارات التصميم والمقايضات وقدم مخططات عند الحاجة.
```

## دمج سير عمل التطوير

### توليد رسائل الإيداع

<TryIt compact prompt={`ولّد رسالة إيداع لهذه التغييرات:

الفرق:
\${diff:الصق git diff هنا}

التنسيق: Conventional Commits
النوع: \${commitType:feat}

قدم:
- سطر الموضوع (50 حرفاً كحد أقصى، صيغة الأمر)
- الجسم (ماذا ولماذا، ملفوف عند 72 حرفاً)
- التذييل (يشير إلى المشاكل إن وجدت)`} />

### توليد وصف طلب السحب

<TryIt compact prompt={`ولّد وصف طلب سحب:

التغييرات:
\${changes:اذكر تغييراتك أو الصق ملخص الفرق}

القالب:
## الملخص
وصف موجز للتغييرات

## التغييرات المُجراة
- التغيير 1
- التغيير 2

## الاختبار
- [ ] تمت إضافة/تحديث اختبارات الوحدة
- [ ] تم إكمال الاختبار اليدوي

## لقطات الشاشة (إذا كانت هناك تغييرات في الواجهة)
placeholder

## المشاكل ذات الصلة
يغلق #\${issueNumber:123}`} />

## الملخص

<Callout type="tip" title="التقنيات الأساسية">
قم بتضمين السياق الكامل (اللغة، الإطار، القيود)، وحدد المتطلبات بدقة، واطلب تنسيقات إخراج محددة، واطلب الشروحات مع الكود، وضمّن الحالات الحدية للتعامل معها.
</Callout>

<Quiz 
  question="ما هو أهم عنصر يجب تضمينه عند طلب تصحيح الأخطاء من الذكاء الاصطناعي؟"
  options={[
    "لغة البرمجة فقط",
    "السلوك المتوقع والسلوك الفعلي ورسالة الخطأ",
    "مقطع الكود فقط",
    "اسم الملف"
  ]}
  correctIndex={1}
  explanation="يتطلب تصحيح الأخطاء سياقاً: ما يجب أن يحدث مقابل ما يحدث فعلياً. تساعد رسائل الخطأ وتتبعات المكدس الذكاء الاصطناعي على تحديد المشكلة بالضبط بسرعة."
/>

الذكاء الاصطناعي شريك برمجة قوي - استخدمه للتوليد والمراجعة وتصحيح الأخطاء والتوثيق مع الحفاظ على حكمك المعماري.
