القيس سنتر
تخصيص Odoo 18 لمركز تدريب محاسبيّ سعوديّ: شجرة حسابات بالعربيّة، موقع تسويقيّ بـ Laravel يقرأ بيانات الدورات حيًّا، نسبة الإتمام صعدت من 71٪ إلى 92٪.
عن المشروع.
القيس سنتر معهد تدريب محاسبة سعوديّ يدير عملياتِه على Odoo 18 وواجهتَه العامّة على موقع تسويقيّ بـ Laravel. خصّصت وحدة المحاسبة في Odoo لتصبح شجرة حسابات بالعربيّة تعرفها المنشآت السعوديّة الفعليّة، وربطت الموقع التسويقيّ ليقرأ بيانات الدورات والمقاعد مباشرة من Odoo فلا يضطرّ الفريق إلى تحديث مكانين. إلى جانب الهندسة، درّبت دورتين على المنصّة نفسها كي يستطيع الفريق صيانتها بعدي.
ما الذي تغيّر.
وحدة دراسية
متدرّب حصل على الشهادة
نسبة الإتمام
ما الذي وجدناه.
مركز تدريب محاسبة سعوديّ أراد نسخة Odoo شغّالة يدخل عليها طلّابه فعلًا، إضافة إلى موقع علنيّ يعمل أيضًا كواجهة بيع لدوراته.
ما الذي فعلناه.
تخصيص Odoo 18 لشجرة حسابات بالعربيّة، وموقع تسويقيّ بـ Laravel يقرأ بيانات الدوراة مباشرة من Odoo، ولوحة لإدارة المنهج تتيح للمدرّب الرئيس إعادة ترتيب الوحدات دون كتابة سطر برمجة.
ما الذي أصبح.
ستّ وحدات دراسيّة عبر ثلاث دوراة حيّة. نسبة إتمام 92٪ في الدورة الثانية، صعودًا من 71٪ في الأولى.
دوري الفعليّ في هذا المشروع.
منفرد · من الألف إلى الياء. خصّصت Odoo (Python + XML + PostgreSQL)، بنيت موقع Laravel التسويقيّ، ربطتهما بجسر XML-RPC رفيع، درّست دفعتين على نفس المنظومة، ودرّبت طاقمهم على الصيانة دوني. لا وكالة، لا مهندس مساعد.
مهندس Odoo
تخصيص شجرة الحسابات، قوالب الفواتير، ووحدات بوّابة الطالب. كتابة عرضات Python + تعاريف XML للنماذج. ترحيل بيانات الإنتاج من تدفّق Excel القديم.
مطوّر Laravel
موقع تسويقيّ علنيّ يقرأ بيانات الدوراة/المقاعد/المدرّبين مباشرة من Odoo عبر XML-RPC. نموذج محتوى ثنائيّ اللغة، نموذج اتّصال يدفع إلى Odoo CRM مباشرة.
مدرّب + مصمّم منهج
درّست دفعتين في أساسيّات المحاسبة + Odoo. كتبت المنهج وكتيّب التسليم للطاقم لتمكينه من صيانة المنصّة وحده بعد التسليم.
قاعدة بيانات + DevOps
نسخ احتياطيّة + تجارب استرداد PostgreSQL. توثيق مسار ترقية Odoo. تهيئة نطاق + TLS + nginx vhost على VPS المركز.
الأرقام التي تهمّ.
- 92٪نسبة إتمام الدفعة 2صعودًا من 71٪ في الدفعة 1 — تحسّن بعد إعادة المنهج + إعادة بناء البوّابة.
- 3دفعات حيّة درّبتكلّ دفعة 6 وحدات على مدى 12 أسبوعًا.
- ~60طالب نشطإجمالي عبر الدفعات حتّى الآن — متواضع بقصد (تنسيق تدريب جماعيّ صغير).
- ~40٪تقليص زمن lead-to-cohortتقدير من ملاحظات الطاقم — استمارة موحّدة استبدلت تسليم spreadsheet اليدويّ.
- ثنائيّ اللغةشجرة حسابات عربيّة أوّلًاأسماء حسابات + رؤوس تقارير بالعربيّة، تطابق ما تقرأه الشركات السعوديّة فعلًا.
- 0حوادث انحراف مزامنةالموقع التسويقيّ + Odoo لا ينحرفان — لا توجد نسخة ثانية من بيانات الدوراة لتنحرف.
ما الذي كان معطّلاً فعلاً.
معظم معاهد المحاسبة السعوديّة تعمل على PowerPoint + WhatsApp أو تدفع لمنصّات LMS مغلقة لا تتحدّث العربيّة جيّدًا ولا تستطيع نمذجة الأدوات المحاسبيّة الفعليّة (مدين/دائن، شجرة حسابات، عملات متعدّدة) التي يحتاج الطلّاب التدرّب عليها. أراد كايس أن يدخل الطلّاب إلى نسخة Odoo حقيقيّة — نفس الـERP الذي سيهيّئونه لاحقًا للعملاء — لا محاكي معزول. والموقع التسويقيّ كان يجب أن يبيع الدوراة ويعرض المقاعد المتاحة فورًا دون أن يحدّث الطاقم مكانين.
المساحة الصعبة من المشروع.
- 01قراءة بيانات الدفعات + المقاعد الحيّة من موقع Laravel العلنيّ دون كشف واجهة إدارة Odoo للإنترنت أو تكرار البيانات في قاعدة ثانية.
- 02شجرة حسابات عربيّة تطابق ما تستخدمه الشركات السعوديّة فعلًا — لا ترجمة حرفيّة للشجرة الإنجليزيّة الافتراضيّة. تطلّب تعاونًا مع المدرّب الرئيس + تحقّقات متبادلة مع دفاتر عملاء حقيقيّين.
- 03مصدر حقيقة واحد لاعتمادات بوّابة الطالب: الطلّاب يدخلون إلى نفس Odoo الذي يستخدمه المدرّبون، بصلاحيّات محدودة، لا «مرآة تدريب».
- 04نموذج الاتّصال على الموقع التسويقيّ يدفع إلى Odoo CRM مباشرة كـlead مؤهّل — لا نسخ-ولصق بين أنظمة، لا استفسارات مفقودة.
- 05واجهة إدارة منهج تتيح للمدرّب الرئيس إعادة ترتيب الوحدات وضبط السعة دون لمس Python أو PostgreSQL.
انتصارات هندسيّة تستحقّ التسمية.
قراءة حيّة دون كشف Odoo
بنيت بروكسي Laravel رفيع يضرب Odoo XML-RPC على الشبكة الداخليّة، يخزّن النتائج 60 ثانية في Redis، ويقدّمها للموقع العلنيّ. لا يقبل Odoo أبدًا طلبًا من الإنترنت المفتوح.
شجرة حسابات عربيّة دون كسر اتّفاقيّات Odoo
استخدمت حقل `code` في Odoo لرموز إنجليزيّة ثابتة (تستخدمها التقارير والتكاملات) مع إعادة كتابة `name` بالعربيّة وفق مسوّدة المدرّب الرئيس. تظهر التقارير بالعربيّة؛ تبقى التكاملات آمنة.
فصل صلاحيّات الطالب-المدرّب
مجموعة أمان Odoo مخصّصة بضوابط وصول على مستوى الصفّ، فيرى الطالب درجاته + تمارين دفعته المشتركة، لكن ليس عمل الطلّاب الآخرين أو ملاحظات المدرّبين. اختُبر ضدّ تصعيد الصلاحيّات الأفقيّ.
كيف يتشابك النظام.
طبقة التسويق العلنيّة
طبقة التطبيق الداخليّة
طبقة البيانات + النسخ الاحتياطيّة
القرارات وراء كلّ اختيار.
Odoo 18 (نواة ERP)
- ERP محاسبيّ حقيقيّ سيواجهه الطلّاب في الإنتاج — لا LMS لعبة يحاكي المحاسبة بسوء.
- كود Python مفتوح المصدر يمكن للمركز تدقيقه + تخصيصه دون قفل وكيل.
- دعم أصليّ لعدّة شركات + عدّة عملات + العربيّة جاهزة.
Laravel (الموقع التسويقيّ)
- نفس منظومة أدوات المركز الأخرى ليصونوه بعد التسليم.
- قوالب Blade + Tailwind تُبقي تجربة التحرير في متناول غير المهندسين في الفريق.
- عميل XML-RPC + سائق Redis من الدرجة الأولى — جسر Odoo 80 سطرًا لا 800.
PostgreSQL (الأصليّ لـOdoo)
- معيار Odoo — التحوّل إلى MySQL يعني فقدان كلّ هجرات Odoo المثبتة في الإنتاج.
- أعمدة JSONB أصليّة تُستخدم لطبقات الترجمة + بيانات وصفيّة لكلّ دفعة.
ما علّمنا إيّاه هذا البناء.
- حين يكون الهدف تعليم أداة، يتعلّم الطلّاب أسرع داخل الأداة الحقيقيّة لا داخل محاكي. الإعداد الأصعب أثمر في نسبة الإتمام.
- كاش Redis لـ60 ثانية بين موقع علنيّ وERP داخليّ كافٍ أمنًا + أداءً لحجم SMB. لا تكشف Odoo مباشرة أبدًا.
- نموذج محتوى عربيّ-أوّلًا ليس «ترجمة التسميات في النهاية» — بل قرار تصميم قاعدة بيانات. خطّط لشجرة الحسابات بالعربيّة، ثمّ ضع الرموز الإنجليزيّة.
