أرِنا سير عملك

متابعة النقاش من لمحة عن ميزة Workflows الجديدة:

أنا متحمس جدًا لإطلاق ميزة Workflows. كنت أحلم بهذه الميزة عندما كنت مدير مجتمع نشط، وأبحث عن طرق لأتمتة العمليات التكتيكية المتكررة في المجتمع.

أنا فضولي للغاية لمعرفة ما هي الأشياء التي تستخدمون ميزة Workflows من أجلها (أو ستفعلونها، الآن بعد أن عرفتم بها!).

سأبدأ أنا — لكني سأقر بأنني اضطررت إلى تفويض بناء الميزة فعليًا إلى @zogstrip و @chapoi لأنني لا أملك المهارات اللازمة لذلك.

سير عمل تذكير التحديث الأسبوعي
الشيء الوحيد الذي نلزم به فريقنا هو إجراء تحديث أسبوعي واحد حتى نطمئن على أنهم بخير وسعداء. بعض الأشخاص لا يقومون بذلك (لسبب أو آخر)، ويضيع الوقت والطاقة في مطاردتهم، لذا لدينا حل جديد.

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

من المذهل مدى فاعليته!

16 إعجابًا

أحبّ CSS :laughing:! هل يمكنك مشاركته إذا أمكن؟

إعجابَين (2)

رجاءً لا تقل لي أنك… تريد أسوأ موضوع قمت بتصميمه على الإطلاق؟ :sweat_smile:

5 إعجابات

أنا فعلاً أضحك :laughing: . يبدو… إبداعياً جداً :eyes: .

إعجابَين (2)

إنه أمر مذهل حقًا. أعلم ذلك، لأنني أثناء محاولتي اختبار شيء غير ذي صلة، وضعتُ نفسي عن غير قصد في المجموعة 4، واضطررت إلى محاولة تصحيح المشكلة بينما كان كل شيء على الشاشة يطفو ويبتعد. :laughing: كان @zogstrip صبورًا للغاية.

إعجابَين (2)

ليس الأمر واضحًا تمامًا من نظرة عامة على سير العمل، لذا إليك كيف يعمل:

الجزء الأول - الصندوق الأصفر

  • لكل منشور يُنشأ أو يُحرَّر في فئة #updates، نتحقق مما إذا كان منشورًا من قِبل صاحب الموضوع الأصلي.
  • إذا لم يكن من صاحب الموضوع الأصلي، فإننا “نتوقف” عن المعالجة.
  • إذا كان من صاحب الموضوع الأصلي، نمرره عبر مصنّف يعتمد على نموذج لغوي كبير (LLM) يعيد بعض البيانات بتنسيق JSON تُظهر ما إذا كان المنشور تحديثًا أسبوعيًا حقيقيًا (لا نطلب تنسيقًا محددًا) وليس ردًا عشوائيًا على منشور آخر.
  • ثم نخزّن نتيجة التصنيف هذه في جدول بيانات.
  • إذا تم تصنيف المنشور على أنه تحديث أسبوعي، فإننا فورًا نزيل المستخدم من جميع مجموعات “المتأخرين” (الصندوق الأخضر).

الجزء الثاني - الصندوق الأزرق

  • كل يوم، في الساعة 6:00 صباحًا بتوقيت UTC، نُنفذ استعلامًا لاستكشاف البيانات يجمع بين جميع الإجازات والعطلات و"أحدث تحديث أسبوعي" لوضع الأشخاص في إحدى المجموعات الأربع لـ"المتأخرين".

الجزء الثالث - غير معروض في سير العمل

  • لدينا مكوّن مخصص لسمة العرض[1] يتحقق مما إذا كان المستخدم الحالي ضمن إحدى مجموعات “المتأخرين” ويطبّق المزيد من… الإزعاج :sweat_smile:

  1. يُطبَّق على جميع سمات العرض لدينا ↩︎

8 إعجابات

تتطلب بعض الوسوم أن تُستخدم، لكن الأعضاء لديهم عادة في النشر في الفئات غير الصحيحة، مما يعني أن الكثير من الوقت يُهدر في نقل المواضيع إلى المكان الصحيح.

