كيفية تنظيم العمل بالملاحم والمهام الفرعية

أطلقت ميزة الأسبوع الماضي. لمست مسار الرفع، وصفحة الإعدادات، ومسارَي API، فأنشأت تذكرة لكل جزء. بعد ثماني تذاكر، تناثرت عبر الباكلوج كفكّة نقود مبعثرة، وحين يسأل أحد "كيف يسير عمل المرفقات"، لا يستطيع أحد الإجابة دون فتح الثمانية كلها وقراءتها.
هذا بالضبط الألم الذي بُني تسلسل الملاحم والقصص والمهام والمهام الفرعية في Taskfolk لعلاجه. لكنه لا يساعد إلا إن عرفت أي علاقة تؤدي أي مهمة، وهنا يخطئ معظم الناس.
يمنحك Taskfolk خمسة أنواع مهام وطريقتين لربطها. هذا النموذج كله. هو ضحل عمدًا، وبنهاية هذا الدليل ستستطيع تجميع العمل المترابط تحت ملحمة، وتقسيم تذكرة واحدة إلى قائمة مهام فرعية، وقراءة التقدّم بنظرة واحدة، والصعود عائدًا في السلسلة دون أن تضيّع موضعك. وستعرف أيضًا الأشياء القليلة التي يرفض النموذج فعلها، فلا تصارعه.
المشكلة: خمسة أنواع، علاقتان، مكان واحد يضيع فيه الناس
إليك الفوضى التي نصلحها. لديك كومة مسطّحة من التذاكر. بعضها كبير ("رفع المرفقات")، وبعضها صغير ("أضف نقطة نهاية PUT الموقّعة")، وبعضها أخطاء ("شريط التقدّم يعلق عند 99%")، ولا خطّ مرئي يربط أيًّا منها. كل شيء عند المستوى نفسه. تعرض اللوحة عشرين بطاقة ولا واحدة منها تخبرك أيّها ينتمي معًا.
لدى Taskfolk خمسة أنواع مهام بالضبط: ملحمة، وقصة، ومهمة، وخطأ، ومهمة فرعية. هذه القائمة الكاملة. لا نوع "feature"، ولا "initiative"، ولا مستويات تسلسل مخصصة تخترعها. خمسة.
ويرتكز التسلسل كله على علاقتين مستقلّتين إحداهما عن الأخرى:
- مهمة فرعية إلى أب (مخزّنة كـ
parent_id). تشير المهمة الفرعية إلى مهمة أب واحدة بالضبط. - أي مهمة غير ملحمة إلى ملحمة (مخزّنة كـ
epic_id). يمكن لقصة أو مهمة أو خطأ أن يشير إلى ملحمة واحدة تجمعه.
هذا كل شيء. رابطان. يعيشان في عمودَي قاعدة بيانات منفصلين ولا يندمجان أبدًا في سلسلة واحدة. حين تستوعب أنهما أداتان مختلفتان لمهمّتين مختلفتين، يستقرّ الأمر كله. فوّت ذلك وستقضي بعد ظهرك تحاول فرض شجرة "ملحمة إلى قصة إلى مهمة فرعية" لم يُصمَّم Taskfolk قط لفرضها.
هذا تجميع مسطّح، لا شجرة عميقة. أبقِ ذلك في ذهنك ونحن نمضي.
ما الغرض الفعلي من كل نوع مهمة
الأنواع ليست زينة. تخبر كل من يقرأ اللوحة عن نوع الشيء الذي هي عليه التذكرة، وتغيّر ما تستطيع المهمة فعله. النسخة على شاشة واحدة:
| النوع | المهمة | مثال من مشروع WEB التجريبي |
|---|---|---|
| ملحمة | حاوية لمبادرة حقيقية، تجمع مهامًا أخرى | "أسطح الجدول الزمني والملخّص" |
| قصة | شريحة موجّهة للمستخدم من ملحمة | "اسحب ملفًا وأفلته على مهمة" |
| مهمة | عمل بناء ليس بذاته موجّهًا للمستخدم | "أضف نقطة نهاية PUT الموقّعة" |
| خطأ | شيء معطوب يحتاج إصلاحًا | "شريط التقدّم يعلق عند 99%" |
| مهمة فرعية | خطوة في قائمة داخل واحد ممّا سبق | "اكتب الترحيل" |
إليك كيف أستخدم كلًّا منها فعلًا.
الملحمة. جسم عمل كبير يحتاج أكثر من تذكرة لإنهائه. "رفع المرفقات" ملحمة. "التقارير" ملحمة. الملحمة حاوية للعمل المترابط، وهي النوع الوحيد الذي يجمع مهامًا أخرى. إن استطعت وصف جزء من العمل كمشروع داخل المشروع، فهو غالبًا ملحمة. لا تنشئ ملاحم للأشياء الصغيرة. ملحمة واحدة لكل مبادرة حقيقية هي الكثافة الصحيحة.
القصة. شريحة موجّهة للمستخدم من ملحمة. شيء سيلاحظه الشخص حين يُطلق. "اسحب ملفًا وأفلته على مهمة" قصة. "شاهد شريط تقدّم للرفع" قصة. القصص هي كيف تقطع ملحمة إلى قطع قابلة للإطلاق، لكلٍّ معنى للمستخدم.
المهمة. عمل بناء ليس بذاته موجّهًا للمستخدم. "أضف نقطة نهاية PUT الموقّعة" مهمة. "اربط قائمة سماح R2 CORS" مهمة. المهام هي الخطوات الهندسية خلف قصة. أحيانًا تقف مهمة وحدها بلا قصة أو ملحمة فوقها، ولا بأس بذلك.
الخطأ. شيء معطوب ويحتاج إصلاحًا. "شريط التقدّم يعلق عند 99%" خطأ. تتصرّف الأخطاء بنيويًا كالمهام. يمكنها الجلوس تحت ملحمة، ويمكنها حمل مهام فرعية. النوع يخبر الجميع فقط أن هذا خلل، لا عمل جديد.
المهمة الفرعية. خطوة في قائمة داخل واحد ممّا سبق. ليست وحدة عمل قائمة بذاتها. خطوة. "اكتب الترحيل"، "أضف الاختبار"، "حدّث المستندات" مهام فرعية لمهمة أو قصة. المهمة الفرعية توجد فقط في خدمة أبيها.
إن لم تكن متأكدًا أي نوع ينبغي أن يكون جزء عمل جديد، فهذا القرار عمليًا:
flowchart TD
A[New piece of work] --> B{Bigger than one ticket}
B -->|yes| C[Epic]
B -->|no| D{A step inside an existing ticket}
D -->|yes| E[Subtask on that parent]
D -->|no| F{Something broken}
F -->|yes| G[Bug]
F -->|no| H{Users will notice it ship}
H -->|yes| I[Story]
H -->|no| J[Task]
الآن الجزء الذي يفاجئ الناس. حين تفتح نافذة المهمة الجديدة، تستطيع اختيار أربعة فقط من الأنواع الخمسة: مهمة، وقصة، وخطأ، وملحمة. لا خيار مهمة فرعية في تلك النافذة، عمدًا. المهمة الفرعية تُولد من أب، لا تُنشأ منفلتة. تصنع واحدة من داخل التذكرة التي تنتمي إليها، وسنفعل ذلك بعد دقيقة. السبب بسيط: مهمة فرعية بلا أب تناقض، فلا يمنحك Taskfolk قط طريقة لإنشاء واحدة سائبة.
كيف يرتبط التسلسل فعلًا: epic_id مقابل parent_id
هذا القسم الحامل للثقل. اقرأه مرتين إن احتجت، لأن كل ما عداه يعتمد عليه.
علاقتان، عمودان، مهمّتان مختلفتان:
epic_idيجمع قصة أو مهمة أو خطأ تحت ملحمة. هذا تجميع مسطّح. لا تصبح القصة ابنًا للملحمة بمعنى التداخل. تُوسم بأنها تنتمي إلى تلك الملحمة. فكّر فيه كوسم مجلّد، لا فرع على شجرة.parent_idيشير بمهمة فرعية إلى أبها الواحد. هذا رابط الأب والابن، وهو ما يجعل الشيء مهمةً فرعية أصلًا.
يتّسع النموذج كله في صورة واحدة:
flowchart TD
S[Story] -->|epic_id| E[Epic]
T[Task] -->|epic_id| E
B[Bug] -->|epic_id| E
SB[Subtask] -->|parent_id| S
هذان الحقلان مفهرَسان منفصلين في قاعدة البيانات (issues_epic_idx وissues_parent_idx) ولا ينهاران أحدهما في الآخر أبدًا. القصة تحت ملحمة لها epic_id وparent_id فارغ. المهمة الفرعية تحت تلك القصة لها parent_id و(عادةً) epic_id فارغ. عمودان مختلفان، معنيان مختلفان.
إليك المفهوم الخاطئ الذي أريد قتله الآن. Taskfolk لا يفرض سلسلة "ملحمة إلى قصة إلى مهمة فرعية" كشجرة صلبة واحدة. المهمة الفرعية لا ترث تلقائيًا ملحمة جدّها، وينبغي ألا تنمذج عملك كأنّ هناك تسلسلًا واحدًا عميقًا مفروضًا. ما لديك فعلًا رابطان مستقلّان تستخدمهما حسب الحاجة.
أمر آخر يربك الناس. أب المهمة الفرعية يمكن أن يكون قصة أو مهمة أو خطأ أو حتى ملحمة. رابط parent_id لا يبالي بنوع الأب (باستثناء واحد سنغطّيه في قسم القواعد). فـ"ملحمة بمهام فرعية مباشرة" شكل مشروع. لكنه عادةً ليس الشكل الذي تريده، لأن المهام الفرعية لخطوات القوائم والملاحم للتجميع الكبير. لكن النموذج يسمح به، ولن يوقفك.
اجمع قصة أو مهمة جديدة تحت ملحمة
لنفعل التجميع أولًا، لأنه الحركة اليومية الأشيع. لنقل إنك تبني ملحمة التقارير وتحتاج قصة لـ"تبويب الجدول الزمني والملخّص" الجديد.
انقر مهمة جديدة. في النافذة، اختر نوع العمل: مهمة أو قصة أو خطأ أو ملحمة. لمثالنا، اختر قصة. الآن ابحث عن منتقي الملحمة الأب. يظهر لكل نوع غير الملحمة (الملاحم لا تدخل تحت ملحمة، فيختفي المنتقي لحظة صيرورة نوع العمل ملحمة). افتحه فيسرد ملاحم المشروع الحالية. تختار "التقارير" هنا.

