→ المدونة
شروحات18 د قراءةThe Taskfolk team6 مشاهدةحُدِّث في

كيفية إعداد قواعد الأتمتة

XLinkedIn

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

يشرح هذا الدليل قواعد الأتمتة في Taskfolk من الصفر. ستتعلم قراءة أي قاعدة كجملة واحدة واضحة، واختيار المشغّل المناسب، وتضييق نطاقه بالشروط، وترتيب إجراءات تحترم سير عملك، ثم مراجعة سجل التشغيل حتى تثق فعلًا بما بنيته. تعتمد الأمثلة كلها على مشروع WEB التجريبي (أعمدته: قائمة الانتظار، للتنفيذ، قيد التنفيذ، قيد المراجعة، منجزة، وبالإنجليزية Backlog وTo Do وIn Progress وIn Review وDone)، فيقع كل مثال على شيء ملموس بدل الكلام العام.

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

ماذا تفعل قواعد الأتمتة في Taskfolk فعلًا

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

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

افتح صفحة الأتمتة من الشريط الجانبي لمساحة العمل. تجدها على المسار /w/[workspace]/automations وهي نقطة الانطلاق لكل ما يلي. يقول العنوان الفرعي إن القواعد "تنفّذ إجراءات تلقائيًا عندما تقع أحداث في مساحة عملك"، وتحته مباشرةً السطر الذي يلخص النموذج كله: كل قاعدة تُقرأ هكذا: عندما يقع شيء، إذا طابق شروطك، فنفّذ هذه الإجراءات. في أعلى اليسار زر + أتمتة جديدة وعدّاد استخدام صغير يعرض "{used} / {limit}" من قواعد الأتمتة حتى تعرف دائمًا كم بقي لك قبل بلوغ الحد.

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

صفحة قائمة الأتمتة في Taskfolk وتظهر فيها عنوان الصفحة والعنوان الفرعي، وسطر شرح نموذج WHEN وIF وTHEN، وزر + أتمتة جديدة مع عدّاد استخدام الخطة، وبطاقات القواعد الحالية بصفوف شرائح WHEN ثم IF ثم THEN، وشبكة ابدأ من وصفة بست بطاقات جاهزة. هذه هي الصفحة الرئيسية للميزة وفيها تقرر بين وصفة جاهزة وبناء من الصفر.

نموذج "عندما / إذا / فنفّذ" يُقرأ كجملة

كل قاعدة في Taskfolk جملة واحدة من ثلاثة أجزاء، ويعنونها المحرر بالشارات WHEN وIF وTHEN. ما إن يستقر هذا النموذج في ذهنك حتى تقرأ أي قاعدة بنظرة واحدة وتكتب واحدة دون تفكير في الواجهة.

WHEN هو المشغّل: حدث واحد بالضبط. القاعدة تنطلق عند وقوع شيء واحد، لا قائمة أشياء. وهذا مقصود؛ فالقاعدة التي "تؤدي المهمة نفسها" لحدثين مختلفين هي في الحقيقة قاعدتان، وحصرها في مشغّل واحد يبقي سجل التشغيل مقروءًا.

IF هو الشروط: صفر أو أكثر. هنا تكسب القاعدة قيمتها، لأن مشغّلًا مثل "عند إنشاء مهمة" ينطلق باستمرار، والشروط هي طريقتك في قول "نعم، لكن فقط ما يهمني منها". تختار بين مطابقة كل الشروط (يجب أن يتحقق كل شرط) ومطابقة أي شرط (يكفي شرط واحد). وإن لم تضف أي شرط عرضت القاعدة "تعمل مع كل حدث مطابق"، وهي عبارة صادقة عما ستفعله: الانطلاق مع كل مرة يقع فيها المشغّل.

THEN هو الإجراءات: واحد أو أكثر، تُنفَّذ بالترتيب من الأعلى إلى الأسفل. الترتيب مهم، ولهذا يمكنك إعادة ترتيبها.

flowchart LR
    E[Event in workspace] --> W{WHEN trigger matches?}
    W -- no --> X[Nothing happens]
    W -- yes --> I{IF conditions pass?}
    I -- no --> X
    I -- yes --> T[THEN actions run in order]
    T --> H[Run logged in history]

يوضح المخطط المسار: حدث في مساحة العمل (Event in workspace) يمر على المشغّل ثم الشروط، فإما لا يحدث شيء (Nothing happens) وإما تُنفَّذ الإجراءات بالترتيب ويُسجَّل التشغيل في السجل (Run logged in history).

