الدروس · الدرس 3 من 5
سجلّان للكرتونة الواحدة
سجلّ المسح وتأكيد تعبئة الدفعة — ماذا يثبت كلٌّ منهما، وأيّهما تقرأ بوّابة الشحن، ولماذا لا يلتقيان.
الدرس 3 من 5 · 20 د
صندوق واحد ودفتران
الكرتونة تغادر ساحة التعبئة مرّة واحدة. وفي هذا التطبيق تستطيع أن تُكتب مرّتين، في موضعين، على يد شخصين، بلا رابط بينهما.
ولا موضع منهما خطأ. فقد بُنيا لعملين مختلفين ويجيبان عن سؤالين مختلفين. والمتاعب تبدأ حين يفترض أحد أن ملء أحدهما يملأ الآخر. وهذا الدرس عن التفريق بينهما، وعن أيّهما ستنظر فيه بوّابة الشحن فعلاً.
في تشينتشا نيتووركس (Chincha Knitworks) يقف بيرسي كيروس (Percy Quiroz) في ساحة التعبئة ومعه ماسح باركود. وتجلس ميلاغروس زيفايوس (Milagros Zevallos) في المكتب وتبويب الشحن مفتوح أمامها. وكلاهما يسجّل تعبئة ORD-1356. وواحد منهما فقط ينتج دليلاً سيستعمله التطبيق.
الأساس. كل رسالة وعمود وزرّ أدناه مقروء من مصدر التطبيق. وحيث يقول الدرس إن حقلاً لا يُكتب أبداً، فذلك من تتبّع مسار الكتابة في الشيفرة وعدم وجود شيء يضبطه.
الدفتر الأول: محطة التعبئة
تصل إلى المحطة من لوحة التعبئة، أو من زرّ في لوحة تعليمات التعبئة، أو مباشرة من /packing/station.
وبلا طلبية في العنوان تعرض المحطة الطلبيات التي تستطيع مسحها. ولا تعرض إلا طلبية ضُبط لها عدد القطع الفعلي لكل كرتونة، لأن المسحة يجب أن تعرف كم قطعة سجّلت للتوّ.
وإن وصلت إلى طلبية بعينها غير جاهزة، رفضت المحطة بالكلمات لا بالاختفاء. فتقول إن الطلبية "ليس لها مقاس كرتونة بعد، فلا تستطيع المسحة معرفة كم قطعة في كل كرتونة"، وتخبرك بضبط تعليمات التعبئة، وتعطيك رابطاً مباشراً إلى تبويب الشحن في تلك الطلبية.
وحالما تدخل، فالمحطة خانة إدخال واحدة ومجموع جارٍ. وما تسجّله المسحة يستحقّ التعداد بالضبط.
| العمود | هل تكتبه المحطة؟ |
|---|---|
| الطلبية | نعم |
| كود الكرتونة | نعم، مشذَّباً ومحوَّلاً إلى حروف كبيرة |
| القطع في الكرتونة | نعم، وهي دائماً القطع الفعلية لكل كرتونة في الطلبية |
| مَن مسح | نعم |
| متى | نعم |
| الشحنة | لا — العمود موجود والمحطة لا تضبطه أبداً |
| اللون | لا — والحال نفسها |
| المقاس | لا — والحال نفسها |
| الوزن | لا يوجد عمود كهذا |
وأربع قواعد تحكم ما تقبله المحطة، والأربع في الشيفرة لا في عُرف.
- كود الكرتونة أي نصّ غير فارغ حتى أربعة وستّين محرفاً بلا محارف تحكّم. ولا صيغة له، لأن المصنع يطبع بطاقاته بنفسه.
- والكود الممسوح سابقاً على هذه الطلبية يُرفض بجملة "مُعبَّأة أصلاً — CODE مُسح من قبل." وخلفه فهرس فريد يلتقط مسحة مزدوجة حقيقية من محطّتين معاً.
- والتراجع يحذف أحدث صفّ حذفاً تامّاً، فتُمسح كرتونة أُخطئ مسحها مرّة أخرى. وهو حذف صريح لا قيد عكسي.
- وكل صفّ مقبول يحمل مَن مسحه ومتى، والشاشة تقول ذلك: "المسحات المكرّرة مرفوضة ولا يمكن تضخيم عدد الكراتين بمسحة مزدوجة. وكل مسحة مسجَّلة بمن مسحها ومتى."
وذلك سجلّ تدقيق جيّد فعلاً لعمل مادّي. وهو أيضاً، لأسباب تأتي بعد قليل، غير مرئيّ لبقيّة التطبيق.
الدفتر الثاني: رقم المعبَّأ في الدفعة
الطلبية قد تُشحن في أكثر من دفعة. وكل دفعة صفّ في قسم الشحنات أسفل تبويب الشحن. وكل صفّ يحمل كمية ونمط نقل وتواريخ وحالاً. وكل صفّ يحمل أيضاً محتوياته، وهي تخصيص من تفصيل الألوان والمقاسات في الطلبية، فيعرف التطبيق أي الأثواب في أي دفعة.
وتحت الدفعة أداة صغيرة: خانة اسمها Packed pcs، وبجانبها الكمية المطلوبة للدفعة، وزرّ Confirm packing. والضغط عليه يفتح لوحة تأكيد تبيّن ما سيحدث. وأسطرها الثلاثة تستحقّ الاقتباس، فالثاني والثالث يعلّمان شيئاً حقيقياً.
- تسجّل الرقم الذي كتبته، من قطع الدفعة المطلوبة، معبَّأً لهذه الدفعة.
- "هذا تأكيد تعبئة — وهو لا يشحن الدفعة."
- "الدفعة تُقرأ «جاهزة للشحن» فقط حين تكون معبّأة بالكامل ويكون فحصها النهائي قد نجح."
والخادم يحدّ الرقم. فيرفض السالب، ويرفض أكثر ممّا تسعه الدفعة، ويسمّي الحساب: "لا يمكن تعبئة 700 — هذه الدفعة تسع 600 قطعة فقط. عبّئ حتى 600." والسقف مجموع تخصيصات الدفعة. وفي دفعة قديمة بلا تخصيصات يكون السقف الكمية المكتوبة في رأسها. وكل تأكيد يكتب سطراً في سجلّ نشاط الطلبية.
هما لا يلتقيان
الآن النتيجة. وتستطيع فحصها في دقيقتين على تنصيبك أنت.
مجموع المحطة لطلبية، أي الكراتين الممسوحة والوحدات الممسوحة، يُقرأ في موضعين بالضبط، وكلاهما المحطة نفسها. فصفحة الطلبية لا تقرأه. ولوحة التعبئة لا تقرأه. وبوّابة الدفعة لا تقرأه. وبوّابة شحن الطلبية لا تقرأه. ولا يقرأه شيء يقرّر شيئاً.
ورقم المعبَّأ في الدفعة يُكتب في موضع واحد بالضبط: شخص يكتب رقماً في الخانة ويضغط Confirm packing.
فالدفتران يتّجهان في اتجاهين متعاكسين.
| سجلّ المسح | رقم المعبَّأ في الدفعة | |
|---|---|---|
| مَن أنشأه | مسح كرتونة مادّية | كتابة رقم |
| هل يعرف أي دفعة | لا | نعم، وذلك مقصده كلّه |
| هل يعرف اللون والمقاس | لا | عبر تخصيص الدفعة |
| هل يسمّي شخصاً | نعم، لكل كرتونة | عبر سجلّ النشاط |
| هل تقرأه بوّابة الشحن | لا | نعم |
| هل يقرأه شيء آخر | لا | نعم |
فبيرسي يستطيع مسح الكراتين الـ328 كلّها والدفعة تقول إن شيئاً لم يُعبَّأ. وميلاغروس تستطيع تأكيد الدفعة معبّأة بالكامل بلا كرتونة واحدة ممسوحة، فتصير البوّابة خضراء. فالرقم الذي وراءه دليل مادّي هو الذي يتجاهله التطبيق. والرقم الذي يثق به التطبيق هو الذي كتبه أحدهم.
الشهادة المملوءة سلفاً
وثمّة أمر ثانٍ أصغر في الأداة نفسها. ويسهل إغفاله لأنه يبدو تسهيلاً.
فخانة Packed pcs لا تُفتح فارغة. بل تُفتح وفيها الكمية المطلوبة كاملة للدفعة، ما لم يكن رقم قد أُكِّد من قبل. فأقصر طريق ممكن أن تفتح اللوحة وتضغط Confirm packing، فتُسجَّل الدفعة كلّها معبّأة دون أن يكتب أحد رقماً.
وهذا مهمّ بسبب ما يكسبه التأكيد. فالدفعة لا يُسمح بتعليمها مشحونة إلا حين تكون معبّأة بالكامل وينجح فحصها النهائي، وهذه الخانة هي نصف التعبئة كلّه في ذلك الاختبار. فالأداة تقدّم الجواب الذي يحسم البوّابة افتراضاً لها، وحسم البوّابة نقرة واحدة.
قارنه بأداة الكمية في موضع آخر من التطبيق، حيث يبقى الرقم مقدَّراً حتى يؤكّده إنسان ويسجّل التأكيد مَن ومتى. وتأكيد التعبئة يسجّل مَن ومتى، في سجلّ النشاط. وما لا يستطيع تسجيله هو هل نظر أحد.
لماذا وُجد الدرز
ويجدر الإنصاف للتصميم، فالفجوة ليست إهمالاً.
فسجلّ المسح على مستوى الطلبية لسبب حقيقي. ففي ذلك اليوم لا يعرف المعبّئ في أي دفعة ستنتهي الكرتونة. فالدفعات تُقسم وتُدمج بعد وجود البضاعة. وإلحاق شحنة بمسحة يفرض قراراً في اللحظة الخطأ، والعمود موجود غير مكتوب لأن أحداً توقّع ملأه لاحقاً.
ورقم الدفعة مكتوب باليد لسبب حقيقي أيضاً. فهو التزام لا ملاحظة. فأحدهم يؤكّد أن تخصيص هذه الدفعة كامل وجاهز للمغادرة، وذلك التأكيد هو ما يحقّ لبوّابة الشحن الاعتماد عليه. وعدّ المسح لا يستطيع حمله، لأن الكرتونة الممسوحة لم تُسنَد بعد إلى دفعة.
والخلاصة الأمينة أن التطبيق يملك الدليل ويملك الالتزام، ولا جسر بينهما. ومعرفة ذلك أثمن من أي نصف منهما.
اختبر فهمكتدقيق يسأل كيف تعرف أن دفعة من 4,000 قطعة عُبِّئت بالكامل. ماذا تستطيع إخراجه من التطبيق، وما أضعف حلقة فيه؟أظهر الإجابة
شيئان، وهما لا يلتقيان. فمن سجلّ النشاط تستطيع إخراج سطر يقول إن تعبئة الدفعة أُكِّدت عند 4,000 من 4,000 قطعة، بالفاعل والوقت اللذين يسجّلهما السجلّ. ومن محطة التعبئة تستطيع إخراج قائمة الكراتين الممسوحة للطلبية، لكل واحدة كودها وعدد قطعها ومَن مسحها ومتى. وأضعف حلقة أن لا شيء يصل الثانية بالأولى. فقائمة المسح على مستوى الطلبية ولا تحمل دفعة، فلا تستطيع إثبات أن تلك الكراتين بعينها هي التي في هذه الدفعة. والتأكيد لا يحمل كراتين، فلا يستطيع إثبات أن أحداً عدّ شيئاً. وإن اختلف المجموعان فلن يلحظ التطبيق، والمكتوب باليد وحده هو الذي أثّر.
اختبر فهمكمشرف يمسح الكرتونة نفسها مرّتين سهواً، ثم يمسح كرتونة عُبِّئت الأسبوع الماضي بكود أعادت طابعة البطاقات استعماله. ماذا يفعل التطبيق في كل حال، وأيّهما الخطرة؟أظهر الإجابة
كلتاهما تُرفض بالرسالة نفسها، أن الكود مُسح من قبل، لأن الفحص على الطلبية والكود ولا شيء غيرهما. والمسحة المزدوجة السهوية هي بالضبط ما وُجد ذلك الفحص له، وهو يتصرّف تصرّفاً مثالياً. والكود المعاد هو الخطر، لأن الرفض صحيح لسبب خاطئ. فالكرتونة الثانية صندوق حقيقي مختلف لم يُمسح، وقد امتنع التطبيق للتوّ عن تسجيله. ولا شيء يخبر المشرف بذلك. فالعدّ سينقص كرتونة، والأثر الوحيد رسالة رفض ذهبت أصلاً. والكود أي نصّ غير فارغ بالتصميم، فلا سبيل للتطبيق إلى تمييز بطاقة مكرّرة من مسحة مكرّرة. والدفاع يجب أن يكون طابعة البطاقات.
موجّه · طابِق ما مُسح ضوئياً مع ما جرى تأكيهذا
قبل تأكيد تعبئة دفعة، وكلما سأل تدقيق أو ليسترٍ كيف تعرف أن دفعة كانت كملة.
ساعدني في مطابقة سجلّين للتعبئة يحفظهما نظامي منفصلين ولا يقارن بينهما أبداً. سأعطيك: الطلبية، ودفعاتها مع الكمية المخصّصة لكل دفعة، والرقم المؤكَّد معبَّأً على كل دفعة، ومجاميع محطة التعبئة للطلبية بالكراتين والوحدات. وسأخبرك أيضاً بعدد القطع لكل كرتونة. اذكر أولاً السجلّين بلغة كلٍّ منهما دون خلط. فسجلّ المسح دليل مادّي على مستوى الطلبية لا دفعة علماذا. والرقم المؤكَّد التزام على مستوى الدفعة يكتبه شخص. وقل أيّهما تقرأه بوّابة الشحن في نظامي. ثم أجرِ الحساب الذي يصلهما، وكن صريحاً في أني أنا الوصلة. اضرب الكراتين الممسوحة في عدد القطع لكل كرتونة لتحصل على الوحدات الممسوحة. واجمع الأرقام المؤكَّدة عبر الدفعات. وضع المجموعين جنباً إلى جنب وأعطني الفرق بالوحدات وبالكراتين. ثم اقرأ الفرق في الاتجاهين لا في اتجاه واحد. فزيادة المؤكَّد على الممسوح تعني أن أحداً شهد بتعبئة لم تُمسح. وزيادة الممسوح على المؤكَّد تعني أنتاجاً معبَّأً حقيقياً لم تطالب به أي دفعة، وذلك غالباً تخصيص ناقص. سمِّ أيّهما عنهذه. وأخيراً، قل لي ما أستطيع إثباته وما لا أستطيع. وكن صريحاً في أن سجلّ المسح لا يحمل دفعة، فلا يستطيع أبداً إثبات أن هذه الكراتين بعينها هي التي في تلك الدفعة بعينها. وقاعدة واحدة. لا تقترح عليّ تغيير أي من الرقمين ليتّفقا. فالمقصود معرفة أيّهما الخطأ.
قد يخطئ الذكاء الاصطناعي — تحقّق من أي شيء ستتصرّف بناءً عليه.