المحتوى
رسائل الخطأ والحالات الفارغة
رسالة الخطأ ليست اعتذارا، وليست فرصة لصياغة أنيقة. هي أداة تشغيلية: تخبر المستخدم بالضبط ما الذي تعطّل، وبالضبط ما الذي عليه فعله الآن ليكمل عمله. الحالة الفارغة ليست فراغا بصريا يُملأ بجملة لطيفة، بل أول لحظة تُرشد فيها المستخدم إلى إجرائه الأول في النظام.
القاعدة: اسم الحقل، اسم الحل
كل رسالة خطأ في ميركاتو تسمي بالضبط ما تعطّل، وتسمي بالضبط كيف يُصلَح. "حدث خطأ" ليست رسالة، هي اعتراف بالفشل في التواصل: هي تخبر المستخدم أن شيئا ما تعطّل، لكنها لا تخبره ماذا، ولا أين، ولا ماذا يفعل حياله. المندوب الذي يواجه هذه الرسالة في وسط الميدان لا يملك وقتا ليجرّب عشوائيا حتى يعمل النظام من جديد؛ هو يحتاج جوابا مباشرا يعيده إلى عمله خلال ثوانٍ.
القاعدة العملية بسيطة وتُختبر بجملة واحدة: هل تسمي هذه الرسالة الحقل تحديدا؟ وهل تسمي الحل تحديدا؟ إن كانت الإجابة لا على أي من السؤالين، أعد الصياغة قبل أن تعتبرها جاهزة للشحن. هذا لا ينطبق فقط على أخطاء النماذج، بل على كل رسالة خطأ في المنتج: من فشل شبكة إلى تجاوز حد بونص إلى مادة غير مرتبطة بمذخر.
عقد رسالة الخطأ: ستة شروط
إذا فشلت رسالة في أي شرط من الشروط الستة التالية، فهي عيب في المحتوى بنفس درجة عيب في الكود، ويُصلَح قبل الإطلاق لا بعده.
قل بالضبط ما الذي تعطّل، لا "حدث خطأ".
قل بالضبط ماذا يفعل المستخدم الآن، لا "حاول مرة أخرى" مجردة بلا خطوة فعلية.
كن محددا: استخدم البيانات الفعلية متى توفرت. "تجاوزت حد البونص بمقدار 15,000 د.ع" أفضل من "تجاوزت الحد" بمسافة كاملة.
لا تعتذر أكثر من اللازم. "نأسف لهذا الخطأ" لا يضيف معلومة، ويأخذ مساحة من الجملة التي تحمل الحل الفعلي.
لا تُلقِ اللوم على المستخدم. "لم تُدخل بيانات صحيحة" تحاسب المستخدم؛ "أدخل رقم هاتف صالح" تعطيه خطوة تالية دون حكم عليه.
لا تستخدم مصطلحات تقنية. "غير صالح" لا يعني شيئا لمن لا يقرأ كود التحقق؛ "يجب أن يتكون رقم الهاتف من 11 رقما" يعني كل شيء.
مثال مفصّل: خطأ رقم الهاتف
خذ الحقل الأكثر شيوعا في أي نموذج: رقم الهاتف. الفشل الشائع هو رسالة واحدة عامة تُستخدم لكل حالة خطأ ممكنة في هذا الحقل. لكن كل سبب فشل مختلف يحتاج رسالته الخاصة، لأن الحل يختلف باختلاف السبب: رقم قصير جدا يحتاج أرقاما إضافية، ورقم يبدأ بمقدمة غير صحيحة يحتاج تصحيح المقدمة، لا مجرد "أعد المحاولة".
قبل
رقم غير صالح.
بعد
يجب أن يتكون رقم الهاتف من 11 رقما.
قبل
لم تدخل بيانات صحيحة.
بعد
أدخل رقم هاتف صالح يبدأ بـ 07.
قبل
خطأ في التسجيل.
بعد
هذا الرقم مسجَّل بحساب آخر. سجّل الدخول بدلا من ذلك أو استخدم رقما مختلفا.
لاحظ أن كل رسالة "بعد" أعلاه تسمي الحقل ضمنا من موقعها (ملاصقة لحقل رقم الهاتف تحديدا)، وتسمي السبب والحل معا بجملة واحدة قصيرة. لا رسالة منها تحتاج من المستخدم أن يخمّن، ولا واحدة منها تفترض أنه يعرف ما يعنيه "صالح" من الناحية التقنية.
- اكتب رسالة منفصلة لكل سبب فشل مختلف، حتى لو كانت كلها في نفس الحقل.
- اذكر الشرط الدقيق: عدد الأرقام، المقدمة المطلوبة، أو أي قيد فعلي يحكم صحة القيمة.
- لا تُعِد استخدام "قيمة غير صالحة" لكل حقل في كل نموذج، وكأن الحقول متطابقة.
- لا تفترض أن المستخدم يعرف قواعد التحقق الداخلية لمجرد أنها بديهية لفريق التطوير.
قوالب أخطاء ميركاتو
الجدول التالي يغطي أكثر حالات الخطأ التشغيلية شيوعا في تطبيقات ميركاتو، من فشل الشبكة إلى مادة غير مرتبطة بمذخر. استخدمه كنقطة انطلاق، لا كنص جامد: أي رسالة جديدة تُقاس بنفس الشروط الستة أعلاه قبل اعتمادها.
| الحالة | سيّئ | جيد |
|---|---|---|
| التحقق من صحة النموذج | قيمة غير صالحة. | أدخل رقم هاتف مكوّن من 11 رقما. |
| تجاوز حد البونص | تجاوزت الحد. | تجاوزت حد البونص بمقدار 15,000 د.ع. قلّل الكمية أو تواصل مع المكتب. |
| فشل الاتصال بالشبكة | حدث خطأ. | لم يتم الاتصال. تحقق من اتصالك بالإنترنت ثم أعد المحاولة. |
| مادة غير مرتبطة | غير مرتبط. | هذه المادة غير مرتبطة بأي مذخر. ستظهر في المكتب لمعالجتها. |
| إلغاء طلبية فرعية | تم الإلغاء. | تم إلغاء الطلبية الفرعية من مذخر X. يمكنك إعادة توجيه موادها. |
| صفحة غير موجودة | الصفحة غير موجودة. | هذه الصفحة غير متاحة. تحقق من الرابط أو ارجع إلى الرئيسية. |
| خطأ خادم عام | خطأ في الخادم. | حدث خطأ غير متوقع. أعد تحميل الصفحة للمحاولة مرة أخرى. |
تصميم الخطأ: اللون والموضع والمدة
الخطأ الحاجب (Critical) يستخدم اللون الأحمر مع أيقونة تحذير ودعوة واضحة للفعل: هذا خطأ يمنع المستخدم من المتابعة حتى يُحل. الخطأ غير الحاجب (Warning) يستخدم اللون الأصفر أو الكهرماني مع خطوة تالية واضحة: هذا تنبيه يمكن للمستخدم تجاوزه، لكنه يستحق انتباهه.
الموضع قاعدة صارمة: يظهر الخطأ ملاصقا للعنصر الذي سبّبه مباشرة، أسفل الحقل تحديدا، لا في قائمة واحدة أعلى النموذج فقط. مستخدم يواجه ثلاثة أخطاء في نموذج طويل لا ينبغي أن يبحث بعينه عن أي حقل يخص كل رسالة؛ الرسالة توجد حيث ينظر بالفعل.
- استخدم الأحمر وأيقونة تحذير للأخطاء الحاجبة، مع دعوة فعل مباشرة.
- ضع رسالة الخطأ أسفل الحقل المعني مباشرة، لا في قائمة منفصلة أعلى النموذج.
- لا تُخفِ خطأ التحقق داخل تنبيه عابر (toast) يختفي تلقائيا خلال ثوانٍ قليلة.
- لا تعتذر بجملة إضافية بدل أن تخصص تلك المساحة لذكر الحل.
لماذا لا يُستخدم التنبيه العابر أبدا لخطأ نموذج
التنبيهات العابرة (Toasts)
التنبيه العابر جملة واحدة قصيرة، لا أكثر. للنجاح: اذكر ما حدث بلا زخرفة، مثل "تم إرسال الطلبية". للفشل: اذكر ما تعطّل بإيجاز، مثل "فشل الإرسال. تحقق من اتصالك"، مع إبقائه ظاهرا حتى يتخذ المستخدم إجراء إن كان الفشل يتطلب ذلك.
الحالات الفارغة: ثلاثة أجزاء
كل حالة فارغة في ميركاتو تحمل ثلاثة أجزاء، وليس بالضرورة جميعها ظاهرا معا في كل مرة: ما الذي ينقص (بإيجاز وصدق، بلا تجميل)، ولماذا يهم ذلك (اختياري، ويُستخدم غالبا في أول ظهور للحالة فقط)، وماذا يفعل المستخدم الآن (دعوة الفعل، وهذا الجزء لا يُحذف أبدا إن وُجد إجراء ممكن).
الفراغ ليس نهاية، هو نقطة انطلاق
الخطأ الأكثر شيوعا في الحالات الفارغة هو معاملتها كإعلان فشل: "لا توجد بيانات" فقط، دون أي إشارة إلى ما يمكن للمستخدم فعله بعد ذلك. الحالة الفارغة الجيدة تفترض أن المستخدم يقف أمام صفحة فارغة لأول مرة، وتقوده مباشرة إلى الإجراء الذي يملأ هذا الفراغ، بدل أن تتركه يبحث بنفسه عن الزر الصحيح في مكان آخر من الشاشة.
- اكتب الحالة الفارغة بنفس دقة رسالة الخطأ: ماذا ينقص، وماذا يفعل المستخدم الآن.
- اجعل دعوة الفعل زرا حقيقيا قابلا للضغط، لا جملة معلّقة تفترض أن المستخدم يعرف أين يذهب.
- لا تكتفِ بـ "لا توجد بيانات" دون أي إشارة إلى الخطوة التالية.
- لا تستخدم نفس نص الحالة الفارغة لحالتين مختلفتين تماما، مثل عدم وجود طلبيات مقابل عدم وجود نتائج بحث.
قوالب الحالات الفارغة
الجدول التالي يغطي حالات الفراغ الأكثر تكرارا عبر تطبيقات ميركاتو، من مندوب جديد بلا إحصاءات إلى بحث بلا نتائج.
| السياق | ما الذي ينقص | دعوة الفعل |
|---|---|---|
| لا توجد طلبيات بعد | لا توجد طلبيات بعد. | ابدأ بإنشاء طلبيتك الأولى |
| لا توجد نتائج بحث | لا توجد نتائج لـ "[كلمة البحث]". | جرّب كلمة مختلفة |
| لا توجد صيدليات في القطاع | لا توجد صيدليات في هذه المنطقة. | تواصل مع المكتب لإضافة صيدليات |
| لا توجد إحصاءات بعد (مندوب جديد) | لا توجد إحصاءات بعد. | ستظهر هنا بعد أول طلبية ترسلها |
| قائمة مُفلترة بلا نتائج مطابقة | لا توجد طلبيات بهذه الحالة. | غيّر الفلتر للاطلاع على طلبيات أخرى |
متى يُحذف "لماذا يهم ذلك"؟
قائمة تحقق سريعة
قبل اعتماد أي رسالة خطأ أو حالة فارغة، راجعها مقابل هذه الأسئلة: