إذا تساءلت يومًا من الذي عدّل بيانات سجل في أودو ومتى حصل ذلك، فميزة التتبع تقدم الإجابة مباشرة داخل نظامك.
أودو يوفر طريقة لتسجيل تغييرات حقول محددة وعرض كل تعديل داخل محادثة السجل — ما يعرف بالـ chatter — بحيث يمكن للفِرق متابعة تطور البيانات دون الحاجة لبناء نظام تدقيق منفصل.
سواءً كنت تضيف حقول عبر Odoo Studio أو تطور وحدة مخصصة بلغة بايثون، فإن فهم آلية التتبع مهم للعمل مع نموذج بيانات أودو. هذا الدليل يشرح لك المبادئ الأساسية والاختلافات العملية لتفعيل التتبع.
ما هو حقل التتبع في أودو؟
في أودو، التتبع ليس نوعًا جديدًا من الحقول بل خاصية تُفعّل على الحقول الموجودة مثل Char أو Many2one أو Selection أو Integer أو Date. عند تفعيل التتبع، يسجل أودو كل تغيير ويعرض القيمة السابقة والجديدة والتاريخ والمستخدم الذي أجرى التعديل داخل محادثة السجل.
تظهر هذه السجلات كملاحظة في سلسلة رسائل السجل. مثلاً في سجل فرصة مبيعات قد ترى ملاحظة تلقائية تفيد بأن «الحالة تغيّرت من جديد إلى مؤهّل»، ويظهر ذلك فور حفظ التعديل من مندوب المبيعات.
خاصية التتبع متاحة لمعظم أنواع الحقول القياسية في أودو ويمكن تفعيلها عبر Odoo Studio للنهج بلا كود أو عبر تعريف الحقول في كود بايثون ضمن وحدات مخصصة.
ما الذي يخزّنه التتبع؟
كل تغيير متتبع يُخزّن فعليًا كقيمة رسالة من نوع mail.message مرتبطة بالسجل، وتحتوي هذه الرسالة على عناصر مفيدة للمتابعة، منها:
- اسم أو تسمية الحقل الذي تغيّر
- القيمة السابقة قبل التعديل
- القيمة الجديدة بعد التعديل
- الوقت أو الطابع الزمني للتغيير
- المستخدم الذي نفّذ التعديل
التاريخ كامل متاح لأي شخص يملك صلاحية القراءة على السجل؛ لا يتطلب ذلك إعدادًا إضافيًا سوى تفعيل التتبع على الحقل المعني.
كيف يعمل هذا الحقل
لكي يعمل التتبع، يجب أن يرث النموذج الميكسين mail.thread، فهذه الطبقة توفر بنية المراسلات والسجل التي تعتمد عليها ميزة الـ chatter. أغلب نماذج الأعمال القياسية في أودو مثل sale.order وcrm.lead وaccount.move وstock.picking تكون مهيأة لذلك مسبقًا.
عند حفظ سجل يحتوي على حقول مفعّل عليها التتبع، يقارن أودو بين القيم القديمة والجديدة ويُنشئ رسالة تسجيل تلقائيًا؛ لا يتطلب ذلك أي تدخل يدوي من المستخدم.
السلوك التقني داخل ORM الخاص بأودو
تقنيًا، طبقة ORM تلتقط عمليات الكتابة على النموذج. عندما تستدعي دالة write() لتعديل حقل متتبع، يلتقط الإطار القيمة السابقة، يطبّق التغيير، ثم ينشئ سجل mail.message يصف الفروقات.
في بايثون، تُفعل الخاصية بإضافة tracking=True عند تعريف الحقل في نموذجك.
مثال موجز لتعريف حالة مع تفعيل التتبع:
يمكنك أيضًا استخدام رقم أولوية بين 1 و10 لترتيب عرض الحقول المتغيّرة عندما يحدث أكثر من تغيير في عملية حفظ واحدة؛ الأرقام الأقل تُعرض أولًا.
مثال يوضح تحديد أولويات لتجميع تغييرات الحقول في سجل واحد.
التأثير على سجلات مرتبطة أخرى
سجلات التتبع تُخزن على السجل الذي ينتمي إليه الحقل فقط؛ لا تنتقل تلقائيًا إلى نماذج مرتبطة. إذا رغبت بمسار تدقيق عبر نماذج مترابطة، فعليك تفعيل التتبع على كل نموذج على حدة حيث يهمك التاريخ.
هذا التصميم مقصود: يجعل سجل المراجعة قريبًا من العنصر المعدّل، وبالتالي يسهل الاطلاع على التاريخ دون التنقّل بين نماذج متعددة.
حالات عملية مفيدة
أمثلة عملية توضح قيمة التتبع في العمل اليومي
1) إدارة سير المبيعات وقيادة العملاء المحتملين
في فرق المبيعات، من الضروري معرفة متى ومن نقَل الفرصة من مرحلة إلى أخرى. تفعيل التتبع على حقل المرحلة في وحدة CRM يعطي مديري المبيعات خطًا زمنيًا واضحًا لكل انتقال.
هذا يساعد على اكتشاف نقاط التعطّل، دعم اجتماعات مراجعة القناة، وتقديم توجيه مبني على بيانات فعلية بدلاً من التخمين.
2) إجراءات الموافقة على المشتريات والفواتير
في المحاسبة والمشتريات، يتطلب الامتثال أحيانًا معرفة من وافق على مستند ومتى. تتبع حقل الحالة في أوامر الشراء أو فواتير الموردين يجعل هذه المعلومات متاحة فورًا في المحادثة دون نظام تدقيق خارجي.
هذا مفيد خصوصًا للشركات الخاضعة لرقابة داخلية أو مراجعات مالية.
3) إدارة المخزون والتحكم بالسلع
عندما تتغير كميات أو مواقع التخزين بشكل غير متوقع، يساعد تتبع التغييرات على حركات المخزون أو السلع مديري المستودعات في الوصول لمصدر التباينات بسرعة.
بدلًا من البحث في سجلات منفصلة أو الاستفسار من الزملاء، تكون الإجابة موجودة داخل محادثة السجل المعني.
4) جودة بيانات العملاء
إذا كان فريقك يحدث معلومات العملاء بانتظام، فالتتبع على حقول مهمة مثل البريد الإلكتروني والهاتف أو قائمة الأسعار يحافظ على تاريخ تغييرات بيانات الاتصال داخل CRM، مما يفيد فرق الدعم ومراجعات جودة البيانات.
5) سجلات الموظفين والموارد البشرية
تتبع تغييرات وظائف الموظفين أو الأقسام أو الدرجات الوظيفية يوفر سجلًا شفافًا للتعديلات — وهو أمر مهم للامتثال الداخلي وتسهيل عمليات التدقيق في الموارد البشرية.
كيفية إنشاء الحقل أو تخصيصه
طريقتان رئيسيتان لتفعيل التتبع: عبر Odoo Studio للنهج بلا كود، أو عبر كتابة كود بايثون للوحدات المخصصة.
باستخدام Odoo Studio
توفر Odoo Studio واجهة بصرية لتفعيل التتبع على الحقول دون الحاجة لكتابة سطور برمجية. افتح الستوديو على النموذج المطلوب، اختر الحقل، وفعّل خيار "تتبع التغييرات" في إعدادات الحقل.
بمجرد تفعيله، ستظهر التغييرات المستقبلية في الـ chatter. هذه الطريقة مناسبة لمديري النظم أو المستخدمين الإداريين الذين يريدون تخصيصًا سريعًا دون تدخل المطورين.
يمكنك أيضًا تفعيل التتبع أثناء إنشاء حقل مخصص جديد داخل الستوديو، أيًّا كانت نقطة البداية فإن الأداة تغطيها بدون كود.
باستخدام بايثون داخل وحدة مخصصة
للمطوّرين، تُضاف خاصية التتبع مباشرة في تعريف الحقل داخل صف النموذج — هذا نمط شائع في أدلة تطوير أودو التقنية.
تذكّر أن النموذج يجب أن يرث mail.thread لكي يعمل التتبع؛ فيما يلي مثال مبسّط.
مثال بايثون يبيّن إضافة حقل اختيار مع التتبع في نموذج موجود.
هذا النمط شائع عندما تريد تمديد نموذج قياسي؛ الحقل يتصرف كحقل قاعدة بيانات عادي لكن كل تغيير لقيمته يُسجل تلقائيًا في السجل.
ملاحظة مهمة حول النماذج المخصصة بالكامل
عند إنشاء نماذج مخصصة جديدة تمامًا، تأكد من تضمين _inherit = ['mail.thread', 'mail.activity.mixin'] في تعريف الفئة. بدون ذلك، سيُتجاهل معرّف التتبع ولن يظهر أي سجل في الـ chatter.
هذا خطأ يقع فيه كثيرون عند متابعة دروس لأول مرة؛ الميكسين ليس اختياريًا إن رغبت بتفعيل التتبع.
ممارسات موصى بها
إرشادات عامة وممارسات جيدة لاستخدام التتبع بذكاء
فعّل التتبع فقط على الحقول ذات الصلة فعليًا
تفعيل التتبع على كل الحقول يؤدي إلى ضوضاء في الـ chatter ويصعّب العثور على السجل المفيد. ركّز على حقول لها قيمة تدقيقية أو تشغيلية: الحالات، المسؤولون، التواريخ الأساسية، والقيم المالية.
استخدم أرقام الأولوية لقراءة أوضح
عندما تُفعّل التتبع على عدة حقول، استعمل أرقام الأولوية بين 1 و10 للتحكم في ترتيب عرض التغييرات المجمعة؛ هذا يحسّن قابلية القراءة خاصة على النماذج التي تحتوي على كثير من الحقول المتتبعة.
ادمجه مع صلاحيات الوصول
التتبع يصبح ذا فائدة أكبر حين تُطبّق قواعد وصول مناسبة. لا جدوى من سجل تدقيق إذا كان كل مستخدمي النظام قادرين على تعديل السجل بحرية. علّق اعتمادك على الـ chatter حتى تتأكد من ضبط الصلاحيات بشكل صحيح.
وثّق الحقول المتتبعة
احتفظ بسجل واضح بالحقول المفعّل عليها التتبع، خاصة في مشاريع متعددة المطوّرين، لتجنب الالتباس خلال مراجعات الكود أو التحديثات المستقبلية.
اختبر قبل النشر على الإنتاج
تحقق دائمًا من سلوك التتبع في بيئة تجريبية قبل الانتقال إلى الإنتاج. بعض أنواع الحقول، خصوصًا الحقول المحسوبة أو المرتبطة، قد تتصرّف بشكل مختلف عندما تتبعها مقارنةً بالحقول المخزنة الاعتيادية.
أخطاء شائعة يجب تجنبها
الأخطاء الأكثر شيوعًا عند العمل مع التتبع في أودو
نسيان الوراثة من mail.thread
هذا أكثر الأخطاء تكرارًا: إن لم يرث النموذج mail.thread، سيُتجاهل التتبع بصمت — لن تظهر رسائل ولا تُثار أخطاء. افحص دائمًا سلسلة الوراثة عند عدم ظهور التتبع.
محاولة تتبّع الحقول المحسوبة غير المخزنة
يمكن تتبع الحقول المحسوبة فقط إذا كانت مخزنة باستخدام store=True. الحقول غير المخزنة ليس لها قيمة محفوظة في قاعدة البيانات فلا يوجد شيء للمقارنة قبل وبعد، وبالتالي لا يحدث أي تسجيل.
تفعيل التتبع على عدد كبير جدًا من الحقول
الرغبة في الشفافية قد تدفع لتفعيل التتبع في كل مكان، لكن ذلك يملأ الـ chatter ويجعل من الصعب استخراج معلومات ذات مغزى. اختر بعناية الحقائق التي تستحق التتبع.
توقع التتبع مع عمليات SQL المباشرة أو استيراد يتجاوز ORM
يُشغّل التتبع عبر طبقة ORM عند استدعاء write(). التحديثات عبر SQL مباشر، أو استيرادات جماعية تتجاوز ORM، أو بعض نداءات الأدنى مستوى قد لا تُفعّل التتبع. تأكد من أن التعديلات تمر عبر طبقة ORM إذا أردت تسجيلها.
تعارضات بين تعريفات Studio وPython
إذا أنشأ حقل عبر Odoo Studio مع تفعيل التتبع ثم عدّلت نفس الحقل في وحدة بايثون، قد تظهر سلوكيات غير متوقعة عند ترقية الوحدة أو تحديث القاعدة نتيجة تعارُض التعريفات. كن حذرًا عند المزج بين النهجين.
أسئلة متكررة
هل يمكنني تتبّع أي حقل على أي نموذج؟
يدعم التتبع فقط النماذج التي ترث mail.thread. معظم النماذج القياسية مهيأة لذلك، لكن النماذج المخصّصة تحتاج إعلانًا صريحًا في تعريفها.
هل تفعيل التتبع يؤثر على الأداء؟
التأثير عادةً ضئيل؛ كل تغيير متتبع ينشئ سجل mail.message مما يضيف عبئًا بسيطًا لعملية الحفظ. لكن على نماذج ذات حجم معاملات عالٍ جدًا كنماذج المعاملات اليومية، احذر من تتبع كثير من الحقول لتفادي زيادة عدد السجلات.
هل يمكنني تعطيل التتبع دون فقدان السجل التاريخي؟
نعم. تعطيل التتبع يمنع تسجيل التغييرات الجديدة فقط، بينما تبقى كل رسائل السجل السابقة محفوظة ويمكن الاطلاع عليها.
هل يعمل التتبع على حقول Many2many؟
نعم. يدعم أودو تتبّع Many2many، لكن العرض يختلف: يبرز السجلات المضافة أو المحذوفة من العلاقة بدلاً من إظهار قيمة قبل وبعد كسلسلة نصية بسيطة.
هل أستطيع استخدام التتبع دون Odoo Studio؟
بالتأكيد. معامل tracking هو سمة قياسية في تعريف الحقول ببايثون ويمكن تفعيله داخل أي وحدة مخصصة دون الحاجة للستوديو. الستوديو فقط يوفّر واجهة مرئية للوظيفة نفسها.
الخلاصة
التتبع في أودو ميزة عملية تضيف قدرًا كبيرًا من القيمة بهدوء ودون تعقيد. بتفعيله على الحقول المناسبة تمنح فريقك مسار تدقيق موثوق، تقلّل الخلافات حول من غيّر ماذا، وتبني أساسًا جيدًا لحوكمة البيانات داخل المؤسسة.
سواء نفّذت التتبع عبر Odoo Studio لإعداد سريع بلا كود أو عبر وحدة بايثون كجزء من مشروع تطوير مخصص، النتيجة متقاربة: رؤية كاملة لتغيّر بيانات أعمالك عبر الزمن.
المفتاح هو معرفة أين تطبّقها. ركّز على الحقول التي تؤثر في اتخاذ القرار والموافقات والمسؤولية داخل سير العمل، وستحصل على أكبر نتيجة بأقل جهد.
في Dasolo نعمل مع الشركات لتطبيق وتخصيص وتحسين أودو بما يتناسب مع عملياتهم. سواء احتجت مساعدة في تصميم نموذج البيانات، تفعيل التتبع عبر سير العمل، أو بناء وحدات مخصصة من الصفر، فريقنا جاهز لدعمك.
اتصل بنا لمناقشة تنفيذ أودو الخاص بك. تواصل معنا ودعنا نحدد معًا أفضل نهج يتناسب مع مشروعك.