وهذه قاعدة ملموسة من مشروع WEB مقروءة كجملة: عندما يُنشأ خطأ، إذا كان نوعه "خطأ"، فاضبط حالته على "للتنفيذ" وأولويته على "عالية". في المحرر يعني ذلك مشغّلًا واحدًا (عند إنشاء مهمة)، وشرطًا واحدًا (النوع هو خطأ)، وإجراءين مرتّبين (ضبط الحالة ثم ضبط الأولوية).

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

ابدأ من وصفة أو ابنِ من الصفر

هناك مدخلان لبناء قاعدة، واختيار الصحيح منهما يوفر وقتًا حقيقيًا.

تعرض صفحة القائمة ست وصفات جاهزة، كل واحدة بطاقة تحمل ملخص WHEN وIF وTHEN الخاص بها:

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

بطاقات وصفات الأتمتة في Taskfolk، ومنها وصفة فرز الأخطاء الجديدة التي توجّه الأخطاء الجديدة لحظة إنشائها. تحمل كل بطاقة ملخص WHEN وIF وTHEN الخاص بها فتقرأ القاعدة قبل فتحها.

انقر أي بطاقة وصفة فيفتح المحرر معبَّأً مسبقًا عبر /new?recipe=<key>، والمشغّل والشروط والإجراءات جاهزة. وهنا ما يفوت كثيرين: الوصفة ليست قالبًا مقفلًا. لحظة فتحها تصبح قاعدة قابلة للتعديل بالكامل: غيّر المشغّل، بدّل شرطًا، أضف ثلاثة إجراءات أخرى، أعد التسمية. لا شيء مجمّد؛ الوصفة تعفيك فقط من الصفحة الفارغة.

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

اختيار المشغّل (عقدة WHEN)

المشغّل هو قرارك الحقيقي الأول، ويمنحك Taskfolk ستة أحداث بالضبط، لا أكثر ولا أقل:

  • عند إنشاء مهمة (Issue is created) هو حصان الشغل. الأنسب للفرز والإسناد التلقائي وضبط الإعدادات الافتراضية المعقولة. في WEB هذا ما يلتقط الخطأ الجديد ويصنفه قبل أن يلمسه أحد.
  • عند تغيّر حالة مهمة (Issue status changes) ينطلق مع أي انتقال بين الأعمدة. مناسب لحالات مثل "عند وصولها إلى قيد المراجعة نبّه المراجع" أو "عند وصولها إلى منجزة أزل وسم needs-triage".
  • عند تغيّر أولوية مهمة (Issue priority changes) ينطلق عند تعديل الأولوية. مفيد للتصعيد: "عندما تصبح الأولوية حرجة أسندها إلى المناوب".
  • عند إسناد مهمة (Issue is assigned) ينطلق عند تعيين مُسند إليه. الاستخدام الكلاسيكي هو "بدء عند الإسناد": لحظة إسناد المهمة لشخص انقلها إلى قيد التنفيذ.
  • عند إلغاء إسناد مهمة (Issue is unassigned) ينطلق عند إزالة المُسند إليه. عملي لإعادة مهمة يتيمة إلى حالة الفرز.
  • عند إضافة تعليق (Comment is added) ينطلق مع كل تعليق جديد. مفيد لإبقاء حالة المهمة صادقة، كدفعها خارج عمود راكد عندما يعود النقاش.

والآن الجزء الصريح، لأن التخمين الخاطئ هنا يهدر ظهيرة كاملة: هذه الستة هي المشغّلات الوحيدة. لا يوجد مشغّل لبدء سبرنت، ولا لتاريخ استحقاق، ولا مشغّل زمني أو مجدول، ولا مشغّل لتغيّر الوسوم.

قد تلمح عبارة "عند بدء سبرنت" عالقة في نصوص الواجهة. تجاهلها؛ فهي ليست مشغّلًا حقيقيًا وغير موصولة بشيء، وبناء قاعدة تتوقع انطلاقها مع بدء السبرنت سيتركك تحدّق في سجل تشغيل فارغ. إن كانت أتمتتك تعتمد على مرور الوقت أو بدء سبرنت، فقواعد Taskfolk ليست الأداة المناسبة لذلك اليوم.

وهو مشغّل واحد لكل قاعدة. إن احتجت الإجراءات نفسها عند "الإنشاء" وعند "الإسناد" معًا، فهاتان قاعدتان (كرّر واحدة وغيّر مشغّلها، وسنغطي ذلك أدناه).

التضييق بالشروط (عقدة IF)

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