بضعة أمور تستحق المعرفة عن هذا المنتقي. يسرد الملاحم غير المحذوفة وغير المؤرشفة من المشروع الحالي، بحد أقصى 200. إن لم يكن لمشروعك ملاحم بعد، فترى حالة لا ملاحم بعد بدل قائمة، وهذه إشارتك لإنشاء الملحمة أولًا والعودة لإيداع العمل تحتها. الافتراضي، حين لا تختار شيئًا، هو لا شيء، أي أن المهمة لا تنتمي إلى ملحمة.
إليك الجزء الحاسم، ويعود مباشرةً إلى القسم السابق. منتقي الملحمة الأب يكتب epic_id. لا يكتب parent_id، ولا يجعل قصتك الجديدة مهمة فرعية. تبقى قصتك "تبويب الجدول الزمني والملخّص" قصة. تحمل الآن وسمًا يقول إنها تنتمي إلى ملحمة التقارير. التجميع تحت ملحمة وربط مهمة فرعية عمليتان منفصلتان، وهذه النافذة تؤدي الأولى فقط. إن أتيت هنا آملًا إنشاء مهمة فرعية، فهذا المكان الخطأ. ذلك بطاقة المهام الفرعية، تاليًا.
يعمل التجميع نفسه عبر واجهة REST. تأخذ نقطة نهاية الإنشاء epic كسلسلة KEY-NUM عادية (يحتاج المفتاح صلاحية issues:write):
curl -X POST "https://taskfolk.ai/api/v1/workspaces/taskfolk/projects/WEB/issues" \
-H "Authorization: Bearer tfk_live_a1b2..." \
-H "Content-Type: application/json" \
-d '{"type": "story", "title": "Timeline + Summary tab", "epic": "WEB-1"}'
const res = await fetch(
"https://taskfolk.ai/api/v1/workspaces/taskfolk/projects/WEB/issues",
{
method: "POST",
headers: {
Authorization: "Bearer tfk_live_a1b2...",
"Content-Type": "application/json",
},
body: JSON.stringify({
type: "story",
title: "Timeline + Summary tab",
epic: "WEB-1",
}),
},
);
const { data } = await res.json();
import requests
res = requests.post(
"https://taskfolk.ai/api/v1/workspaces/taskfolk/projects/WEB/issues",
headers={"Authorization": "Bearer tfk_live_a1b2..."},
json={"type": "story", "title": "Timeline + Summary tab", "epic": "WEB-1"},
)
data = res.json()["data"]
يُرجع الإنشاء الناجح 201 مع المهمة الجديدة، وترى عمودَي الرابط جنبًا إلى جنب في الاستجابة (مقتطعة هنا):
{
"data": {
"key": "WEB-31",
"type": "story",
"title": "Timeline + Summary tab",
"status": "backlog",
"parent_id": null,
"epic_id": "0197a3c2-...",
"url": "https://taskfolk.ai/w/taskfolk/p/web/WEB-31"
}
}
epic_id مضبوط، وparent_id فارغ. قصة تحت ملحمة، تمامًا كما كان المنتقي ليصنعها.
لمراجعة نافذة الإنشاء نفسها (القوالب والمُسند إليهم وبقية الحقول)، انظر كيفية إنشاء مهمة.
قسّم مهمة إلى مهام فرعية من بطاقة المهام الفرعية
الآن العلاقة الأخرى. افتح أي مهمة ليست هي نفسها مهمة فرعية، ومرّر صفحة تفاصيلها إلى بطاقة المهام الفرعية. هنا تُولد المهام الفرعية.
إن لم يكن للمهمة أي منها بعد، فترى عنصرًا نائبًا متقطّعًا ولا مهام فرعية بعد. انقر + إضافة مهمة فرعية، فيظهر صف مضمّن بحقل عنوان المهمة الفرعية... وزرّي إضافة / إلغاء. اكتب عنوانًا (حتى 255 حرفًا)، ثم اضغط Enter أو انقر إضافة لإنشائها. غيّرت رأيك في منتصف الكتابة؟ اضغط Escape فتُمسح المسودة. رسالة أُضيفت المهمة الفرعية. تؤكّد وصول كل واحدة.

