توثيق مشروع "إثراء AI"
الكاتب و المهندس المسؤال عن التطوير : هيثم عادل الغباري
في الفترة من 26 ديسمبر 2025 إلى 1 يناير 2026، قمتُ بتصميم وإنهاء مشروع "إثراء AI" باستخدام تقنية ASP.NET Core. يهدف المشروع إلى تزويد منصة إثراء بمحتوى ذكي تلقائي يتم إنشاؤه بواسطة نموذج ذكاء اصطناعي متطور. يقدم هذا التوثيق شرحاً كاملاً للمشروع، بدءاً من تعريفه وأهدافه، مروراً بطريقة عمله النظرية، وصولاً إلى التحديات التي واجهتني والحلول التي طبقتها، بالإضافة إلى التفاصيل التقنية لتنفيذ المشروع.
ما هو المشروع وأهدافه الأساسية
-
وصف المشروع: هو برنامج Back-end يعمل كخدمة ذكية تابعة لمنصة إثراء. تمت برمجته لتوليد محتوى حديث (منشورات وأبحاث) تلقائيًا باستخدام نموذج ذكاء اصطناعي (Gemini).
-
أهدافه الرئيسية: أتمتة نشر المحتوى على المنصة يومياً، بحيث يتم الاستعانة بالذكاء الاصطناعي لإنشاء نصوص عربية جذابة وأكاديمية جديدة، دون تدخل يدوي مستمر. بذلك أصبح لدى المنصة مصدر دائم للمحتوى الجديد والمتنوع.
-
التقنيات المستخدمة: بُني المشروع باستخدام ASP.NET Core، ويعتمد على واجهات برمجة تطبيقات (APIs) خاصة بمنصة إثراء للتواصل مع قواعد البيانات، بالإضافة إلى واجهة خارجية نموذج ذكاء اصطناعي (Gemini API) لتوليد المحتوى.
الشرح النظري لعمل المشروع
البرنامج يعمل يومياً وفق جدول زمني محدد. في كل مرة، يتم تنفيذ سلسلة من الخطوات بشكل متتابع، كما يلي:
-
المصادقة (Authentication): أولاً أرسل طلبًا إلى واجهة المصادقة (
AuthEndpoint) باستخدام حساب وهمي مع بيانات الاعتماد المخزنة، للحصول على رمز وصول (Token) يسمح بإجراء العمليات التالية. -
جلب الأقسام (Categories): بعد الحصول على رمز الوصول، يستدعي البرنامج قائمة الأقسام المتاحة في منصة إثراء عبر دالة
GetCategorysAsync()، ليعرف فئات المحتوى المتوفرة. -
إعداد النص الموجه (Prompt): أبني نصّاً احترافياً يتضمن جميع عناوين الأقسام وأرقامها. هذا النص يُضاف إلى تعليمات أساسية (PostsPrompt) الموجودة في الإعدادات، ليتم إرساله إلى نموذج الذكاء الاصطناعي. الغرض من هذا النص هو توجيه الذكاء الاصطناعي لإنشاء منشورات جديدة حديثة، تحتوي على عنوان عربي جذاب وتفاصيل مختصرة ومصفوفة علامات (Tags).
-
استدعاء الذكاء الاصطناعي: أرسل نص الموجه إلى خدمة الذكاء الاصطناعي (
GenerateFromAi(postsPrompt)) وأنتظر استجابة محتوى بالصيغة JSON. يجب أن يتضمن هذا المحتوى حقول CategoryId وTitle وDetails وDescription وTags لكل منشور. -
نشر المنشورات: بعد استلام البيانات من الذكاء الاصطناعي، أتفحص قائمة المنشورات الواردة وأرسل كل منشور إلى واجهة
/contentالخاصة بالمنصة عبر الدالةPublishContentAsync. يتم تضمين رمز الوصول (Token) في كل طلب، كما يتم تحديد نوع المحتوى على أنه "post". ينشر البرنامج عادةً 5 منشورات أو أكثر كل يوم، وبذلك يتم تغذية المنصة بمحتوى جديد. -
إنشاء ونشر الأبحاث: بعد الانتهاء من منشورات المقالات، أقوم ببناء نص موجه جديد للأبحاث الأكاديمية (ResearchPrompt) بنفس الطريقة، وأرسل طلبًا للذكاء الاصطناعي. بعد استلام بيانات الأبحاث (مع نفس هيكل JSON)، أنشر كل بحث على المنصة أيضاً باستخدام
PublishContentAsyncمع النوع "research". -
وظيفة الدردشة (Chat): يوفر المشروع واجهة دردشة مع الذكاء الاصطناعي. يمكن للمستخدمين إرسال استعلامات مع كلمة مرور محددة إلى واجهة الدردشة، حيث يرد عليهم الذكاء الاصطناعي بنصوص أو تقارير مفيدة بحسب الطلب. هذه الميزة تدعم المستخدمين في الحصول على معلومات وتقارير حديثة عبر التحدث مع البوت.
بهذا التسلسل اليومي تكون المنصة قد استقبلت محتوىً جديداً متنوعاً تلقائياً، مما يسهم في إثراء الموقع بالمواد الحديثة.
التحديات والإنجازات
أثناء تطوير مشروع إثراء AI، واجهت عدة تحديات تقنية، ولكل منها توصلت إلى حلول مناسبة:
-
تحديد نقاط الفشل: كانت إحدى الصعوبات أن فشل عملية نشر المحتوى قد لا يبدو واضحاً. لتجاوز ذلك، أنفذت نظام تسجيل مفصل (Logging) لكل خطوة في سير العمل. مثلاً، إذا فشل إرساء منشور ما، يُسجل ذلك بدقة في اللوج ليُتاح لي لاحقاً فحص الخطأ وإصلاحه.
-
تعقيد سلسلة المهام: سير العمل اليومي يتضمن العديد من الخطوات المتتابعة (المصادقة، جلب الأقسام، بناء الموجه، استدعاء الذكاء الاصطناعي، النشر...). هذا التعقيد يتطلب تنسيقاً دقيقاً وإدارة جيدة للحالة. لذا قمت بتقسيم العملية إلى وحدات برمجية (خدمات) واضحة، واستخدمت نظام جدولة موثوق (Background Worker) لضمان تنفيذ المهام يومياً دون تداخل.
-
إدارة حالات إعادة المحاولة: بعض الطلبات الخارجية قد تفشل بسبب مشاكل مؤقتة (كعدم استجابة الخدمة، أو انتهاء صلاحية توكن). لذا ضمنت إمكانية إعادة المحاولة التلقائية عند الأخطاء البسيطة، مع التنبيه في السجلات لضرورة التدخل اليدوي إذا استمر الفشل.
-
النتائج: بفضل الحلول السابقة، نجحت في نشر المحتوى بشكل يومي منتظم تقريباً، مع إمكانية تتبع ومعالجة أي خطأ بسرعة. أصبحت عملية النشر والتوليد تتم بسلاسة، وحصلت المنصة على تدفق ثابت من المحتوى الجديد.
الشرح التقني المفصل للمشروع
جدولة المهام وتشغيلها يوميًا
استفدت من ميزة الخدمات الخلفية (Background Service) في ASP.NET Core لإنشاء عامل (Worker) جدولي اسمه DailyBackgroundWorker. عند تشغيل الخادم، يبدأ هذا العامل في انتظار الوقت المحدد في ملف الإعدادات (RunAtHour وRunAtMinute). عند الوصول إلى هذا الوقت، يقوم العامل بمناداة الدالة المسؤولة عن تنفيذ كامل عملية النشر التلقائي.
سير العمل داخل الكود
داخل خدمة النشر (IPublishingService)، تتم الخطوات التالية بالتتابع:
-
المصادقة (Authentication): تنفذ دالة
GetAuthTokenAsync()التي ترسل إلى نقطة النهايةAuthEndpointبيانات الحساب (Email/Password) المخزنة فيappsettings.json. تستلم هذه الدالة رمز توكن (Token) للدخول إلى باقي الواجهات. -
جلب الأقسام (Categories): تستدعي الدالة
GetCategorysAsync()واجهةCategorysEndpointفتسترجع قائمة بكل الأقسام المتاحة في المنصة. (مثلاً: "تقنية"، "منوعات"، إلخ). -
بناء نص الموجه (Prompt): أستخدم حلقة لتركيب نص يحتوي على قائمة الأقسام المسترجعة. يبدأ النص بسطر ثابت يوضح أن المعرف (ID) يجب أن يستخدم بدقة، ثم تُرتب أسماء الأقسام وأرقامها. بعد ذلك أدمج هذا النص مع الموجه الأساسي
PostsPromptالموجود في الإعدادات، للحصول علىpostsPromptالكامل. -
استدعاء الذكاء الاصطناعي: أرسل
postsPromptإلى الدالة المخصصة لاستدعاء نموذج الذكاء الاصطناعي (GenerateFromAi(postsPrompt)). تعود هذه الدالة بقائمة من الكائنات (Posts) التي تم إنشاؤها بصيغة JSON. -
نشر المنشورات: لكل منشور داخل القائمة:
-
أتأكد من عدم وجود قيمة فارغة لـ
CategoryId(وإذا كانت فارغة، أخصص القسم "عام" برقم معرف متاح). -
أرسل المنشور مع
Tokenإلى دالةPublishContentAsync(token, post, TypeCodes.Post). تحددTypeCodes.Postأن هذا المحتوى من نوع منشور عادي. -
أبث في سجل النظام (
_logger) نتيجة كل محاولة نشر، موضحاً إذا كان النشر ناجحًا (✅) أو فشل (❌).
-
-
إنشاء ونشر الأبحاث: أعيد العملية السابقة مع الموجه
ResearchPrompt. ترجع الدالةGenerateFromAi(researchPrompt)قائمة أبحاث، فأقوم بنشرها باستخدامTypeCodes.Research. وأيضاً أسجل نتيجة كل محاولة نشر بنفس الطريقة. -
التسجيل وإنهاء المهمة: في نهاية المهمة اليومية، أسجّل في السجل رسالة توضح أن العملية انتهت بنجاح مع التاريخ والوقت الحالي.
الإعدادات والتكويد البرمجي
اعتمدت في المشروع على ملف إعدادات مركزي (appsettings.json) يحتفظ بقيم مهمة، من بينها:
-
BotConfiguration:
-
يحتوي على روابط المنصة (
RootUrl) ونقاط النهاية (AuthEndpoint,ContentEndpoint,CategorysEndpoint) الخاصة بمنصة إثراء. -
بيانات الدخول (
Credentials) التي تضم البريد الإلكتروني وكلمة السر للمصادقة على المنصة. -
إعدادات جدولة المهام (
GlobalSettings) مثل تفعيل الجدولة ووقت التشغيل اليومي. -
رموز الأنواع (
TypeCodes) التي تميز نوع المحتوى المنشور (مثلاً "post" أو "research").
-
-
Prompts:
-
PostsPrompt: تعليمات مُفصّلة باللغة الإنجليزية (مع نص عربي) توجه الذكاء الاصطناعي لصياغة منشورات بشكل مصفوفة JSON. تحدد الحقول المطلوبة (العنوان، التفاصيل، الوصف، العلامات) وعدد العلامات (بالضبط 3 كلمات عربية قصيرة). -
ResearchPrompt: تعليمات خاصة بتوليد ملخصات بحثية أكاديمية، أيضاً بصيغة JSON، وتتضمن بنية HTML مصغرة للـ“Description” بالإضافة إلى شروط دقيقة في اللغة العربية.
-
-
GeminiSettings:
-
تشمل مفتاح API (
ApiKey) ونموذج الذكاء الاصطناعي (ModelNameمثل “gemini-2.5-flash”) وكلمة مرور خاصة للخدمة.
-
بهذه الإعدادات، يتم التحكم في جميع تفاصيل تشغيل البوت، مما يتيح تعديل الروابط أو الموجهات دون الحاجة لتغيير الكود البرمجي.
التحديثات المستقبلية
أعمل حالياً على إضافة ميزات جديدة للمنصة بالاعتماد على الذكاء الاصطناعي، منها:
-
خدمة دردشة متقدمة: تصميم واجهة تفاعلية (Chatbot) لإنتاج تقارير وتوصيات مخصصة عند الطلب. ستسمح هذه الخدمة للمستخدمين بسؤال البوت عن إحصائيات المحتوى أو طلب ملخصات تحليلية والحصول على إجابات حية.
-
تحليل المحتوى الحالي: استخدام الذكاء الاصطناعي لفحص المنشورات والأبحاث المنشورة وتحليلها، مثلاً لاكتشاف مواضيع شائعة أو اقتراح تحسينات لغوية.
-
توليد محتوى مُبتكر: بناء على التغذية الراجعة، يُمكن تطوير أنواع جديدة من المحتوى (مثل القصص المصغرة أو الأسئلة التفاعلية) التي تزيد من تفاعل المستخدمين مع المنصة.
هذه التحسينات تهدف إلى رفع قيمة المنصة وجذب المستخدمين من خلال تقديم محتوى غني ومتجدد وخدمات ذكية تسهّل إدارة المعرفة.
بهذا نكون قد أنهينا توثيق مشروع إثراء AI بشكله الشامل. يتضمن هذا المستند جميع جوانب المشروع من الفكرة وحتى التنفيذ، وآلية التشغيل اليومية، والتحديات التي تمت معالجتها. يمكن الرجوع إلى هذا التوثيق لفهم كل تفاصيل العمل والمنهجية المتبعة، وتطويرها مستقبلاً بما يتناسب مع احتياجات المنصة.
رابط منصة اثراء:اضغط هنا (رابط منصة اثراء)
رابط شركة سوفت كور (المطور الرسمي لمنصة إثراء) اضغط هنا شركة سوفت كور
رابط موقع الدردشة:اضغط هنا (رابط موقع الدردشة)
المهندس :هيثم عادل الغباري
.png)