اختر أولًا وضع المطابقة في أعلى عقدة IF: مطابقة كل الشروط أو مطابقة أي شرط. "الكل" تعني AND (يجب تحقق كل شرط)، و"الأي" تعني OR (يكفي شرط واحد). معظم قواعد الفرز تريد "الكل": النوع خطأ و المُسند إليه فارغ.

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

  • المشروع (هو / ليس / واحد من). هذه أداة تحديد النطاق. أضف "المشروع هو WEB" فلا تلمس القاعدة إلا WEB، وبذلك تحصل على سلوك خاص بالمشروع من محرك يعمل على مساحة العمل كلها.
  • النوع (هو / ليس / واحد من).
  • الأولوية (هي / ليست / واحدة من).
  • الحالة (هي / ليست / واحدة من).
  • المُسند إليه (هو / ليس / معيَّن / فارغ). لاحظ غياب "واحد من" هنا. العاملان الإضافيان هما المفيدان: "فارغ" يلتقط المهام غير المُسندة، و"معيَّن" يلتقط المُسندة.
  • الوسم (هو / ليس).
  • العنوان (يحتوي فقط). مطابقة نص جزئي لا أكثر، فشرط "العنوان يحتوي crash" يلتقط كل عنوان فيه كلمة "crash".

أمر أخير يستحق المعرفة في حقل المُسند إليه: يمكنك المطابقة مع الشخص الذي أطلق الحدث (القيمة الخاصة @triggering_user) بدلًا من عضو محدد. فشرط "المُسند إليه هو الشخص الذي أطلق الحدث" يتفاعل مع مسبب الحدث أيًا كان، وهكذا تعمل القواعد المرجعية دون تثبيت اسم بعينه.

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

تكديس الإجراءات (عقدة THEN)

الإجراءات هي ما تفعله القاعدة عند المطابقة. هناك تسعة أنواع، تُنفَّذ بالترتيب الذي ترتبها به، ويمكنك تكديس حتى 10 في القاعدة. معظمها واضح من اسمه، لذا سأصرف الكلام على ما وراءه سلوك حقيقي.

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

بعضها يستحق التفصيل.

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

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

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

ضبط الأولوية يقبل: الدنيا، منخفضة، متوسطة، عالية، القصوى، أو حرجة.

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

إضافة تعليق ينشر تعليقًا آليًا. اكتب "Auto-filed {issue}: {title}" فيُعرض بالقيم الحقيقية. يدعم أربعة رموز نائبة بالضبط:

الرمز النائب يُعرض كـ
{issue} مفتاح المهمة، مثل WEB-12
{title} عنوان المهمة
{assignee} اسم المُسند إليه، أو "غير مُسندة"
{actor} اسم من أطلق الحدث

كل تعليق آلي مخزَّن يبدأ بشارة مائلة [إجراء آلي] حتى لا يظنه أحد كلام إنسان. تلميح الواجهة يذكر {issue} و{title} فقط، لكن الأربعة كلها تعمل. لا توجد رموز أخرى، فلا تبحث عن رمز للمشروع أو التاريخ.

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

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

والحد الصريح في الإجراءات: هذه التسعة هي كل ما هناك. لا إجراء بريد إلكتروني، ولا إجراء Slack، ولا Webhook، ولا إجراء "إنشاء مهمة" أو "إنشاء مهمة فرعية". الأتمتة تعدّل المهمة التي أطلقتها وتخاطب الوكلاء، ولا تمد يدها خارج Taskfolk.

سمِّها، فعِّلها، واحفظ

بعد بناء المسار، الشريط الجانبي الأيمن هو حيث تُنهي العمل. فيه حقل اسم القاعدة (مثل "إسناد الأخطاء تلقائيًا"، بحد أقصى 100 حرف)، ومفتاح التشغيل/الإيقاف، وبطاقة مساعدة صغيرة، وزرا حفظ القاعدة وإلغاء.

الاسم ليس زينة؛ فهو ما ستمسحه بعينك في قائمة القواعد وفي سجل التشغيل بعد ستة أشهر، فسمِّ القاعدة بما تفعله لا "قاعدة 4".

مفتاح التشغيل يقرر هل تحفظ قاعدة حية أم مسودة معطّلة. وهذه أنفع عادة في الميزة كلها: ابنِها معطّلة ثم فعّلها. احفظ القاعدة وهي متوقفة، وانظر إليها في القائمة، وأعد قراءة شرائح WHEN وIF وTHEN، وربما أنشأت مهمة اختبار واحدة في WEB للتأكد من شروطك، ثم فعّلها. القاعدة المحفوظة مفعّلةً تبدأ الانطلاق فورًا، وشروط فضفاضة قد تلمس مهام كثيرة بسرعة.

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