تحت الغطاء يستدعي هذا createSubtask، وهو غلاف رفيع فوق منطق إنشاء المهمة العادي يضبط النوع على subtask ويختم المهمة الحالية بوصفها parent_id. فالمهمة الفرعية مهمة حقيقية بمفتاحها الخاص، وصفحة تفاصيلها الخاصة، وكل شيء خاص بها. هي فقط مصنّفة مهمةً فرعية ومشيرة إلى أبها. لهذا تغيب المهام الفرعية عن نافذة المهمة الجديدة: المكان الصحيح الوحيد لصنع واحدة هو من الأب الذي سيملكها، وهذه البطاقة هي ذلك المكان.
عبر الـAPI، الشكل نفسه هو type: "subtask" إضافةً إلى parent كسلسلة KEY-NUM:
curl -X POST "https://taskfolk.ai/api/v1/workspaces/taskfolk/projects/WEB/issues" \
-H "Authorization: Bearer tfk_live_a1b2..." \
-H "Content-Type: application/json" \
-d '{"type": "subtask", "title": "Write the migration", "parent": "WEB-7"}'
تحتاج إضافة المهام الفرعية الصلاحية نفسها لإنشاء أي مهمة (issue.create)، فإن كنت مشاهدًا، فلن يظهر خيار الإضافة.
الاستخدام الكلاسيكي هو تقسيم قصة إلى خطواتها الحقيقية. خذ قصة "رفع المرفقات" المزروعة في WEB، التي تأتي بخمس مهام فرعية. بدل قصة غامضة واحدة تجلس نصف منجزة أسبوعًا، تحصل على: اكتب الترحيل، أضف إجراء النية الموقّع، اربط PUT المتصفح، أضف خطوة التثبيت والتحقق، اكتب الاختبار. خمس خطوات ملموسة تشطبها واحدة تلو الأخرى، كلها داخل تذكرة واحدة، فتبقى اللوحة عارضةً بطاقة قصة واحدة لا خمسًا سائبة.
اقرأ شريط التقدّم واشطب المهام الفرعية المنجزة
بمجرد أن تحمل بطاقة مهامًا فرعية، تكتسب شريط تقدّم، وهنا يؤتي الأمر كله ثماره.
يقرأ رأس البطاقة {done} من {total} منجزة مع نسبة مئوية حيّة بجانبه، وشريط تحته. يمتلئ الشريط أصفر ما بقي عمل ويتحوّل أخضر لحظة بلوغ 100%. فقصة بثلاث من خمس مهام فرعية منجزة تعرض "3 من 5 منجزة"، و60%، وشريطًا أصفر. أنجز الأخيرتين فيتحوّل أخضر. هي أسرع قراءة يمنحك Taskfolk عن "كم قطعت من هذا فعلًا".

