SmartShop RAG Product Advisor
مساعد تسوّق محلي: استرجاع هجين وإعادة ترتيب بمرمِّز متقاطع فوق كتالوج المتجر نفسه.
مشروع شخصي متكامل: تطبيق بـ FastAPI وReact يتعلّم أسلوب الكتابة من منشورات مستورَدة، ويصوغ منه منشورات وردودًا جاهزة لكل منصة، ويمرّر كل مسوّدة على بطارية ضوابط، ولا ينقل شيئًا إلى الطابور دون اعتماد صريح. ويُجدوَل المحتوى المعتمد ويُنشر مرة واحدة تمامًا عبر عمّال Celery من خلال واجهات OAuth الرسمية للمنصات؛ وتُستوعَب التعليقات الواردة وتُخيَّط وتُفرَز إلى طابور المراجعة نفسه. حلقة الإنشاء ← الاعتماد ← النشر ← التفاعل مكتملة ومختبَرة من طرفها إلى طرفها على محوِّل منصة صوري — ولم يُربط بعد أي حساب حقيقي.
يصوغ SocialAgent منشورات التواصل بصوت صاحبها، ويجدولها، ويصوغ ردودًا على التعليقات العائدة — ويضع قرارًا بشريًا أمام كل واحدة منها.
وخطوة الاعتماد ليست إعدادًا. تنتقل المسوّدة `draft ← approved ← queued ← published`، والانتقال إلى الطابور هو الطريق الوحيد إلى النشر، مفروضًا في نموذج البيانات ومؤكَّدًا بالاختبارات. ولا مفتاح يوقفه.
وهو مكتمل برمجيًا في نطاق النسخة الأولى: ملفات الصوت، والصياغة، والضوابط، والاعتماد، والجدولة، والنشر، واستيعاب التعليقات، وصياغة الردود، وتقويم المحتوى، ومقاييس التقييم، وواجهة React لكل ذلك. وما لم يحدث هو الاتصال بمنصة حقيقية — فكل تكامل مُتحقَّق منه على محوِّل صوري ريثما تُنجَز مراجعات تطبيقات المنصات، ولهذا يقف المشروع نموذجًا أوليًا لا شيئًا منشورًا.
الأدوات التي تنشر تلقائيًا نيابةً عن أحد تميل إلى إنتاج محتوى يُقرأ وكأن أحدًا لم يكتبه، لأن أحدًا لم يكتبه فعلًا. وليس هذا خللًا عارضًا — فالمنشور خارج الصوت هو المخرج المعتاد، ويكتشفه صاحبه وقد صار علنيًا.
ولذلك لم يكن سؤال التصميم يومًا «كم يمكن أتمتته؟» بل «أين يقع القرار البشري، وما الذي يمنع تخطّيه؟». ووضع تلك البوابة في مخطط البيانات لا في سياسة مكتوبة هو القرار الذي بُني حوله سائر النظام.
العمل على المحتوى متكرر بما يكفي لتتمنى معه عونًا، وشخصي بما يكفي لأن تُفقِد أتمتتُه الكاملة الغرضَ منه — والأنظمة التي تؤدّيه تمسّ هوية صاحبها العلنية وحساباته على المنصات وبيانات اعتماده.
دوري في المشروع
هذا مشروعي الخاص، بنيتُه من طرفه إلى طرفه: مجموعة التخطيط التي سبقت الكود، ونموذج البيانات وترحيلاته، والمصادقة وخزنة الرموز المشفَّرة، وتكاملات OAuth، واستخراج الصوت وتوليد المسوّدات خلف تجريد للمزوّد، وبطارية الضوابط، وبوابة الاعتماد، وعمّال الجدولة والنشر، واستيعاب التعليقات وصياغة الردود، وأداة التقييم والمقاييس، وواجهة React، وخط التكامل المستمر وبواباته.
بناء الحلقة بترتيب جريانها، وجعل البوابة البشرية خاصيةً في نموذج البيانات لا خطوةً يُؤتمَن الكود على استدعائها.
يُصاغ الموجز أو خانة التقويم على ملف صوت مستخرَج من منشورات مستورَدة. وتمرّ كل مسوّدة — منشورًا كانت أو ردًّا مكتوبًا من تعليق مستوعَب — على بطارية الضوابط، ثم تنتظر في بوابة الاعتماد، وهي الانتقال الوحيد القادر على وضعها في الطابور. ويُجدوَل المعتمد ويُنشر مرة واحدة تمامًا بعمّال Celery عبر واجهة OAuth للمنصة، برموز محفوظة في خزنة مشفَّرة بـ Fernet. وتغذّي قرارات الاعتماد مقاييسَ التقييم.
دليل أسلوب مستخرَج من منشورات كتبها صاحبها فعلًا، وقابل للتحرير بعدها.
مسوّدات مكتوبة وفق حدود المنصة الهدف وأعرافها، لا منشورًا عامًا واحدًا.
قواعد حتمية وفحوص بالنموذج ومسح لحقن الأوامر تعمل قبل أن يُسأل إنسان الاعتماد.
الاعتماد هو الانتقال الوحيد الذي يضع عنصرًا في الطابور، مفروضًا في المخطط ومؤكَّدًا بالاختبارات.
يصمد العمل المجدوَل أمام إعادة تشغيل العامل: مواعيد الاستحقاق في قاعدة البيانات، والخانة الفائتة يُلحَق بها أو يُنبَّه عليها.
تُنزع تكرارات التعليقات وتُخيَّط وتُصنَّف؛ وتعود الردود المقترحة عبر البوابة نفسها.
بيانات اعتماد OAuth مشفَّرة في السكون، لا تُسجَّل ولا تعيدها الواجهة أبدًا.
معدّل التحرير لكل ملف صوت ومعدّل اجتياز السلامة في الإنتاج، ومجموعة ذهبية خارج التشغيل تحكم تغييرات الـ Prompt.
محاكاة الأسلوب هي الجزء الأرجح فشلًا على نحو أسوأ من عدم المحاولة — فالاقتراب غير المصيب من صوت أحدهم يُقرأ زائفًا.
تُبقي البوابة المسوّدة الرديئة خاصة، ويحوّل معدّل التحرير لكل ملف صوت سؤالَ «هل يشبهني هذا؟» إلى شيء مرئي لا إلى شعور.
أوقف أولُ تشغيل لأداة التقييم الإصدارَ: على نموذج التطوير المحلي، سقطت بوابة السلامة في الحالات العدائية، وأُطيع حقنُ أوامر مصوغ بلباقة إطاعةً كاملة.
أمسكت الضوابط بكل تلك الإخفاقات، وهو ما يتنبأ به التصميم المتعدد الطبقات — لكن التشغيل حسم أيضًا مسألة النموذج: النموذج المحلي الصغير صالح للبناء عليه ولا يصلح لصياغة شيء علني. ولم يُحفَظ خطُّ أساس، لأن تشغيلًا فاشلًا لا يصحّ أن يصير المعيار.
كل قرار يواجه المنصات — أشكال المسارات والحمولات وتثبيت إصدارات الواجهات وما تسمح به كل منصة للأتمتة — غير قابل للتحقق حتى تُنجَز مراجعة التطبيق.
تقف التكاملات خلف واجهة محوِّل واحدة بتنفيذ صوري، فأمكن بناء الحلقة كاملة واختبارها دون انتظار — مع الإقرار بأن هذه أكبر مساحة غير مختبَرة في المشروع.
| القرار | البديل المطروح | المبرر |
|---|---|---|
| جعل الاعتماد انتقالَ حالة في نموذج البيانات. | وضع نشر تلقائي قابل للإعداد، أو اعتماد مفروض في طبقة الخدمات. | يحدّ الاعتماد من قدر الوقت الذي توفّره الأداة، وهذا كل مغزى المقايضة: أن يبقى المحتوى محتوى صاحبه. ووضعه في المخطط يعني أن ميزة لاحقة لا تستطيع الالتفاف حوله بهدوء — والثمن أن تصير ميزات الراحة كقواعد الاعتماد التلقائي عملًا مقصودًا لا راية إعداد. |
| بناء الحلقة كاملة على محوِّل منصة صوري. | انتظار مراجعة تطبيق المنصة قبل بناء النصف المعتمد على التكامل. | لم ينتظر شيء في الجدول طابورَ مراجعة خارج سيطرة المشروع، وبقي التكامل المستمر بلا اتصال وسريعًا. وفي المقابل، يبقى كل تفصيل خاص بالمنصات غير متحقَّق منه حتى تصل بيانات الاعتماد، وعلى مجموعة القبول أن تُعاد على حساب اختباري حقيقي قبل أن يُحسَب أي من ذلك عاملًا. |
| تشغيل نموذج محلي صغير في التطوير خلف تجريد للمزوّد. | التطوير مباشرةً على النموذج المستضاف المقصود للإنتاج. | الاستدلال المحلي لا يكلّف شيئًا، ويُبقي منشورات العيّنة على الجهاز، ويتيح لمجموعة الاختبارات تزييف المزوّد بالكامل. وهو أيضًا لا يجامل: النموذج الأضعف هو ما كشف حجم ما كانت الضوابط تحمله فعلًا. والمأخذ أن قراءات الجودة المأخوذة في التطوير لا تنتقل، فيلزم إعادة التقييم على نموذج الإنتاج قبل أن تعني درجاته شيئًا. |
الحلقة كاملة تعمل من طرفها إلى طرفها: استيراد عيّنات كتابة، واستخراج صوت، وصياغة منشور أو رد، واجتياز الضوابط، والاعتماد يدويًا، ثم مشاهدته يُنشر في موعده — مع تعليقات تعود وتُفرز ويُردّ عليها عبر البوابة نفسها. وتغطي واجهة React ذلك كله: المحرِّر وصندوق الاعتماد وتقويم المحتوى والإعدادات.
وهو بصدق نموذج أولي لا شيء منشور. فكل تفاعل مع المنصات متحقَّق منه على محوِّل صوري لأن مراجعات التطبيقات معلّقة، وأداة التقييم شُغِّلت مرة فأوقفت الإصدار على نموذج التطوير المحلي، ولا استضافة إنتاجية بعد. وما يتبقى نظام مكتمل ومختبَر بحافة واحدة غير متحقَّق منها — وسجل مكتوب يحدد أين تقع تلك الحافة بالضبط.
ستُضاف لقطات الشاشة لاحقًا
هل لديك مشروع برمجي أو ذكاء اصطناعي أو RAG أو تطبيق ويب؟ لنتحدث عمّا تحتاجه ونحدد المنهج التقني المناسب.