مجاني · بدون تسجيل · يدعم ملفات ‎.mmd

محرر مخططات جانت بـ Mermaid

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

جدول إصدار باعتماديات ومَعلَم

الذي يجعل هذا مخطط جانت لا مجرد رسم أشرطة هو `after a1`: الاعتمادية معلنة، فتحريك المهمة الأولى يجرّ كل ما يليها. والمَعلَم يؤشّر تاريخًا ثابتًا لا يستهلك وقتًا. وسطر `dateFormat DD/MM/YYYY` ليس اختياريًا: بدونه تقع في مزلق التواريخ الموصوف أدناه.

gantt
    title الإصدار 2.4
    dateFormat DD/MM/YYYY
    axisFormat %d/%m
    excludes weekends

    section التطوير
    عقد الواجهة البرمجية  :done,      a1, 07/01/2026, 10d
    التنفيذ               :active,    a2, after a1, 20d
    الاختبارات الداخلية   :           a3, after a2, 8d

    section الإصدار
    فترة الاستقرار        :           b1, after a3, 5d
    قرار الإصدار          :milestone, m1, after b1, 0d
    النشر إلى الإنتاج     :crit,      b2, after m1, 3d
افتح هذا في المحرر
إعلان

أمثلة مشروحة

١. أبسط مخطط صحيح

يخبر `dateFormat` مُحرّك Mermaid كيف يقرأ التواريخ التي تكتبها؛ أما `axisFormat` فيتحكم بكيفية عرضها على المحور. وهما إعدادان منفصلان، والخلط بينهما أشيع مصدر للضيق مع جانت.

gantt
    title الدورة 14
    dateFormat DD/MM/YYYY
    section العمل
    ابنِ محرك البحث :02/03/2026, 10d
افتح في المحرر

٢. معرّفات المهام والاعتماديات

منح المهمة معرّفًا يتيح للمهام اللاحقة أن تكتب `after <المعرّف>`. وحين تكون الاعتماديات معلنة تغيّر تاريخ البدء في موضع واحد فيتبعه بقية الجدول.

gantt
    title ترحيل البيانات
    dateFormat DD/MM/YYYY
    section التحضير
    مراجعة المخطط        :a1, 02/02/2026, 5d
    كتابة قواعد التحويل  :a2, after a1, 8d
    section التنفيذ
    تجربة كاملة          :a3, after a2, 3d
    التبديل              :a4, after a3, 1d
افتح في المحرر

٣. كلمات الحالة

تغيّر `done` و`active` و`crit` طريقة رسم الشريط. وهي أرخص وسيلة لجعل المخطط يجيب عن سؤال «أين نحن الآن» لا عن «ما كانت الخطة» فحسب.

gantt
    title المنصة، الربع الأول
    dateFormat DD/MM/YYYY
    section البنية التحتية
    تنظيف Terraform      :done,   t1, 05/01/2026, 12d
    ترقية Kubernetes     :active, t2, 19/01/2026, 15d
    مراجعة التكاليف      :        t3, after t2, 5d
    section الأمن
    تدقيق الاعتماديات    :crit,   s1, 12/01/2026, 6d
افتح في المحرر

٤. المعالم

المَعلَم نقطة لا مدة: امنحه `0d`. استعمله للتواريخ التي تحددها جهة خارج المشروع — معرض، أجل تعاقدي، تجميد الشيفرة.

gantt
    title خطة الإطلاق
    dateFormat DD/MM/YYYY
    section الهندسة
    تجميد النطاق         :milestone, m1, 01/04/2026, 0d
    تصيّد العلل          :          e1, 01/04/2026, 5d
    فرع الإصدار          :milestone, m2, after e1, 0d
    section الاتصال
    انتهاء حظر النشر     :milestone, m3, 15/04/2026, 0d
افتح في المحرر

٥. استبعاد العطلة الأسبوعية والأعياد

يجعل `excludes weekends` المدد لا تحسب يومَي العطلة، فتشغل مهمة من عشرة أيام أسبوعَي عمل بدل أن تنتهي في وسط العطلة. وتُستبعد الأعياد تاريخًا تاريخًا. وانتبه: يفترض Mermaid أن العطلة هي السبت والأحد، وهو ما لا يطابق كل بلد عربي.

gantt
    title تشغيل الخدمة الجديدة
    dateFormat DD/MM/YYYY
    excludes weekends, 01/05/2026

    section البناء
    تجهيز البنية التحتية :p1, 20/04/2026, 5d
    ربط خط التسليم       :p2, after p1, 5d
    section التسليم
    الدليل والتدريب      :p3, after p2, 4d
افتح في المحرر