الحساب بسيط: النسبة round(done / total * 100). لكن تعريف "منجزة" له حافّة حادة تستحق الفهم. تُحتسب المهمة الفرعية منجزةً فقط حين تكون فئة حالتها هي done بالضبط. لا "قيد المراجعة". لا "ملغاة". منجزة. نعود إلى ما يستثنيه ذلك في قسم الحدود، لأنه يهمّ أكثر ممّا يبدو.
الشطب هو الجزء المُرضي. لكل صف مهمة فرعية مربّع اختيار:
- اشطب مهمة فرعية غير منجزة، فتنتقل إلى فئة
done(يقرأ المفتاح وسمها منجزة). - ألغِ شطب مهمة فرعية منجزة، فتنتقل إلى
todo(موسومًا وسمها غير منجزة). - المفتاح متفائل، فيتحدّث الشريط لحظة النقر؛ إن فشلت كتابة الخادم، يتراجع.
راقب سلوكًا واحدًا: إلغاء الشطب يُنزل المهمة الفرعية دائمًا على todo. لا يستعيد أيّ عمود قيد تنفيذ أو قيد مراجعة كانت فيه قبل وسمها منجزة. مربّع الاختيار ثنائي. منجزة أو للتنفيذ، لا شيء بينهما.
يربط كل صف أيضًا للخارج. تحصل على مفتاح KEY-NUM بخط أحادي المسافة (مثل WEB-42)، والعنوان (مشطوب حين يكون منجزًا)، وشارة حالة محلولة من حالة اللوحة المخصصة للمشروع. انقر المفتاح فتصل إلى صفحة تفاصيل تلك المهمة الفرعية. المهمة الفرعية ليست قط سطر نص ميتًا. هي مهمة كاملة تسندها وتعلّق عليها وتتابعها كأي مهمة أخرى.
تنقّل للأعلى برقاقتَي سياق الملحمة والأب
بنيت التسلسل. إليك كيف يظهر حين تكون على عمق ثلاث تذاكر وتحتاج الصعود عائدًا.
افتح صفحة تفاصيل أي مهمة وانظر إلى الرأس. إن كان للمهمة epic_id، فترى رقاقة ملحمة. إن كان لها parent_id، فترى رقاقة أب. كلتاهما رابط، وكلتاهما تشير للأعلى في السلسلة.
هذا نموذج العلاقتين مجسّدًا مرئيًا. واقفًا على مهمة فرعية، تأخذك رقاقة أب إلى القصة أو المهمة التي تملكها. واقفًا على قصة، تأخذك رقاقة ملحمة إلى الملحمة التي تنتمي إليها. لأن الرابطين مستقلّان، يمكن لمهمة عرض رقاقة واحدة أو كلتيهما أو لا شيء. القصة المجمّعة تحت ملحمة تعرض ملحمة. المهمة الفرعية تعرض أبًا. مهمة فرعية أبوها قصة هي نفسها تحت ملحمة قد تعرض كلتيهما، حسب كيفية إنشائها. اقرأ الرقائق فتعرف دائمًا أين أنت وكيف تصعد عائدًا. لا مطاردة مسار، ولا "أي ملحمة كانت هذه مجددًا".
القواعد التي يفرضها Taskfolk (والأخطاء الأربعة التي يحجبها)
يحرس Taskfolk التسلسل فلا يقع في حالة غير متماسكة. تُفحص أربع قواعد احتواء وقت الإنشاء، وتنطلق بالتساوي سواء أنشأت المهمة في الواجهة أو عبر واجهة v1. تصطدم بها كرسائل خطأ إن حاولت كسرها:
- المهمة الفرعية يجب أن يكون لها أب. "المهام الفرعية تحتاج مهمة أبًا." لا يمكنك إنشاء مهمة فرعية طافية في الفراغ. (وهذا أيضًا سبب خلوّ نافذة المهمة الجديدة من خيار مهمة فرعية: لا أب لربطها به.)
- المهمة الفرعية وحدها قد يكون لها أب. "المهام الفرعية وحدها قد يكون لها أب. للقصص تحت ملحمة، اضبط epicId." هذه القاعدة التي تمنع خلط
epic_idوparent_id. تريد قصة تحت ملحمة؟ استخدم رابط الملحمة، لا رابط الأب. - الأب لا يمكن أن يكون هو نفسه مهمة فرعية. "الأب لا يمكن أن يكون هو نفسه مهمة فرعية." المهام الفرعية أوراق. لا تحصل على أبناء لها، فلا يمكنك الإشارة بمهمة فرعية جديدة إلى مهمة فرعية قائمة.
- الملحمة لا يمكن تداخلها تحت ملحمة أخرى. "الملحمة لا يمكن تداخلها تحت ملحمة أخرى." الملاحم قمّة التجميع. لا ملحمة من الملاحم.
عبر الـAPI تعود هذه كـ400 مع مغلّف خطأ validation. حاول إعطاء مهمة عادية parent فتحصل على:
{
"error": {
"code": "validation",
"message": "Only subtasks can have a parent. For stories under an epic, set epic.",
"details": { "field": "parent" }
}
}
فوق قواعد وقت الإنشاء، يضيف مسار التحرير حارسين. لا يمكنك تغيير نوع مهمة قائمة إلى مهمة فرعية عبر التحرير ("لا يمكن تغيير النوع إلى مهمة فرعية هنا")، ولا يمكنك إعادة تصنيف مهمة فرعية إلى شيء آخر دون فصلها أولًا عن أبها ("لا يمكن تغيير نوع مهمة فرعية"). هذان يمنعانك من دسّ مهمة إلى شكل غير قانوني بعد الأمر.
لا شيء من هذه اعتباطي. هي الحواجز التي تبقي نموذج الرابطين صادقًا، فلكل مهمة فرعية أب فعلًا ولا تنتهي ملحمة قط مدفونة تحت أخرى. لاحظ ما ليس في القائمة. لا قاعدة ضد حمل الخطأ مهامًا فرعية (يمكنه). لا سقف عمق سوى ملحمة تحت ملحمة. لا قيد عبر الأنواع بعد الأربعة أعلاه. لا تخترع قيودًا غير موجودة.
حدود تستحق المعرفة قبل أن تعتمد على هذا
النموذج ضحل عمدًا، والصدق بشأن أين يتوقّف يوفّر عليك الإحباط لاحقًا.
لا عمق اعتباطي. المهام الفرعية لا يمكن أن يكون لها مهام فرعية خاصة بها. بطاقة المهام الفرعية لا تُعرض حتى على صفحة تفاصيل مهمة فرعية. فلا شجرة ملحمة إلى قصة إلى مهمة فرعية إلى مهمة فرعية فرعية. مستويان من التجميع هما السقف: ملحمة تجمع مهامًا، ومهمة تحمل مهامًا فرعية. إن شعرت أنك تريد مستوى ثالثًا، فتلك إشارة لترقية مهمة فرعية إلى قصة أو مهمة كاملة ووضعها تحت الملحمة.
البطاقة تعرض 50 مهمة فرعية على الأكثر. بعد 50 تتوقّف عن السرد المضمّن وتعرض "عرض أول {n} مهمة فرعية." مع رابط لعرض الكل في عرض القائمة. إن كان لتذكرة واحدة أكثر من خمسين مهمة فرعية، فتلك عادةً تذكرة كان ينبغي أن تكون ملحمة بعدة قصص تحتها.
"منجزة" دقيق، والملغاة لا تُحتسب. يحتسب شريط التقدّم المهمة الفرعية منجزةً فقط حين تكون فئة حالتها done بالضبط. المهمة الفرعية الملغاة ما زالت تظهر، بشارتها، لكنها تُحتسب غير منجزة للنسبة. النتيجة العملية: يمكن لأب أن يقرأ أقل من 100% حتى حين لا عمل مفتوح فعلًا، لأن مهمة فرعية ملغاة تجرّ الرقم للأسفل. لا تقرأ الشريط كـ"كل شيء حُلّ". اقرأه كـ"كل شيء بلغ فئة منجزة". إن أردت 100% نظيفة، فقد تحتاج فعلًا إلى وسم المهمة الفرعية المهجورة منجزةً بدل ملغاة، أو تقبّل الرقم فحسب.
مربّع الاختيار ثنائي. كما ذُكر أعلاه، إلغاء شطب مهمة فرعية منجزة يرسلها دائمًا إلى todo، لا عائدةً إلى أيّ عمود قيد تنفيذ كانت فيه. إن احتجت تحكّمًا أدقّ في حالة مهمة فرعية، فافتح المهمة الفرعية نفسها وحرّكها على اللوحة.
لا إعادة ربط بأب، ولا تحويل إلى مهمة فرعية. لا سحب لإعادة الربط، ولا "انقل هذه المهمة الفرعية إلى أب مختلف"، ولا طريقة لتحويل مهمة قائمة إلى مهمة فرعية. بطاقة المهام الفرعية تنشئ مهامًا فرعية جديدة وتشطبها منجزةً فقط. إن أودعت مهمة بالخطأ وأردتها مهمةً فرعية، فالمسار الصادق اليوم إنشاء المهمة الفرعية من جديد تحت الأب الصحيح وإغلاق الأصلية أو حذفها. ليس أنيقًا، لكنه الموجود.
سير عمل يصمد
إليك خطة اللعب التي أسلّمها لزميل جديد.
ملحمة واحدة لكل مبادرة حقيقية. "رفع المرفقات"، "التقارير"، "الفوترة الإصدار الثاني". لا ملحمة لكل أسبوع، ولا واحدة لكل شخص. واحدة لكل جسم عمل حقيقي. أنشئ الملحمة أولًا فيكون لمنتقي الملحمة الأب ما يشير إليه.
أودِع القصص والمهام والأخطاء تحت تلك الملحمة عبر منتقي الملحمة الأب وأنت تنشئها. قصة لكل شريحة موجّهة للمستخدم، ومهام لخطوات البناء التي لا يراها أحد، وأخطاء حين تظهر. هذه طبقة تجميعك، وهي ما يجعل الملحمة عدسة مفيدة بعد أسابيع حين تحتاج الإجابة عن "كيف يسير عمل المرفقات" بنقرة واحدة.
استخدم المهام الفرعية فقط لخطوات قوائم حقيقية داخل تذكرة واحدة. "اكتب الترحيل، أضف الاختبار، حدّث المستندات." إن بدأت مهمة فرعية تشعر كأنها وحدة عمل خاصة بها يسندها أحد ويتابعها وحدها، فتوقّف. رقّها إلى مهمة أو قصة تحت الملحمة بدلًا من ذلك. العلامة بسيطة جدًا: إن أردت إعطاء مهمة فرعية مهمتها الفرعية الخاصة، فما كان ينبغي أن تكون مهمة فرعية.
يومًا بيوم، يتناسق هذا مع بقية المنتج بنظافة. تعرض لوحة كانبان قصصك ومهامك تتحرّك عبر الأعمدة بينما تتابع مهامها الفرعية بهدوء في الداخل. والباكلوج هو حيث ترتّب القصص والمهام تحت كل ملحمة قبل سحبها إلى العمل. وحين يكبر الهيكل بما يكفي فتتوقّف قائمة مسطّحة عن المساعدة، ترسم الخريطة الذهنية الشجرة كاملة فترى شكلها دفعة واحدة.