عملية أساسية جدًا تعمل عند إنشاء الموضوع، حيث تفحص الوسوم المستخدمة ثم تغيّر الفئة تلقائيًا.

شيء بسيط كهذا ساعد في الحفاظ على بعض الهيكلية دون بذل أي جهد.

3 إعجابات

متابعةً لمنشور كتبته في موضوع سير العمل الأصلي. لقد توصلت إلى طريقة لجعله يعمل كما أريد. هذا كله مجرد اختبار بالطبع، لكن إليك ما يفعله:

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

المرحلة أ: تحديد الملخصات

تحديد المنشورات التي يزيد عمرها عن 30 يومًا، والتي تكون خليطًا من المعايير التالية:

-مواضيع شائعة لم يُنشر فيها منشور منذ فترة.
-مواضيع تحصل على عدد كبير من المشاهدات، لكن لم يُرد عليها منذ فترة.
-مواضيع كان فيها بعض النشاط خلال العام الماضي، ثم توقفت.

بمجرد العثور على موضوع، يُطلق وكيل “الملخص بالذكاء الاصطناعي” في Discourse. يُطلب من وكيل الذكاء الاصطناعي كتابة ملخص. يقوم بذلك عن طريق إرسال طلب HTTP إلى نقطة نهاية API الخاصة بالملخصات. بمجرد اكتمال الملخص، يُحفظ وجود سير العمل في جدول بيانات.

(يُنفذ هذا مرة واحدة في الساعة، لكن ربما أكثر من ذلك).

المرحلة ب: تقييم الملخص للمتابعة

سير عمل مجدول آخر يعمل بشكل مستقل على جدوله الخاص. يتحقق من جدول البيانات عن الصفوف التي تم تلخيصها ولكن لم يتم تقييمها بعد. يجلب موضوعًا واحدًا من جدول البيانات ثم يحصل على أحدث 5 إلى 10 منشورات على ذلك الموضوع.

يُمرر إلى وكيل ذكاء اصطناعي يتولى الفرز. يقوم باتخاذ قرار. هل هذا موضوع يجب إحياءه؟ وإذا كان كذلك، فكيف؟ يقرر ما إذا كان يجب رفع الموضوع، أو نشر رد يعيد التفاعل مع الموضوع: يطرح سؤالاً، أو يطلب متابعة، أو لا يفعل شيئًا على الإطلاق.

يُحدّث جدول البيانات بالقرار المتخذ.

(يجب أن يُنفذ هذا بنفس التكرار تقريبًا للمرحلة أ، يمكنك أيضًا تشغيله من المرحلة أ أو دمجه معها.)

المرحلة ج: إعادة التفاعل مع الموضوع

سير عمل مجدول آخر يعمل على جدوله الخاص، وليس بنفس التكرار. خطوته الأولى هي التحقق من مدى نشاط المنتدى مؤخرًا. يفعل ذلك بفحص عدد المنشورات التي تم إجراؤها في المتوسط في الساعة، خلال آخر 3 ساعات. ثم يأخذ المتوسط لمدى انشغال المنتدى خلال فترات مدتها 3 ساعات، في نفس اليوم والوقت خلال آخر شهرين. إذا لم يكن الموقع مشغولًا كما هو معتاد في نفس الوقت من نفس اليوم، فسيقول ‘يمكننا إجراء إعادة تفاعل الآن’.

ثم يجلب ما يصل إلى 10 فرص متاحة لإعادة التفاعل. يرسلها إلى وكيل ذكاء اصطناعي ويطلب استخراج أقوى مرشح لإعادة التفاعل من القائمة. يقرر الذكاء الاصطناعي ويعيد topic_id. كان مصنف المرحلة ب قد قرر بين 3 خيارات: رفع الموضوع، نشر متابعة، أو عدم فعل شيء.

