نحو 2400–2300 قبل الميلاد، احتفظت مدينة إبلا، في شمال غرب سوريا اليوم، بواحد من أقدم الأرشيفات الإدارية الكبيرة المعروفة. وحين نقّب علماء الآثار في قصرها الملكي في سبعينيات القرن العشرين، عثروا على آلاف الألواح الطينية وشظاياها، تسجّل التجارة والحصص التموينية والمنسوجات والمعادن والمراسلات الدبلوماسية وقوائم المفردات. لم يكن الأرشيف مجرد مخزن، بل كان الذاكرة العاملة لدولة كاملة: من يدين بماذا، ومن تسلّم ماذا، وبأي تفويض.
إبلا لابز استوديو برمجيات مقرّه إدلب، على مسافة غير بعيدة من ذلك الموقع. والصلة أعمق من مجرد اسم؛ فالمشكلات التي حلّها كتبة إبلا هي، بمعنى حقيقي، المشكلات نفسها التي نعمل عليها كل أسبوع مع العيادات والتجار والمصنّعين والبرامج العامة: تسجيل المعاملات بدقة، وضبط من يمكنه الاطلاع على السجلات وتعديلها، والاحتفاظ بتاريخ موثوق لما جرى.
السجلات نموذجٌ للعالم
دفتر الحسابات نموذجُ بيانات. كان على إداريي إبلا أن يقرروا ما يُسجَّل عن شحنة منسوجات: الكمية والنوع والمستلم والتاريخ والمسؤول الذي أذن بها. وإذا أُغفل حقل واحد، عجز السجل عن الإجابة عن سؤال سيطرحه أحدهم لاحقًا لا محالة.
وتواجه البرمجيات الحديثة الخيار نفسه، بجداول ومخططات بدل الطين. فعندما نصمم نموذج بيانات، ننطلق من الكيانات والأحداث الحقيقية في العمل، لا مما يناسب إطار عمل أو شاشة بعينها. ويعني ذلك عمليًا:
- نمذجة الأحداث لا الحالات فقط. الفاتورة «مدفوعة» لأن دفعةً قد تمّت. وتخزين الدفعة سجلًّا مستقلًا يحفظ من دفع ومتى وكم، بدل الكتابة فوق حقل الحالة.
- تسمية الأشياء كما يسمّيها أصحاب العمل. إذا كان المستودع يقول «إذن صرف»، فلا ينبغي أن يسمّيه النظام «shipment_v2». فالمفردات المشتركة تقلل أخطاء الترجمة بين الناس والشيفرة.
- فصل البيانات المرجعية عن المعاملات. العملاء والمنتجات وقوائم الأسعار تتغير ببطء، أما الطلبات وحركات المخزون فتتغير باستمرار. ومعاملة كلٍّ منهما بطريقة مختلفة تُبقي التقارير متسقة مع مرور الوقت.
السلطة تحدد الوصول
في اقتصاد القصر، لم يكن بوسع كل شخص أن يصرف البضائع من المخازن؛ فمن يحق له التصرف، وفي أي شيء، كان جزءًا من بنية الإدارة نفسها.
أما في برمجيات الأعمال، فكثيرًا ما تُضاف الصلاحيات في النهاية على شكل قائمة بالشاشات التي يمكن للمستخدم فتحها. ونحن نوصي بالعكس: صمّم ضبط الوصول جنبًا إلى جنب مع نموذج البيانات. ينبغي أن تعبّر الصلاحية عن قاعدة عمل، مثل «يستطيع مدير الفرع اعتماد المرتجعات لفرعه حتى سقف معين»، لا عن قاعدة تقنية مثل «يستطيع المستخدم الوصول إلى /refunds». وفي مشاريعنا نصمم من أجل:
- أدوار تعكس المسؤوليات الحقيقية، نراجعها مع الأشخاص الذين يشغلونها.
- تقييد النطاق حسب الوحدة التنظيمية، بحيث تُصفّى البيانات حسب الفرع أو القسم أو البرنامج قبل أن تصل إلى الشاشة.
- الفصل بين المهام في الإجراءات الحساسة، كي لا يكون منشئ الدفعة هو الوحيد القادر على اعتمادها.
المصدر والأصل ميزةٌ لا عبء
تذكر السجلات الإدارية من هذا النوع السلع والكميات والأشخاص أو الأماكن المعنية. وهذا السياق هو ما يحوّل قائمة أرقام إلى دليل.
والبرمجيات تحتاج الخاصية نفسها. يجيب مسار التدقيق عن ثلاثة أسئلة بشأن أي سجل مهم: من غيّره، ومتى، وكيف كان قبل التغيير. ونحن نعامله ميزةً أساسية، لا إضافة لاحقة لأجل الامتثال. ومن الإرشادات العملية التي نتبعها:
- كتابة قيود التدقيق ضمن معاملة قاعدة البيانات نفسها التي تُجري التغيير، كي لا ينفصل التاريخ عن البيانات بصمت.
- تخزين القيم قبل التغيير وبعده للحقول الحساسة، لا مجرد عبارة «تم تحديث السجل».
- جعل سجل التدقيق قابلًا للإضافة فقط بالنسبة لمستخدمي التطبيق، بمن فيهم المسؤولون.
- عرض التاريخ داخل الواجهة، ليجيب المشغّلون عن أسئلتهم بأنفسهم دون فتح تذكرة دعم.
التصميم من أجل البقاء
نجت ألواح إبلا جزئيًا بمحض الصدفة: احترق القصر، فصلّبت النار الطين. والبرمجيات لا تحظى بحظ كهذا؛ فالأنظمة تعيش أطول من الأطر التي بُنيت بها، والبيانات تعيش أطول من الأنظمة.
لهذا نفضّل الصيغ المفتوحة الموثقة جيدًا، وعمليات ترحيل قواعد البيانات الصريحة المحفوظة في نظام التحكم بالإصدارات، ومسارات التصدير التي تتيح للمؤسسة نقل بياناتها إلى أي مكان آخر. وسواء بنينا على .NET أو Laravel أو Next.js، يبقى الهدف واحدًا: أن تظل السجلات مفهومة لمن يرثها بعد عشر سنوات.
من قلم القصب إلى مخطط البيانات
تغيّرت الأدوات من قلم القصب إلى TypeScript، ومن مخازن القصر إلى Azure وAWS، لكن المسؤولية لم تتغير. فتنظيم معرفة العمليات بحيث يتصرف الناس بناءً عليها بثقة حرفةٌ قديمة، ونحاول أن نمارسها بالعناية نفسها.
وكلما بدأنا نظام ERP أو نظام مستندات أو مساعد ذكاء اصطناعي، تسبق الأسئلة الثلاثة نفسها أي خيار تقني: ما الذي يجب أن يُحفظ؟ ومن يحق له الاطلاع عليه وتعديله؟ وكيف سنثبت ما حدث؟ أجب عنها جيدًا، وستصبح القرارات التي تليها أسهل بكثير.