أصِب العلاقتين، تجميع الملحمة للعمل المترابط والمهام الفرعية لخطوات القوائم، فتصبح ثماني تذاكر سائبة ملحمةً واحدة بثلاث قصص واضحة، لكلٍّ خطواتها تدقّ نحو الأخضر. هذا كل الغرض من تسلسل الملاحم والقصص والمهام والمهام الفرعية. لا مزيد من الهيكل لذاته، بل ما يكفي بالضبط ليستطيع أي أحد النظر إلى اللوحة ومعرفة ما ينتمي إلى ماذا.
افتح أكثر مشاريعك انشغالًا، وجد المبادرة التي هي حاليًا كومة تذاكر سائبة، واجعلها ملحمة، وأودِع البقية تحتها.
أسئلة شائعة
ما الفرق بين الملحمة والقصة والمهمة والخطأ في Taskfolk؟
الملحمة جسم عمل كبير يجمع مهامًا أخرى (مثل "رفع المرفقات"). القصة شريحة من ذلك العمل موجّهة للمستخدم، والمهمة عمل بناء ليس بذاته موجّهًا للمستخدم، والخطأ شيء معطوب يحتاج إصلاحًا. بنيويًا، تجلس القصص والمهام والأخطاء عند المستوى نفسه ويمكن تجميعها تحت ملحمة؛ النوع يقول فقط ما نوع العمل. النوع الخامس، المهمة الفرعية، خطوة قائمة داخل واحد من هذه.
كيف أضيف مهمة فرعية إلى مهمة؟
افتح صفحة تفاصيل المهمة (يجب ألا تكون هي نفسها مهمة فرعية)، ومرّر إلى بطاقة المهام الفرعية، وانقر "+ إضافة مهمة فرعية". اكتب عنوانًا حتى 255 حرفًا، ثم اضغط Enter أو انقر إضافة، فتؤكّدها رسالة "أُضيفت المهمة الفرعية.". هذا المكان الوحيد لإنشاء المهام الفرعية؛ لا يمكن صنعها من نافذة المهمة الجديدة.
لماذا لا يوجد خيار مهمة فرعية في نافذة المهمة الجديدة؟
لأن المهمة الفرعية يجب أن يكون لها أب، ونافذة المهمة الجديدة تنشئ مهامًا منفلتة. مهمة فرعية بلا أب حالة غير صالحة في Taskfolk، فالمكان الوحيد لإنشائها من داخل الأب الذي تنتمي إليه، عبر بطاقة المهام الفرعية لذلك الأب. تقدّم النافذة الأنواع الأربعة القادرة على الوجود مستقلّة: مهمة وقصة وخطأ وملحمة.
هل وضع مهمة تحت ملحمة أب يجعلها مهمة فرعية؟
لا. منتقي الملحمة الأب يكتب حقل epic_id، الذي يجمع المهمة تحت ملحمة. لا يمسّ parent_id ولا يغيّر نوع المهمة، فتبقى قصتك قصة وتنتمي فقط إلى تلك الملحمة. تجميع الملحمة وربط المهمة الفرعية علاقتان منفصلتان.
هل يمكن لمهمة فرعية أن تحمل مهامها الفرعية الخاصة؟
لا. المهام الفرعية قاع التسلسل، وبطاقة المهام الفرعية لا تظهر أصلًا على صفحة تفاصيل مهمة فرعية. إن احتجت مستوى آخر، فرقِّ المهمة الفرعية إلى مهمة أو قصة كاملة وضعها تحت الملحمة بدلًا من ذلك.
كيف يُحسب شريط تقدّم المهام الفرعية، وهل تُحتسب المهام الفرعية الملغاة؟
النسبة round(done / total * 100)، وتُحتسب المهمة الفرعية منجزةً فقط حين تكون فئة حالتها done بالضبط. المهام الفرعية الملغاة تُعرض بشارتها لكنها لا تُحتسب منجزة، فقد يقرأ أب أقل من 100% حتى حين لا يبقى عمل مفتوح. يعكس الشريط "بلوغ فئة منجزة"، لا "حُلّ كل شيء".
هل يمكنني تحويل مهمة قائمة إلى مهمة فرعية، أو نقل مهمة فرعية إلى أب مختلف؟
لا. لا يوجد مسار تحويل إلى مهمة فرعية ولا إعادة ربط بأب؛ يمنع مسار التحرير صراحةً تغيير نوع مهمة إلى مهمة فرعية ويمنع إعادة تصنيف مهمة فرعية دون فصلها أولًا. لإصلاح مهمة أُودعت خطأً، أنشئ المهمة الفرعية من جديد تحت الأب الصحيح وأغلق الأصلية.
كم مهمة فرعية يمكن لمهمة واحدة عرضها، وماذا يحدث بعد ذلك؟
تسرد بطاقة المهام الفرعية حتى 50 مهمة فرعية مضمّنةً. بعدها تعرض "عرض أول {n} مهمة فرعية." مع رابط لعرض الكل في عرض القائمة. إن كانت تذكرة واحدة تكدّس عشرات المهام الفرعية، فذلك عادةً علامة أنها ينبغي أن تكون ملحمة بعدة قصص تحتها.
قراءات ذات صلة