سيقوم سير العمل برفع الموضوع ما لم يُحدد أنه متابعة. إذا كان المصير هو المتابعة، فسوف يأخذ معرّف الموضوع ويجلب أحدث المنشورات من ذلك الموضوع. سيُمررها إلى وكيل ذكاء اصطناعي سيحدد ما هي أفضل استجابة لإعادة التفاعل مع الموضوع. لديه ضوابط لضمان رد أساسي جدًا، لا يزال في صدد الموضوع ولا يقدم توصيات أو تعليقات. يطلب بشكل أساسي تحديثًا، أو يسأل إذا كان لدى المنشئ الأصلي أي تحديث حول شيء حدث.. إلخ. ينشر الرد ثم يُحدّث جدول البيانات بتاريخ الإكمال.

آمل ألا أكون قد نسخت ببساطة ميزة مخفية في Discourse لم أكن أعرف بها! استغرق الأمر بعض التجربة والخطأ، لكنني أنجزته.

8 إعجابات

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

أعتقد أنها عامة إلى حد كبير، إذا كنت ترغب في تجربتها على موقعك الخاص. ما عليك سوى تغيير معرّف الموضوع (topic ID) حيث تُشارك النتائج في العقدة الأخيرة إلى موضوع في فئة الموظفين الخاصة بك.

(قد تحتاج إلى تحرير يدوي قبل الاستيراد. لقد قمت بتجاوزها يدويًا إلى TOPIC_ID بعد التصدير للمساعدة في تجنب الحوادث)

تقرير الإشراف الأسبوعي
الملف: weekly-moderation-report.json (21.4 KB)

  • يتضمن جداول تدرج:
    • ملخص الإشراف (عدد إجراءات الإشراف المختلفة)
    • عدد الأعلام التي عالجها مستخدمون مختلفون
    • عدد الأعلام التي أبلغ عنها مستخدمون مختلفون
    • قائمة المنشورات المعلَّمة مع البيانات الوصفية المرتبطة بها
    • التحذيرات الصادرة
    • ملاحظات المستخدمين المضافة

تقرير إعدادات الموقع الأسبوعي
الملف: weekly-site-settings-report.json (3.3 KB)

  • يتضمن جدولًا يدرج إعدادات الموقع التي تم تغييرها
    • اسم الإعداد
    • من قام بتغييره ومتى
    • القيمة القديمة، القيمة الجديدة

تقرير مستوى الثقة الأسبوعي
الملف: weekly-trust-level-report.json (9.8 KB)

  • يتضمن جداول تدرج:
    • ملخص (عدد المستخدمين المقترحين لكل مستوى ثقة في الأسبوع الماضي)
    • قائمة المستخدمين الذين حصلوا على مستوى ثقة 2 أو 3
10 إعجابات

نحن نستخدم حاليًا سير العمل (Workflows) على نطاق واسع في مجتمعنا على Discourse، وهي تصبح جزءًا مفيدًا حقًا في عملية استقطاب الأعضاء الجدد وإدارة الفعاليات.

يضم مجتمعنا أكثر من 9,000 مستخدم مسجّل، والعديد من مجموعات الدعم المتبادل المختلفة عبر الإنترنت وفي الواقع، لذا يساعدنا الأتمتة كثيرًا.

إليك بعض سير العمل التي نستخدمها حاليًا:

:waving_hand: استقطاب شخصي

يتلقى المستخدمون الجدد رسائل شخصية آلية بعد التسجيل.

يعتمد المحتوى على الاهتمامات التي اختاروها أثناء التسجيل (مثل مجموعات الدعم المتبادل، الفعاليات، مقهانا الافتراضي، أو المرافقة الجسدية (body doubling) أو المراسلات المكتوبة).

وبعد بضعة أيام، يتلقون رسالة متابعة ثانية تتضمن معلومات إضافية ومساعدة على البدء.

:date: تذكيرات بالفعاليات

نستخدم سير عمل مجدول يتحقق كل 15 دقيقة من الفعاليات التي تبدأ خلال حوالي 24 ساعة.

يتلقى المستخدمون الذين اختاروا حاضر أو مهتم تذكيرًا شخصيًا يتضمن عنوان الفعالية، والتاريخ، والوقت، ورابطًا يعود إلى الفعالية.