ملخص صياغة مخطط جانت

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

الصياغةالمعنى
ganttيفتح المخطط.
title نصعنوان المخطط.
dateFormat DD/MM/YYYYكيفية تحليل التواريخ التي تكتبها. وهذا هو السطر الصحيح للكتابة بالعربية.
dateFormat YYYY-MM-DDصيغة ISO، وهي الإعداد الافتراضي.
axisFormat %d/%mكيفية عرض التواريخ على المحور. وهو إعداد مغاير لـ dateFormat.
excludes weekendsتخطَّ السبت والأحد عند حساب المدد.
excludes 01/05/2026استبعد تاريخًا بعينه. وهكذا تُزال الأعياد.
section اسميجمع المهام في مسار مسمّى.
مهمة :id, 01/01/2026, 10dمهمة ببداية ومدة صريحتين.
مهمة :id, after أخرى, 10dمهمة تبدأ عند انتهاء `أخرى`.
مهمة :done, id, ...منجزة — تُرسم باهتة.
مهمة :active, id, ...جارية — تُرسم بارزة.
مهمة :crit, id, ...حرجة — تُرسم بلون التمييز.
اسم :milestone, id, تاريخ, 0dنقطة في الزمن لا مدة.
10d / 3w / 2hالمدة بالأيام أو الأسابيع أو الساعات. والوحدة إلزامية.
إعلان

مزالق جانت الستة — واثنان منها فقط يُعدّان خطأً

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

ما تراه

Invalid date:٠١/٠٣/٢٠٢٦

لماذا

كتبت التاريخ بالأرقام العربية الهندية. وهذا مزلق خاص بالكتابة العربية دون غيرها، وهو من القلائل التي تسقط سقوطًا صريحًا بدل أن تصمت. قِيس: `٠١/٠٣/٢٠٢٦` يرمي الخطأ أعلاه، بينما `01/03/2026` يعمل تمامًا. والتمييز دقيق ويستحق الحفظ: الأرقام العربية الهندية ممنوعة في التواريخ وحدها، أما داخل اسم المهمة فهي مقبولة تمامًا لأن الاسم تسمية لا قيمة تُحلَّل — وقد جُرّب اسم مهمة فيه الرقم ١ فرُسم كما هو.

الحل

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

خطأ
gantt
    dateFormat DD/MM/YYYY
    section س
    مهمة :a1, ٠١/٠٣/٢٠٢٦, 10d
صحيح
gantt
    dateFormat DD/MM/YYYY
    section س
    مهمة :a1, 01/03/2026, 10d

ما تراه

Parse error ينتهي بـ: Expecting 'taskData', got 'NL'

لماذا

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

الحل

ضع النقطتين بين الاسم والمعرّف.

خطأ
gantt
    dateFormat DD/MM/YYYY
    section العمل
    التصميم a1, 07/01/2026, 5d
صحيح
gantt
    dateFormat DD/MM/YYYY
    section العمل
    التصميم :a1, 07/01/2026, 5d

ما تراه

يُرسم المخطط، لكن التواريخ تقع قبل موعدها بشهرين

لماذا

الصيغة الافتراضية لـ `dateFormat` هي ISO، وأمام تاريخ بفواصل يقرؤه Mermaid على الطريقة الأمريكية، بالشهر أولًا. قِيس: `01/03/2026` مع `dateFormat YYYY-MM-DD` يضع المهمة في الثالث من يناير. لا تحذير البتة؛ يبدو المخطط ممتازًا وقد انزاح شهرين كاملين.

الحل

أعلن `dateFormat DD/MM/YYYY` واكتب التواريخ كما تكتبها دائمًا. جُرّب: بهذه الصيغة يقع `01/03/2026` في الأول من مارس بالضبط.

خطأ
gantt
    dateFormat YYYY-MM-DD
    axisFormat %d/%m/%Y
    section س
    التصميم :a1, 01/03/2026, 10d
صحيح
gantt
    dateFormat DD/MM/YYYY
    axisFormat %d/%m/%Y
    section س
    التصميم :a1, 01/03/2026, 10d

ما تراه

يُقتطع اسم المهمة عند أول نقطتين رأسيتين

لماذا

توجد نقطتان رأسيتان داخل اسم المهمة. فأول نقطتين هما الفاصل، ولذلك يُقرأ كل ما بعدهما بيانات مهمة. قِيس: مهمة اسمها `المرحلة ١: التحليل` تخرج في المخطط باسم `المرحلة ١` فقط، وتختفي كلمة التحليل. أما أسماء الأقسام فلا تتأثر — جُرّب.

الحل

