المهام المتكررة في تطبيق العمل: ماذا تعني عبارة «كل شهر»؟
قبل طلب ميزة لتكرار زيارات الصيانة أو الفحوص أو المهام الداخلية، اتفقوا على القاعدة التي تنشئ كل موعد. كلمة «شهرياً» لا تكفي: اليوم نفسه من الشهر، وآخر يوم فيه، والفاصل الزمني الثابت ليست وعوداً متطابقة. اطلبوا عرض المواعيد الفعلية القادمة قبل تفعيل السلسلة، وحددوا على نحو منفصل ما يحدث عند نقل زيارة واحدة أو توقف التطبيق عن إنشاء المهام.
هذا دليل لتحديد سلوك سلسلة عمل متكررة، وليس لاختيار طريقة عرض المناطق الزمنية أو إرسال التذكيرات أو تحصيل الدفعات آلياً. قواعد العمل المقترحة هنا توصيات عملية. أما معيار iCalendar المشار إليه فيشرح قواعد محددة للتقويم، ولا يضمن أن تطبيقاً بعينه يوفرها.
ابدأوا بالمواعيد التي يتوقعها الفريق
اطلبوا من المسؤول عن العمل كتابة عدة مواعيد قادمة، على أن تشمل شهراً قصيراً. بعد ذلك سمّوا القاعدة التي تنتج هذه المواعيد فعلاً.
في مثال افتراضي، قد تعني خطة الصيانة «آخر يوم تقويمي من كل شهر». وقد تعني خطة أخرى «آخر يوم يقع بين الاثنين والجمعة». وهذا لا يعني بالضرورة آخر يوم عمل، فقد تقع عطلة رسمية أو فترة إغلاق للشركة في أحد تلك الأيام. إذا كانت العطلات مؤثرة، فحددوا التقويم المعتمد، ومن يحدثه، وهل يُقدّم الموعد أم يؤخر أم يُحال إلى شخص ليقرر.
لا تستبدلوا قاعدة تقويمية بفاصل زمني ثابت لمجرد سهولة برمجته. وإذا كان المطلوب مرتبطاً بوقت الإنجاز السابق، فاكتبوا ذلك صراحة. فمهمة تستحق بعد شهر من انتهاء الزيارة السابقة تختلف عن سلسلة تحتفظ بمواعيد شهرية ثابتة مهما تأخر الإنجاز.
ماذا لو لم يوجد اليوم المطلوب؟
عندما تبدأ السلسلة في اليوم الحادي والثلاثين، ماذا يجب أن يحدث في فبراير؟ يمكن تجاوز الشهر، أو استخدام آخر يوم موجود فيه، أو مطالبة المسؤول باختيار بديل. اختاروا عن قصد، لأن كل خيار ينتج التزامات عمل مختلفة.
ينص القسم 3.3.10 من RFC 5545 على تجاهل مرات التكرار التي تنتج تاريخاً غير صالح أو وقتاً محلياً غير موجود، وعدم احتسابها ضمن مجموعة المواعيد. هذه قاعدة مهمة عند تبادل بيانات iCalendar. لكنها لا تعني أن نشاطكم يجب أن يقبل غياب صيانة متفق عليها كل شهر. إذا كان التطبيق يعد بزيارة شهرية، فلا بد من قاعدة تنتجها فعلاً، ومن طريقة تصدير تحافظ على المواعيد المتفق عليها.
اطلبوا معاينة تشمل الأشهر القصيرة وتغييرات التوقيت ذات الصلة. ظهور اسم المنطقة الزمنية لا يوضح وحده ما إذا كان الموعد سيُحذف أو يُنقل أو يُعلّم للمراجعة.
افصلوا السلسلة عن الزيارة الواحدة
نقل زيارة واحدة يجب ألا يعيد كتابة الخطة كلها من دون تنبيه. اطلبوا إجراءين واضحين: تعديل هذا الموعد فقط، وتعديل السلسلة بدءاً من نقطة متفق عليها. وبيّنوا أثر كل إجراء في المواعيد التي سبق تأكيدها أو إنجازها.
يقدم المعيار نموذجاً مفيداً لهوية الموعد. في القسم 3.8.4.4، يعتمد معرّف الموعد المعدّل على وقته الأصلي. فإذا نُقل اجتماع من الجمعة إلى الخميس، يبقى وقت الجمعة الأصلي أساساً لذلك المعرّف. لا يلزم عرض هذا الحقل التقني للمستخدم، لكن ينبغي أن تظل الزيارة المنقولة معروفة بوصفها الزيارة نفسها، لا عملاً إضافياً إلى جانب الموعد القديم.
احتفظوا بالإلغاء كاستثناء صريح. حذف صف ظاهر فقط لا يضمن ألا يعيده مولّد السلسلة. يصف القسم 3.8.5.1 أولوية التواريخ المستبعدة على التواريخ المدرجة في iCalendar. أما وجوب تعويض الزيارة الملغاة فهو قرار عمل منفصل.
الموعد المخطط ليس دليلاً على الإنجاز
اتفقوا على وقت إنشاء سجلات العمل الفعلية ومدى المواعيد المستقبلية المعروضة. السلسلة الممتدة لسنوات لا تحتاج إلى قائمة لا تنتهي على الشاشة، لكنها تحتاج إلى تمييز واضح بين موعد مخطط، ومهمة أُنشئت، وموعد أُلغي، وعمل اكتمل.
وإذا توقفت الخدمة عن إنشاء المهام، فماذا يحدث عند عودتها؟ هل تنشئ الأعمال المتأخرة، أم تعرض المواعيد الفائتة للمراجعة، أم تستأنف من المواعيد المستقبلية فقط؟ لا تفترضوا أن كل مهمة متأخرة ينبغي تنفيذها فوراً. إرسال الإشعارات الخارجية أو إحداث تغييرات تلقائية أخرى يحتاج إلى تصميم مستقل للتسليم والتحقق من النتائج؛ هذا المقال لا يعد بضمان تلك العمليات.
حوّلوا الاتفاق إلى عرض عملي
أدرجوا الأمثلة التالية ضمن معايير قبول التطبيق:
- ينتج الشهر القصير النتيجة المتفق عليها، لا زيارة مفقودة بلا تفسير.
- تحتفظ الزيارة المنقولة بهويتها ولا تتغير بقية المواعيد.
- يبقى الموعد الملغى ملغى بعد إعادة إنشاء المواعيد.
- يظهر تاريخ بدء تعديل السلسلة، ولا يُعاد تغيير العمل المكتمل.
- توضح العودة بعد الإيقاف المؤقت مصير المواعيد التي وقعت أثناءه.
- يؤدي انقطاع تجريبي إلى مراجعة العمل المتأخر كما اتُفق، من دون إنشاء مواعيد مكررة.
اطلبوا ملخصاً مفهوماً بجانب المعاينة، مثل: «آخر يوم تقويمي؛ تُتجاوز مواعيد فترة الإيقاف؛ تسري التعديلات من الموعد المحدد». إذا لم يستطع الفريق شرح هذه الجملة، فالميزة لم تصبح واضحة بما يكفي للبناء. أحضروا جدولاً حقيقياً واستثناءاته إلى مناقشة مشروع تطبيق ويب، بدلاً من الاكتفاء بطلب زر للتكرار.