انتقل للمحتوى
علي هيثم·TECH·يردّ خلال أقل من ساعة
  • الرئيسيةابدأ من هنا
  • الأعمالدراسات حالة، مشاريع
  • الخدماتما الذي سأبنيه لك
  • المدونةمقالات، سلاسل
  • التدريبدورات، مختبرات، دورات
  • عنّيالمهندس وراء هذا الموقع
تسجيل الدخولابدأ مشروع
علي هيثم · TECH
  • الرئيسية↗
  • الأعمال↗
  • الخدمات↗
  • المدونة↗
  • التدريب↗
  • عنّي↗
تسجيل الدخولابدأ مشروع
متاح
علي هيثم·TECH

استوديو هندسي. دمشق، GMT+3.

aliyosef.online

الاستوديو

  • الأعمال
  • المدونة
  • التدريب
  • عنّي
  • تواصل معي

البوابة

  • تسجيل الدخول
  • فتح تذكرة دعم
  • متابعة مشروع
  • حسابي

مصادر

  • الوثائق
  • حالة الأنظمة
  • سجلّ التغييرات
  • حزمة العلامة
  • الخصوصية
  • الشروط

النشرة

ملاحظات تقنية وأخبار، أسبوعياً. بدون حشو.

مجاني. إلغاء الاشتراك متى ما حبيت.

تابعني على
© 2026 علي هيثم يوسف. جميع الحقوق محفوظة.مبنيّ يدويًا بـ React 19.آخر نشر · 2026-05-08كل الأنظمة تعمل
مشروع 042024–2025مهندس Odoo + مدرّب

القيس سنتر

تخصيص Odoo 18 لمركز تدريب محاسبيّ سعوديّ: شجرة حسابات بالعربيّة، موقع تسويقيّ بـ Laravel يقرأ بيانات الدورات حيًّا، نسبة الإتمام صعدت من 71٪ إلى 92٪.

الدورمهندس Odoo + مدرّب
السنة2024–2025
التقنياتOdoo 18, Python, PostgreSQL
مباشرkais-platform.com↗
نظرة

عن المشروع.

القيس سنتر معهد تدريب محاسبة سعوديّ يدير عملياتِه على Odoo 18 وواجهتَه العامّة على موقع تسويقيّ بـ Laravel. خصّصت وحدة المحاسبة في Odoo لتصبح شجرة حسابات بالعربيّة تعرفها المنشآت السعوديّة الفعليّة، وربطت الموقع التسويقيّ ليقرأ بيانات الدورات والمقاعد مباشرة من Odoo فلا يضطرّ الفريق إلى تحديث مكانين. إلى جانب الهندسة، درّبت دورتين على المنصّة نفسها كي يستطيع الفريق صيانتها بعدي.

النتيجة

ما الذي تغيّر.

6 modules

وحدة دراسية

120 learners

متدرّب حصل على الشهادة

92%

نسبة الإتمام

التحدّي

ما الذي وجدناه.

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

المقاربة

ما الذي فعلناه.

تخصيص Odoo 18 لشجرة حسابات بالعربيّة، وموقع تسويقيّ بـ Laravel يقرأ بيانات الدوراة مباشرة من Odoo، ولوحة لإدارة المنهج تتيح للمدرّب الرئيس إعادة ترتيب الوحدات دون كتابة سطر برمجة.

النتيجة

ما الذي أصبح.

ستّ وحدات دراسيّة عبر ثلاث دوراة حيّة. نسبة إتمام 92٪ في الدورة الثانية، صعودًا من 71٪ في الأولى.

القطاعتدريب محاسبيّ · EdTech · عمليّات شركات صغيرة
النوعتخصيص Odoo + موقع تسويقيّ Laravel + إدارة منهج حيّة
المدّة8 أشهر · صيانة مستمرّة
الفريقمنفرد · مهندس Odoo + مطوّر Laravel + مدرّب عربيّ
المُلكيّة

دوري الفعليّ في هذا المشروع.