لدينا أيضًا بعض المجموعات التي لديها سير عمل تذكير خاص بها، لذا يستثني سير العمل العام هؤلاء المستخدمين لمنع تكرار التذكيرات.

:laptop: تعليمات alfaview حسب السياق

تلتقي العديد من مجموعات الدعم المتبادل لدينا عبر الإنترنت باستخدام alfaview، بينما تُقام فعاليات أخرى عبر Zoom أو في الواقع.

لذلك، نتحقق من منشور الفعالية بحثًا عن رابط alfaview.

إذا كان هناك رابط alfaview، يتضمن تذكير الـ 24 ساعة تلقائيًا دليلًا قابلًا للتوسيع خطوة بخطوة يشرح كيفية دخول غرفة الانتظار ثم اختيار غرفة الاجتماع الصحيحة، بما في ذلك لقطة شاشة.

إذا لم يكن هناك رابط alfaview، يُرسل التذكير المعتاد دون هذه التعليمات.

هذا يعني أنه لا يلزمنا الحفاظ على قوائم للمجموعات “الافتراضية” و"الواقعية".

:door: استقطاب لاجتماعات الفيديو

نستخدم أيضًا سير عمل النماذج كخطوة استقطاب قصيرة قبل وصول المستخدمين إلى غرف اجتماعات الفيديو لدينا لأول مرة.

يتلقى المستخدمون تعليمات تشرح كيفية عمل هيكل غرف alfaview لدينا. وبعد قراءتها، يمكنهم اختيار ما إذا كانوا يريدون رؤية التعليمات مرة أخرى في المرة القادمة.

إذا اختاروا عدم رؤيتها مرة أخرى، يضيفهم سير العمل إلى مجموعة علامة. ثم يستخدم مكوّن الثيم لدينا ذلك الانتماء إلى المجموعة لإظهار رابط اجتماع الفيديو المباشر بدلاً من نموذج الاستقطاب.

:bell: إشعارات محددة للمجموعات

نستخدم سير العمل لإشعار أعضاء مجموعات معينة بالفعاليات الجديدة والاجتماعات القادمة.

هذا مفيد بشكل خاص لمجموعات الدعم المتبادل حيث نريد أن يتلقى الأعضاء إشعارًا بغض النظر عما إذا كانوا يزورون المنتظم بانتظام أم لا.


ما يعجبني بشكل خاص في سير العمل هو قدرتنا على دمج النماذج، واستعلامات SQL، والمجموعات، والتحقق المجدول، والرسائل الشخصية.

لا يزال هناك بعض الأشياء التي أحب أن أراها في المستقبل. مثال على ذلك هو تحسين التكامل مع التقويم: في المثالي، عندما يختار شخص ما حاضر لفعالية، نود أن نرسل إليه بريدًا إلكترونيًا مرفقًا به ملف تقويم .ics تلقائيًا.

11 إعجابًا

حالة استخدام مثيرة للاهتمام للغاية، بالتأكيد شيء يستحق التفكير فيه @j.jaffeux / @martin / @lindsey

أتساءل إذا كان هذا سينتمي إلى سير العمل أم أنه ميزة مدمجة في أحداث ديسكورس؟

5 إعجابات

شكرًا على هذا الملاحظات القيمة ومشاركتك تجربتك، إنه رائع أن نرى كيف تستخدمون جميعًا سير العمل، وكيف تحل هذه الميزات مشاكل حقيقية لمجتمعاتكم :heart:

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

7 إعجابات

مُشعِر تحديثات Discourse

image

ينشئ هذا المسار (workflow) منشورًا في موضوع مخصص بعد كل تحديث لإصدار Discourse الخاص بالمنتدى.

يميل الأعضاء القدامى في منتدائي إلى أن يكونوا متحفظين على تغييرات تجربة المستخدم (UX). أحيانًا يعبرون عن إحباطهم بسبب نقص الشفافية من إدارة المنتدى فيما يتعلق بهذه التغييرات. كما أنهم مهتمون تقنيًا بشكل كبير، ولديهم اهتمام طبيعي ببنية المنتدى التحتية.

