Lorixen.

أرقام الطلبات وأوامر العمل: ما الذي ينبغي أن يضمنه تطبيقك؟

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

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

ابدأ بالمحادثة التي يخدمها المرجع

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

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

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

عدم التكرار لا يعني تسلسلاً بلا فجوات

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

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

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

متى يصبح المرجع نهائياً؟

هل تحمل المسودة تسمية مؤقتة؟ وهل يُخصص المرجع النهائي عند الإنشاء أم الموافقة أم التأكيد؟ اكتب الحدث المختار وحدد ما يراه العميل قبل وقوعه.

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

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

حافظ على المرجع عند تغير البيانات

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

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

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

صعوبة تخمين المرجع ليست حماية للصلاحيات

تؤكد إرشادات OWASP لمنع الوصول غير المصرح به عبر مراجع السجلات أن فحوص صلاحية الوصول تظل ضرورية حتى مع المعرّفات المعقدة. معرفة رقم المهمة لا ينبغي أن تمنح الشخص تلقائياً حق الاطلاع على تفاصيلها.

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

ما الذي تحسمه قبل التسليم؟

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

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

المصادر وحدود الدليل

  • PostgreSQL، Sequence Manipulation Functions: https://www.postgresql.org/docs/current/functions-sequence.html
  • OWASP، Insecure Direct Object Reference Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet.html

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

WhatsAppلنتحدث