منفرد · من الألف إلى الياء. خصّصت Odoo (Python + XML + PostgreSQL)، بنيت موقع Laravel التسويقيّ، ربطتهما بجسر XML-RPC رفيع، درّست دفعتين على نفس المنظومة، ودرّبت طاقمهم على الصيانة دوني. لا وكالة، لا مهندس مساعد.

  • 01

    مهندس Odoo

    تخصيص شجرة الحسابات، قوالب الفواتير، ووحدات بوّابة الطالب. كتابة عرضات Python + تعاريف XML للنماذج. ترحيل بيانات الإنتاج من تدفّق Excel القديم.

  • 02

    مطوّر Laravel

    موقع تسويقيّ علنيّ يقرأ بيانات الدوراة/المقاعد/المدرّبين مباشرة من Odoo عبر XML-RPC. نموذج محتوى ثنائيّ اللغة، نموذج اتّصال يدفع إلى Odoo CRM مباشرة.

  • 03

    مدرّب + مصمّم منهج

    درّست دفعتين في أساسيّات المحاسبة + Odoo. كتبت المنهج وكتيّب التسليم للطاقم لتمكينه من صيانة المنصّة وحده بعد التسليم.

  • 04

    قاعدة بيانات + 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.
مشاكل صعبة محلولة

انتصارات هندسيّة تستحقّ التسمية.

01

قراءة حيّة دون كشف Odoo

بنيت بروكسي Laravel رفيع يضرب Odoo XML-RPC على الشبكة الداخليّة، يخزّن النتائج 60 ثانية في Redis، ويقدّمها للموقع العلنيّ. لا يقبل Odoo أبدًا طلبًا من الإنترنت المفتوح.

02

شجرة حسابات عربيّة دون كسر اتّفاقيّات Odoo

استخدمت حقل `code` في Odoo لرموز إنجليزيّة ثابتة (تستخدمها التقارير والتكاملات) مع إعادة كتابة `name` بالعربيّة وفق مسوّدة المدرّب الرئيس. تظهر التقارير بالعربيّة؛ تبقى التكاملات آمنة.

03

فصل صلاحيّات الطالب-المدرّب

مجموعة أمان Odoo مخصّصة بضوابط وصول على مستوى الصفّ، فيرى الطالب درجاته + تمارين دفعته المشتركة، لكن ليس عمل الطلّاب الآخرين أو ملاحظات المدرّبين. اختُبر ضدّ تصعيد الصلاحيّات الأفقيّ.

البنية المعماريّة

كيف يتشابك النظام.

01 — علنيّ

طبقة التسويق العلنيّة

الموقع التسويقيّLaravel 10 + Bladeثنائيّ اللغة، بطاقات الدوراة تُقرأ مباشرة من Odoo
نموذج الاتّصالLaravel + Odoo XML-RPCيدفع مباشرة إلى Odoo CRM كـlead مؤهّل
02 — داخليّ

طبقة التطبيق الداخليّة

Odoo 18Python · XML · PostgreSQLمحاسبة مخصّصة، بوّابة طالب، لوحة مدرّب
جسر XML-RPCمسار Laravel + كاش RedisTTL 60 ثانية لقراءات الدوراة/المقاعد لإبقاء Odoo خاملاً على الحركة العلنيّة
03 — البيانات

طبقة البيانات + النسخ الاحتياطيّة

PostgreSQL 15مخطّط Odoopg_dump يوميّ، نسخة أسبوعيّة خارج الموقع
Redis 7كاش · جلسةكاش الجسر + متجر جلسات Laravel
لماذا هذه التقنيّات

القرارات وراء كلّ اختيار.

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 مباشرة أبدًا.
  • نموذج محتوى عربيّ-أوّلًا ليس «ترجمة التسميات في النهاية» — بل قرار تصميم قاعدة بيانات. خطّط لشجرة الحسابات بالعربيّة، ثمّ ضع الرموز الإنجليزيّة.
صور

من داخل المشروع.

تابع القراءة
الحالة السابقةمنظومة جونادا للواتسابالحالة التاليةمحاسب
لنبنِ معًا

تريد شيئًا مماثلًا؟

أتلقّى عددًا محدودًا من الالتزامات كلّ ربع. حدّثني عمّا تفكّر فيه.

لنبدأ الحديث→