إحدى مصادر هذه التغييرات هي تحديثات إصدار Discourse الخاص بالمنتدى. قد لا يكون لدى مدير منتدى يستخدم أحد خطط استضافة Discourse الرائعة رؤية كافية حول هذه التحديثات، نظرًا لأنها تُقدَّم كجزء من خدمة الاستضافة. من المفيد للغاية بالطبع أن تتولى فريق Discourse الرائع هذه التحديثات نيابةً عنا، لكن هذا يجعل من الصعب على مدير المنتدى التواصل بفعالية مع المجتمع حول التغييرات التي تجلبها التحديثات.

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

إليك مصدر المسار:

discourse-update-notifier.json (18.7 KB)

التثبيت

  1. حمّل مصدر المسار من الرابط أعلاه.
  2. انتقل إلى صفحة “Workflows” في واجهة الإدارة الخاصة بمنتداك (/admin/plugins/discourse-workflows/workflows).
  3. انقر على زر “+New workflow”.
    سيتم إنشاء مسار جديد وفتحه.
  4. انقر على زر ⋮ في الزاوية العلوية اليمنى من لوحة المسار.
    ستُفتح قائمة.
  5. اختر “Import” من القائمة.
    ستُفتح نافذة الحوار “Open”.
  6. اختر ملف discourse-update-notifier.json من نافذة الحوار.
  7. انقر على زر “Open” في نافذة الحوار.
    سيتم إضافة محتوى المسار.
  8. اتبع التعليمات الإضافية المقدمة في “الملاحظة اللاصقة” (sticky note) التي ستظهر الآن في لوحة المسار.

عرض توضيحي

يمكنك الاطلاع على مثال على نوع المنشورات التي ينتجها هذا المسار هنا:

15 إعجابًا

إذا كنت تتابع معنا حتى الآن، فكُن على موعد مع الويبينار القادم الذي سنقيمه حول سير العمل في 2026-09-17T18:00:00Z: Webinar: Exploring Discourse Workflows

7 إعجابات

## مزامنة نطاقات البريد الإلكتروني المحظورة

تُعد عناوين البريد الإلكتروني المؤقتة طريقاً شائعاً لتسجيلات البريد المزعج والحسابات التي تُستخدم لمرة واحدة. يتوفر في Discourse بالفعل إعداد blocked_email_domains لهذا الغرض، لكن قائمة المجتمع على disposable-email-domains تضم حوالي 10,000 نطاق – وهي كبيرة جداً بحيث يصعب صيانتها عن طريق لصقها في واجهة الإدارة.

وجدنا أيضاً أن نسخة قديمة ملصقة من تلك القائمة كانت تحتوي على حرف إرجاع مخفي (carriage return) ملتصقاً بكل مدخل تقريباً، مما جعل Discourse يطابق عدداً قليلاً من النطاقات فقط. تعيد هذه سير العمل بناء قيمة نظيفة منفصلة بـ | أسبوعياً من المصدر الأصلي، وتُبقي عدداً من نطاقات الأسماء المستعارة للخصوصية ومزودي الخدمات الرئيسيين غير محظورين، ولا تجري الكتابة إلا عند حدوث تغيير فعلي.

إليك مصدر سير العمل:

المصدر على GitHub: GitHub - hhftechnology/discourse-workflow-blocked-email-domains: Discourse Workflows: keep blocked_email_domains synced with the disposable-email-domains list · GitHub

### التثبيت

1. قم بتنزيل مصدر سير العمل من الرابط أعلاه.

2. انتقل إلى صفحة “Workflows” (سير العمل) في واجهة إدارة منتداك (/admin/plugins/discourse-workflows/workflows).

3. انقر على زر “+ New workflow” (سير عمل جديد).

سيتم إنشاء سير عمل جديد وفتحه.

4. انقر على زر ⋮ في الزاوية العلوية اليمنى من لوحة سير العمل.

ستفتح قائمة.

5. اختر “Import” (استيراد) من القائمة.

ستفتح نافذة “Open” (فتح).