كيف تنشئ مهمة
تعلّم كيف تنشئ مهمة في Taskfolk بثلاث طرق، وتختار النوع الصحيح، وتملأ المربع، وتجمّعها صعودًا نحو ملحمة، وتصنع المهام الفرعية. مع تسمية الحدود الحقيقية.
15 يوليو 2026 · 16 د قراءة

شاهد مشروعك كله خريطة ذهنية (ومتى تتفوق على القائمة المتداخلة)
القائمة المتداخلة تخفي كيف يترابط العمل، والخريطة الذهنية تُظهره. متى تفيدك خريطة لملاحمك وقصصك، ومتى تكون القائمة أفضل، وكيف تعمل الخريطة الذهنية في Taskfolk بأوضاع التجميع الثلاثة.
5 يوليو 2026 · 7 د قراءة

حوّل مستند المتطلبات (PRD) إلى ملاحم وقصص ومهام يستطيع وكلاء الذكاء الاصطناعي بناءها
امنح وكلاء البرمجة خطة يستطيعون البناء وفقها. الصق PRD أو FRD فيصيغ Taskfolk الباكلوج، ثم يعمل Cursor وClaude Code وCodex عليه عبر مسار عمل تتحكم فيه أنت.
19 يوليو 2026 · 9 د قراءة

