انتقل إلى المحتوى

حزمة التقنيات

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

أين تختلف Gerege Nexus

تعمل Gerege Nexus على الحزمة نفسها (Go · chi · pgx · بلا ORM · Next.js App Router)، غير أنّها تختلف في ثلاثة أمور: فهي وحدة متراصّة معيارية (تُصرَّف وحداتها في ملف تنفيذي واحد وتُوزَّع على المستأجرين عبر متجر تطبيقات)، وتُجري الترحيلات بـgoose، وتتّكئ على PostgreSQL وحدها بلا Redis. الإصدارات: Go 1.25 · Next.js 15.

الواجهة الخلفية

المكوّن الخيار
اللغة Go 1.26
HTTP net/http من المكتبة القياسية + الموجّه go-chi/chi
قاعدة البيانات PostgreSQLjackc/pgx (pgxpool)، SQL مكتوب يدويًا
التخزين المؤقّت / الجلسات Redis
البنية Clean Architecture — handler → usecase → repository → domain

لماذا لا يوجد ORM؟

تُكتب طبقة البيانات بـSQL يدوي فوق pgx. والسبب: استعمال الإمكانات المتجذّرة في PostgreSQL نفسها — أمن مستوى الصف (RLS)، وتعبيرات CTE، وLISTEN/NOTIFY، وJSONB — مباشرةً بدل المرور بتجريد ORM؛ وكذلك التخلّص من الحاجة إلى تخمين الاستعلام الذي سيُولَّد فعليًا.

القاعدة الصارمة في Clean Architecture: لا استيراد عكسي. فنواة الأعمال (domain وusecase) لا تستورد إطار عمل ويب أبدًا. وهذا ما يضمن إمكان استبدال طبقة HTTP دون المساس بمنطق الأعمال.

الواجهة الأمامية

المكوّن الخيار
إطار العمل Next.js 15/16، App Router
النمط BFF (Backend-for-Frontend)
طبقة البيانات TanStack Query

ما معنى BFF هنا: المتصفّح لا يخاطب الواجهة الخلفية مباشرةً إطلاقًا؛ بل يخاطب مسارات Next.js على النطاق نفسه فقط، وهي بدورها تُمرِّر الطلب إلى الخلفية من جهة الخادم.

النتيجة: لا يصل الرمز المميّز (token) إلى جافاسكربت العميل أبدًا — إذ تُستخدم جلسة قائمة على الكوكيز، فيكفّ XSS عن أن يكون طريقًا لسرقة الرموز. ويُضاف إلى ذلك حماية مزدوجة من CSRF: ترويسة مخصّصة مع فحص الأصل (origin).

الهاتف المحمول وسطح المكتب

المنصّة التقنية
iOS ‏Swift، وحزمة SPM SDK (‏GeregeSmartID) + تطبيق لكل علامة
Android حزمة SDK بلغة Kotlin / Jetpack Compose
macOS عميل RP بـ SwiftUI + عُدّة رمز USB
Windows ‏MSIX (موقَّع)
Web RP حزمة SDK بلغة TypeScript

مسار الذكاء الاصطناعي

مبنيّ على Gemini بوصفه عميل REST بلا SDK مع استدعاء الدوال (function calling):

  • محادثة نصّية وصوتية،
  • STT (كلام ← نص) وTTS (نص ← كلام)،
  • ترجمة فورية،
  • قاعدة معرفة على pgvector مفهرسة من الشيفرة والوثائق،
  • إجابات بلغة المستخدم؛ وأداة محادثة لا تتطلّب تسجيل دخول.

موجّه نظام متعدّد الطبقات: ضوابط (guardrail) مثبّتة في الشيفرة، يضاف إليها نطاقٌ وتعليماتٌ يضبطها المشرف عبر قاعدة البيانات. وبذلك يبقى المساعد ضمن الحدود المرسومة له. وتُرسي أداة search_knowledge الإجابةَ على بيانات حقيقية من قاعدة المعرفة وتمنع الإجابات المُختلَقة.

التشفير

شيفرة التوقيع منقولة من نظام أصلي بلغة Java/Spring، ولذلك يجب أن تظل متوافقة تمامًا على مستوى البروتوكول. وقد أُحكم ذلك بـمتجهات ذهبية مجمَّدة (frozen golden vectors):

  • تسلسل نقطة EC المضغوطة بصيغة SEC1،
  • دلالات BigInteger.toByteArray() في Java (سلوك بايت الإشارة).

ويجب أن يُخرج كلٌّ من خادم Go وحزمة iOS SDK وحزمة Android SDK نتيجة متطابقة بايتًا ببايت.

لا تحذف المتجهات الذهبية

ملفّات golden.json لا يمكن توليدها من جديد، وهي الدليل الوحيد على التوافق مع النظام الأصلي. وأي تعديل في شيفرة التشفير يجب أن يُختبر بها.

البنية التحتية

المكوّن الخيار
الحاويات Docker Compose
CI/CD GitHub Actions (مع مُنفِّذات Windows/macOS ذاتية الاستضافة)
الحافّة (Edge) ‏nginx — إنهاء TLS، وتحديد المعدّل، ووكيل عكسي
الشهادات ‏Let's Encrypt (‏certbot، وضع webroot)
الوثائق MkDocs Material + mkdocs-static-i18n، متعدّدة اللغات

للتفاصيل راجع النشر و CI/CD.

قابلية الملاحظة

  • OpenTelemetry — تتبّع موزَّع،
  • Prometheus — مقاييس (/metrics
  • Zap — سجلّات مُهيكَلة،
  • سجل التدقيق — مترابط بسلسلة تجزئة، للإضافة فقط؛ لا يقرأه إلّا المشرف، ويمكن التحقّق من سلامته.

مغلق في الإنتاج

/metrics و/swagger محميّان برمز bearer في بيئة الإنتاج. فهما يكشفان البنية الداخلية، وتركهما مفتوحين خطرُ إفشاءِ معلومات.

الاختبار

  • اختبارات وحدة — على طبقة منطق الأعمال،
  • اختبارات تكامل بـ testcontainers — مقابل PostgreSQL/Redis حقيقيَّين،
  • اختبارات المتجهات الذهبية — للتوافق التشفيري.