6. اختر ملف blocked-email-domains-sync.json من النافذة.

7. انقر على زر “Open” (فتح) في النافذة.

ستتم إضافة محتوى سير العمل.

8. اتبع التعليمات الإضافية المذكورة في “sticky note” (ملاحظة لاصقة) ستظهر الآن في لوحة سير العمل.

### آلية العمل

1. **الاثنين 04:30** (cron، بحسب المنطقة الزمنية لسير العمل) تبدأ عملية التشغيل.

2. **Fetch upstream list** (جلب القائمة من المصدر) يُنزّل disposable_email_blocklist.conf من GitHub. لا حاجة لمفتاح API.

3. **Build list** (بناء القائمة) تُحوّل الحروف إلى أحرف صغيرة وتُزيل المسافات الزائدة، وتتجاهل الفارغات والتعليقات، وتضيف اختياراتك من EXTRAS (إضافات)، وتزيل EXCLUDE (الاستثناءات: الافتراضيات هي simplelogin.com، passmail.net) وقائمة SAFE (آمنة) لمزودي الخدمات الرئيسيين، وتحتفظ بأسماء المضيفين (hostnames) الصالحة فقط، وتزيل التكرارات، وترتب العناصر، وتصلها بـ |. وتتوقف دون كتابة إذا بدت القائمة الأصلية مقطوعة أو احتوت على أقل من 5,000 مدخل.

4. **Changed?** (هل تغيرت؟) تستمر فقط إذا كانت القيمة المبناة تختلف عن الإعداد الحالي (بما في ذلك المسافات البادئة المتبقية).

5. **Save blocked_email_domains** (حفظ النطاقات المحظورة للبريد الإلكتروني) تستخدم عقدة إعداد الموقع الخاصة بالإضافة كـ system، لذا لا حاجة لمفتاح API خاص بالإدارة.

6. **Verify** (تحقق) تقرأ الإعداد مرة أخرى وتتأكد من تطابقه.

7. **Alert: list changed** (تنبيه: قائمة متغيرة) (اختياري) تنشر ملخصاً قصيراً في قناة الدردشة المحددة في المتغير العام $vars.alerts_channel – قم بإنشاء هذا المتغير، أو احذف عقدة Alert (تنبيه).

على قائمة تضم حوالي 10,000 نطاق، تستغرق هذه العملية حوالي 330–490 مللي ثانية من الزمن الفعلي، مع حوالي 33–51 مللي ثانية من زمن تنفيذ الكود ضمن الحد المسموح البالغ 1000 مللي ثانية.

يمكن أن تضيف أول عملية تشغيل آلاف النطاقات. قم بتشغيلها مرة واحدة يدوياً، وتحقق من سجل “Executions” (عمليات التنفيذ)، ثم انشرها. يقع الإعداد تحت: الإدارة → الإعدادات → blocked_email_domains.

تحديث— الأسبوع 3

إعجابَين (2)

هذه فكرة رائعة! لقد قمت بلصق ذلك الشيء في واجهة Discourse قبل سنوات، وكانت المتصفح يتجمد في كل مرة يتم فيها تحميل هذا الإعداد على الشاشة :smiley:
حلّك أنظف بكثير، رائع حقاً!

إعجابَين (2)

كان هذا مصدر ارتياح كبير. يمكننا رؤية الفرق على المنتدى. لم أكن أرغب في إنشاء إضافة فقط لهذا الغرض وخلق عبء إضافي. تحل سير العمل (Workflows) الكثير من التفاصيل الصغيرة لجعل منتداك شخصيًا وسهل الاستخدام.

3 إعجابات

هل يستحق الأمر إنشاء فئة مخصصة فقط لسير العمل، على غرار Theme component أو Plugin أو #customization:extras؟

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

أحد الأشياء التي يمكن أن تساعد في تبسيط مشاركة سير العمل هو حل بنقرة واحدة لتنظيفها وإفراغ الحقول الخاصة بالفئات وبيانات الاعتماد وأسماء المستخدمين والمجموعات، إلخ، عبر تعيين قيمها كـ null.

3 إعجابات