لا نقطتين رأسيتين في أسماء المهام. استعمل شرطة أو انقل التفصيل إلى اسم القسم.

خطأ
gantt
    dateFormat DD/MM/YYYY
    section س
    المرحلة ١: التحليل :a1, 07/01/2026, 10d
صحيح
gantt
    dateFormat DD/MM/YYYY
    section س
    المرحلة ١ — التحليل :a1, 07/01/2026, 10d

ما تراه

ينكمش الشريط حتى يتلاشى

لماذا

مدة بلا وحدة. فـ `5` ليست خمسة أيام: الوحدة إلزامية وبدونها لا تنال المهمة طولًا ذا معنى. ويُرسم المخطط رغم ذلك، بمهمة تبدو وكأنها لا تستغرق وقتًا.

الحل

اكتب الوحدة دائمًا: `5d` أو `3w` أو `2h`.

خطأ
gantt
    dateFormat DD/MM/YYYY
    section س
    التصميم :a1, 07/01/2026, 5
صحيح
gantt
    dateFormat DD/MM/YYYY
    section س
    التصميم :a1, 07/01/2026, 5d

ما تراه

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

لماذا

غياب `excludes weekends`. فافتراضيًا تكون مهمة العشرة أيام عشرة أيام تقويمية بالعطلة، ولذلك ينتهي كل ما يتجاوز أسبوع عمل في المخطط قبل انتهائه في الواقع. وهنا تفصيل يخص المنطقة العربية: يعدّ Mermaid العطلة السبت والأحد، وهو ما يطابق كثيرًا من البلدان العربية اليوم لكنه لا يطابقها كلها — فإن كانت عطلتك الجمعة والسبت، فحتى `excludes weekends` لن يعطيك النتيجة الصحيحة، والحل عندئذ استبعاد التواريخ يدويًا.

الحل

أضف `excludes weekends` قرب البداية وبعده تواريخ الأعياد — ما لم يكن العمل يجري فعلًا سبعة أيام في الأسبوع.

خطأ
gantt
    dateFormat DD/MM/YYYY
    section س
    الترحيل :a1, 20/04/2026, 10d
صحيح
gantt
    dateFormat DD/MM/YYYY
    excludes weekends, 01/05/2026
    section س
    الترحيل :a1, 20/04/2026, 10d

ملاحظات على الرسم

مقيس على Mermaid 11.12.2، وهي النسخة التي يستعملها هذا الموقع. ويسلك جانت سلوكًا مغايرًا لكل الأنواع الأخرى.

النوع الوحيد ذو عرض رسم ثابت

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

الأرقام العربية الهندية: ممنوعة في التواريخ، مسموحة في التسميات

هذا أوضح تمييز خاص بالعربية في هذا الموقع، ويستحق أن يُحفظ لأنه يوفّر وقتًا. قِيس: `٠١/٠٣/٢٠٢٦` في موضع تاريخ يرمي `Invalid date` ويوقف الرسم كليًا. والرقم نفسه داخل اسم مهمة — مثل `المرحلة ١` — يُرسم كما هو دون أي اعتراض، لأن اسم المهمة تسمية تُعرض ولا قيمة تُحلَّل. فالقاعدة العملية: أرقام لاتينية في كل ما يُحسب، وأرقام عربية هندية في كل ما يُقرأ.

الشرطة المائلة لا تنفع — التحليل يبقى أمريكيًا

أكرره هنا لأنه أغلى مزلق يقع فيه من يكتب بالعربية. قِيس: مع `dateFormat YYYY-MM-DD` لا يعطي التاريخ `01/03/2026` خطأً ولا تحذيرًا، بل يستقر في الثالث من يناير — فالشرطة المائلة لا تلمّح للمحرك بأي وجه أن هذا يوم ثم شهر. والنقطة مثلها. و`dateFormat DD/MM/YYYY` المعلن يحل المسألة حلًا تامًا. وهو أول سطر يستحق أن يُضاف إلى كل مخطط جانت عربي.

تصدير PNG دقيق إلى حدّ البكسل

يرسم جانت تسمياته نصًا SVG عاديًا لا HTML مضمّنًا، ولذلك — بخلاف مخطط التدفق ومخططات الأصناف والحالات والكيانات — يقبل التحويل إلى صورة نقطية مباشرة. فيطابق ملف PNG المصدَّر ما على الشاشة تمامًا، دون إعادة رسم ودون انزياح في تنضيد النص.

الصياغة متساهلة في كل شيء إلا النقطتين

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

متى يكون مخطط آخر أنسب

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

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

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

أنواع المخططات الأخرى

بقلم Dominik Malsch · آخر تحديث:

افتح المحرر ←