حزمة التقنيات¶
تعمل جميع منصّات المنظومة على حزمة تقنية واحدة. وليس ذلك من قبيل الصدفة: فهو يعني ألّا يجد المطوّر شيئًا جديدًا يتعلّمه حين ينتقل من مستودع إلى آخر، وأن يُنشر الإصلاح الأمني على كل الأنظمة بالصورة نفسها.
أين تختلف 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 |
| قاعدة البيانات | PostgreSQL — jackc/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، متعدّدة اللغات |
قابلية الملاحظة¶
- OpenTelemetry — تتبّع موزَّع،
- Prometheus — مقاييس (
/metrics)، - Zap — سجلّات مُهيكَلة،
- سجل التدقيق — مترابط بسلسلة تجزئة، للإضافة فقط؛ لا يقرأه إلّا المشرف، ويمكن التحقّق من سلامته.
مغلق في الإنتاج
/metrics و/swagger محميّان برمز bearer في بيئة الإنتاج. فهما
يكشفان البنية الداخلية، وتركهما مفتوحين خطرُ إفشاءِ معلومات.
الاختبار¶
- اختبارات وحدة — على طبقة منطق الأعمال،
- اختبارات تكامل بـ testcontainers — مقابل PostgreSQL/Redis حقيقيَّين،
- اختبارات المتجهات الذهبية — للتوافق التشفيري.