وسبب إضافي للاعتماد على المسودات: القواعد المفعّلة وحدها تُحسب على حد خطتك. المسودات المعطّلة مجانية. فبإمكانك الاحتفاظ برف من القواعد الجاهزة المتوقفة وتشغيلها عند الحاجة دون استهلاك رصيد القواعد النشطة.

مراجعة سجل التشغيل حتى تثق بالقاعدة

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

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

السجل للقراءة فقط: لا زر إعادة تشغيل، ولا تصفية، ولا وضع تجريبي أو اختبار. السجل لتدقيق ما حدث، لا لإطلاق عمليات جديدة.

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

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

"جزئي" ليست خللًا؛ إنها صراحة المحرك بأنه لم يستطع تطبيق قاعدتك كاملة. وهي بالضبط طريقك لتشخيص قاعدة "لا تعمل":

flowchart TD
    S[Rule seems broken] --> H[Open run history]
    H -- no rows --> C[Never matched, loosen a condition or recheck the trigger]
    H -- OK rows --> E[Rule fired and applied, your expectation was off]
    H -- Partial rows --> D[Read the detail line for the skipped action]

يلخص المخطط التشخيص: قاعدة تبدو معطوبة (Rule seems broken) تبدأ من فتح السجل (Open run history)؛ لا صفوف تعني أنها لم تطابق قط، وصفوف ناجحة (OK) تعني أن توقعك هو الخاطئ، وصفوف جزئية (Partial) تعني قراءة سطر التفاصيل لمعرفة الإجراء المُتخطى.

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

إدارة القواعد: التعديل والتكرار والحذف وحدود الخطط

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

التكرار ينسخ القاعدة وينشئ النسخة معطّلة باسم "<الاسم> (نسخة)". هذه الطريقة الصحيحة لصنع نسخة معدّلة: كرّر "إسناد الأخطاء تلقائيًا"، افتح النسخة، غيّر مشغّلها من "عند إنشاء مهمة" إلى "عند إسناد مهمة"، أعد تسميتها، فعّلها. تلك قاعدتك الثانية للإجراءات نفسها على حدث مختلف.

الحذف يسأل أولًا عبر مربع تأكيد بعنوان "حذف قاعدة الأتمتة"، فلن تفجّر قاعدة بنقرة عابرة.

الصلاحيات مهمة هنا. إنشاء القواعد وتعديلها وتفعيلها وتكرارها وحذفها كلها تتطلب صلاحية workspace.edit_settings، أي المالكين والمشرفين. الأعضاء والمشاهدون يرون صفحة للقراءة فقط ("ليست لديك صلاحية تعديل الأتمتة") ولا يستطيعون بناء القواعد أو تغييرها. لكنهم يستطيعون فتح السجل، وهذا مفيد فعلًا؛ فمن حق أي أحد أن يعرف لماذا أُسندت مهمة تلقائيًا.

والآن واقع الخطط، بصراحة لأنه يغيّر ما تستطيع فعله: الأتمتة ميزة مدفوعة، على خطتي Pro وBusiness فقط. مساحة العمل على الخطة المجانية ترى صفحة الأتمتة لكن قواعدها لا تعمل، ورسالة الترقية تقول إن الأتمتة متاحة على خطتي Pro وBusiness. لا تبنِ سير عمل على الخطة المجانية حول هذه الميزة.

حدود القواعد النشطة:

  • Free: 2 (الصفحة ظاهرة، القواعد لا تعمل)
  • Pro: 20
  • Business: بلا حد

القواعد المفعّلة وحدها تُحسب على الحد، فالمسودات المعطّلة لا تستهلكه أبدًا. وعند بلوغ السقف يتعطل زر + أتمتة جديدة مع تلميح عن الحد، ويخبرك عدّاد "{used} / {limit}" بموقعك بالضبط. إن كنت عند 20 على Pro وأردت قاعدة جديدة، عطّل قاعدة لا تستخدمها أو نظّف القواعد الميتة.

القواعد نفسها عبر واجهة REST API

كل ما يفعله المحرر متاح أيضًا عبر واجهة REST API العامة في Taskfolk، وهذا يهم لحظة رغبتك في حفظ القواعد في نظام إدارة الإصدارات أو توفيرها بسكربت. تعيش القواعد على المسار /v1/workspaces/{slug}/automations، وسجل كل قاعدة على /v1/workspaces/{slug}/automations/{id}/runs. القراءة تحتاج مفتاحًا بنطاق automations:read، والكتابة تحتاج automations:write على مفتاح منشئه يملك صلاحية تعديل إعدادات مساحة العمل، وينطبق حاجز الخطة نفسه وحد القواعد المفعّلة نفسه، فلا تستطيع الواجهة البرمجية سكّ قاعدة كان المحرر سيرفضها.