كيف تصفّي المهام وترتّبها
صفِّ المهام حسب المُسند إليه والوسم والحالة في عرض القائمة في Taskfolk، ثم رتّب وجمّع واحفظ عرضًا وشارك القائمة المصفّاة بالضبط كرابط.
15 يوليو 2026 · 16 د قراءة

كيف تستخدم لوحة كانبان: دليل كامل بمثال حقيقي
تعلّم كيفية استخدام لوحة كانبان في Taskfolk: قراءة البطاقات، وسحب المهام بين الأعمدة، وإضافة أعمدة مخصصة وترتيبها، وضبط حدود WIP، والتصفية، وحفظ العروض.
15 يوليو 2026 · 20 د قراءة

كيف تخطّط الإصدارات والمعالم
خطّط إصدارات البرمجيات والمعالم في Taskfolk: أنشئ الإصدارات والمعالم، اربط المهام، اقرأ مؤشر التقدم، صُغ ملاحظات الإصدار بالذكاء الاصطناعي، واضبط الصلاحيات.
15 يوليو 2026 · 14 د قراءة

سير عمل لتتبع الأخطاء يمتد من البلاغ إلى الإصلاح
سير عمل لتتبع الأخطاء يمتد من البلاغ إلى الإصلاح في أداة واحدة: نموذج استقبال عام، وفرز بالذكاء الاصطناعي، وبوابة مراجعة على اللوحة، وربط إيداعات GitHub، وإصدارات تُشحن تلقائيًا.
16 يوليو 2026 · 12 د قراءة

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

حالات سير العمل المخصصة
ابنِ أعمدة لوحة مخصصة على طريقة Jira في Taskfolk وافرض قواعد انتقال الحالات عبر اللوحة والواجهة البرمجية والتعديل الجماعي والأتمتة. مع الحدود الصادقة.
15 يوليو 2026 · 18 د قراءة

مخطط جانت مع الاعتماديات
تعلّم التخطيط على الجدول الزمني في Taskfolk: اقرأ مخطط جانت، اسحب الأشرطة لإعادة الجدولة، ارسم اعتماديات Blocks/Relates/Duplicates، جدول المهام بلا تواريخ، واعرف الحدود الحقيقية.
15 يوليو 2026 · 14 د قراءة
أضف تعليقًا
ابدأ النقاش.