ProjoMania
أودو 22 أكتوبر 2026 · Mohamed Magdy

من أودو 19 إلى 20: الأعطال التي تُثبَّت بلا أخطاء

نقلنا قاعدة شيفرة أودو 19 من 49 وحدة ومتعددة الشركات إلى أودو 20. الأعطال الصاخبة كانت الجزء السهل. هذه هي الأعطال الصامتة — وحدات تُثبَّت دون أي خطأ ثم تُخرج أرقاماً خاطئة — وكيف اكتشفناها.

أودو 20 واحدة من أكبر القفزات في إطار العمل منذ سنوات. نقلنا بالفعل قاعدة شيفرة أودو 19 من 49 وحدة ومتعددة الشركات إليه — امتدادات محاسبية، ووحدات تقييد صلاحيات، ولوحات مؤشرات، ومشتريات، وتقارير. كل وحدة تُثبَّت. وكل اختبار كان ينجح على 19 ينجح على 20.

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

التغييرات الصاخبة (خصّص لها وقتاً، لكنها تكشف نفسها)

  • نموذج الأمان. دُمج ir.model.access وir.rule في نموذج واحد هو ir.access. ملفات الصلاحيات وقواعد السجلات القديمة يجب تحويلها.
  • OWL 3. انتقلت واجهة الويب إلى OWL 3 وأُزيلت طبقة التوافق مع OWL 2. الأدوات المخصصة وإجراءات العميل وأي شيفرة قديمة أو مبنية على jQuery تحتاج إلى نقل.
  • بيئة التشغيل. يتطلب أودو 20 بايثون 3.12–3.14، ولم تعد pytz تبعية أساسية — النواة تستخدم zoneinfo.

يوفّر أودو أدوات تحويل آلي (codemods) لجزء كبير من ذلك. شغّلها، لكن لا تثق بها دون مراجعة. في مشروعنا كتبت أداة تحويل OWL 3 استيرادات غير موجودة في 20 — واستيراد JavaScript واحد خاطئ يُسقط واجهة الويب لـكل الوحدات، لا للوحدة التي تحتويه فقط.

التغييرات الصامتة (وهي التي تكلّف المال)

كل ما يلي ثُبِّت دون أخطاء وأخرج نتائج خاطئة، إلى أن قارنّا 19 و20 جنباً إلى جنب على البيانات نفسها:

  • التقارير المالية تتجاوز الصلاحيات. يبني أودو 20 استعلام التقرير مع تعطيل فحص الصلاحيات. مستخدم مقيّد بعدد قليل من دفاتر اليومية رأى دفتر أستاذ عاماً من 100,010 سطر بدلاً من 11. إذا كنت تعتمد على قواعد السجلات لفصل الشركات أو الأقسام في المحاسبة، فأعد إثباتها على 20 — لا تفترض أنها انتقلت كما هي.
  • أداة تحويل الأمان تغيّر من يرى ماذا. أسقطت قاعدة كانت تمنح مديري فرق المبيعات رؤية طلبات فرقهم. وفي ir.access تُجمع الصفوف بمنطق «أو»: صف بلا نطاق بجوار صف بنطاق يمنح كل شيء.
  • تقييم المخزون أصبح بإشارة. الحركات الصادرة أصبحت سالبة. مؤشر مخصص لدوران المخزون أظهر ‎−1,162 بدلاً من 7.88، وتجاوزت هوامش الربح المبنية على الحقل نفسه 100%.
  • حالات الدفع تغيّرت. ما كان paid أصبح reconciled، وما كان in_process أصبح paid. كل مؤشرات الدفع المخصصة ظهرت «غير متاحة» حتى أعدنا ربطها.
  • وصف السطور أُعيدت تسميته. سطور الفواتير وأوامر البيع والشراء تحمل النص في label لا في name. المستندات المطبوعة بقوالب مخصصة خرجت بأوصاف منتجات فارغة.
  • صلاحيات النواة اتّسعت. مستخدمو المخزون والفوترة يرون الآن كل أوامر البيع. والحسابات البنكية لم تعد ترث شركة الشريك. ليس أيٌّ منهما خطأ في شيفرتك — لكن كليهما يغيّر ما يراه مستخدموك.
  • القيود أصبحت مفعّلة. قيود SQL التي أعلنها 19 وتجاهلها أصبحت مُلزِمة في 20. الرموز المكررة التي عاشت بهدوء في بيانات 19 ستوقف ترحيل البيانات حتى تُنظَّف.

لا شيء من ذلك يظهر سطراً أحمر في سجل التثبيت. التثبيت الناجح ليس ترقية ناجحة.

كيف اكتشفناها

لكل وحدة، لم يكن المعيار «أنها تُثبَّت». كان:

  1. خط أساس على 19 أولاً. تثبيت كل وحدة واختبارها على قاعدة 19 جديدة قبل تغيير أي سطر، ليكون لكل فشل لاحق ما يُقارَن به.
  2. التطابق، لا الاختبارات فقط. لوحدات الأمان، يجب أن تتطابق مصفوفة صلاحيات كل دور على 19 و20. للوحات المؤشرات، يجب أن تتطابق الأرقام. للتقارير، يجب أن يتطابق النص المطبوع.
  3. مسح عبر المتصفح لكل قائمة كمدير وكمستخدم مقيّد، بلا أي خطأ في وحدة التحكم. الاختبارات لا تحمّل مكونات OWL؛ المسح يفعل.
  4. تثبيت قاعدة الشيفرة كاملة. أربعة أعطال لم تظهر إلا مع تثبيت الوحدات الـ49 معاً — منها انهيار في محمّل شجرة الحسابات في أودو 20 لم تكن أي وحدة منفردة لتكشفه.

التشغيل النهائي: الوحدات الـ49 كلها على قاعدة واحدة، 2,522 اختباراً على 20 مقابل 2,518 على 19، ولا اختبار ينجح على 19 يفشل على 20.

الشيفرة نصف القصة

نقل الوحدات هو نصف الشيفرة. نقل بياناتك إلى 20 هو النصف الآخر: خدمة الترقية من أودو للنواة، إضافة إلى سكربتات بيانات لكل إشارة مخزّنة إلى حقل أُعيدت تسميته — قوالب تقارير تطبع name، وقيم أيقونات في بيانات الإعداد، وتكرارات تخالف القيود. خطّط للنصفين قبل اختيار موعد الانتقال.

هل تنتقل الآن؟

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

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

اعمل معنا

عرض سعر، استشارة، أو مكالمة اكتشاف.