هذه قاعدة "فرز الأخطاء الجديدة" السابقة، منشأة معطّلة حتى تراجعها في الواجهة قبل تشغيلها:

curl -X POST https://taskfolk.ai/api/v1/workspaces/taskfolk/automations \
  -H "Authorization: Bearer tfk_live_a1b2..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Triage new bugs",
    "trigger": "issue.created",
    "conditions": {
      "match": "all",
      "rules": [{ "field": "type", "op": "is", "value": "bug" }]
    },
    "actions": [
      { "type": "set_status", "status": "todo" },
      { "type": "set_priority", "priority": "high" }
    ],
    "enabled": false
  }'
const res = await fetch("https://taskfolk.ai/api/v1/workspaces/taskfolk/automations", {
  method: "POST",
  headers: {
    Authorization: "Bearer tfk_live_a1b2...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Triage new bugs",
    trigger: "issue.created",
    conditions: {
      match: "all",
      rules: [{ field: "type", op: "is", value: "bug" }],
    },
    actions: [
      { type: "set_status", status: "todo" },
      { type: "set_priority", priority: "high" },
    ],
    enabled: false,
  }),
});
const rule = await res.json();
import requests

rule = requests.post(
    "https://taskfolk.ai/api/v1/workspaces/taskfolk/automations",
    headers={"Authorization": "Bearer tfk_live_a1b2..."},
    json={
        "name": "Triage new bugs",
        "trigger": "issue.created",
        "conditions": {
            "match": "all",
            "rules": [{"field": "type", "op": "is", "value": "bug"}],
        },
        "actions": [
            {"type": "set_status", "status": "todo"},
            {"type": "set_priority", "priority": "high"},
        ],
        "enabled": False,
    },
).json()

تفقّد القاعدة لاحقًا عبر نقطة عمليات التشغيل، وتعيد الحالات نفسها التي تعرضها نافذة السجل (ناجح وجزئي وخطأ):

curl https://taskfolk.ai/api/v1/workspaces/taskfolk/automations/AUTOMATION_ID/runs \
  -H "Authorization: Bearer tfk_live_a1b2..."

إن كنت جديدًا على الواجهة البرمجية نفسها، فشرح كيفية استخدام واجهة REST API يغطي المفاتيح والنطاقات وفحص /v1/me الأولي.

حدود تستحق المعرفة قبل الاعتماد على الميزة

بضعة قيود صلبة، لأن الهدف من الأتمتة كلها أن تثق بها وأنت غير ناظر، ولا يتحقق ذلك إلا بمعرفة مواضع الحواف.

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

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

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

وهناك حدود للقيم. القيم النصية في الشروط تقف عند 500 حرف، وقائمة "واحد من" عند 50 عنصرًا، ونص التعليق عند 2000 حرف، واسم القاعدة عند 100 حرف. سقوف معقولة، تستحق المعرفة قبل لصق جدار نص في إجراء تعليق.

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

إشعار الوكيل للوكلاء فقط. يوقظ وكيل ذكاء اصطناعي موصولًا ولا شيء غيره؛ ليس قناة إشعار للبشر.

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

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

أسئلة شائعة

ما قاعدة أتمتة إدارة المشاريع في Taskfolk؟

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

أي أحداث مشغّلة يمكنها بدء قاعدة أتمتة؟

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

كيف أُسند المهام تلقائيًا عند إنشائها؟

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

هل الأتمتة متاحة على خطة Free، وكم قاعدة يمكنني امتلاكها؟

تعمل الأتمتة على Pro وBusiness فقط. مساحة العمل على Free ترى الصفحة لكن لا يمكنها تشغيل القواعد. حدود القواعد النشطة هي: Free 2، وPro 20، وBusiness بلا حد، والقواعد المفعّلة فقط تُحتسب على الحد، فالمسودات المعطّلة مجانًا.

هل يمكن لقاعدة أتمتة أن تطلق قاعدة أخرى؟

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

ماذا تعني حالة "Partial" في سجل تشغيل القاعدة؟

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

أي رموز يمكنني استخدامها في تعليق آلي؟

أربعة بالضبط: {issue} (مفتاح المهمة)، و{title}، و{assignee}، و{actor}. كل تعليق آلي مسبوق أيضًا بوسم مائل [Automated action]. لا توجد رموز أخرى.

من يُسمح له بإنشاء قواعد الأتمتة وتحريرها في مساحة العمل؟

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

قراءات ذات صلة

أضف تعليقًا

ابدأ النقاش.