التوثيق
المعمارية، البيانات، وما تم تنفيذه
1. ما تم تنفيذه في هذا النموذج
| الوحدة | النطاق | الحالة |
|---|---|---|
| رحلة الطالب | معالج من 6 خطوات، حفظ تلقائي، رجوع دون فقدان بيانات، ترتيب بالسحب والإفلات، حدود قابلة للضبط | يعمل |
| محرك التوصيات | قواعد شفافة: المعدل الموحّد، اللغة، المنهج، الميزانية، الموعد، الخصومات؛ بلا حشو | يعمل |
| القائمة والدفع | 5 لكل دولة/25 إجمالًا، دفع تجريبي، فشل/نجاح، إيصال، مفاتيح عدم تكرار | محاكاة |
| الطلبات والعروض | دورة الحالات كاملة، عروض بصلاحية، قبول، فاتورة تسجيل مع خصم الجدية مرة واحدة | محاكاة |
| بوابة الجامعة | تسجيل بنطاق رسمي + رمز + مراجعة يدوية، البرامج والرسوم، الطلبات، العروض الجماعية، السفراء، الفريق، التقارير | يعمل |
| لوحة الإدارة | مؤشرات، تحقق ونشر، رسوم وحدود وعمولات وأسعار صرف، تصنيفات، جغرافيا، استرداد، سجل تدقيق | يعمل |
| ثنائية اللغة | كل الواجهات والرسائل بالعربية (RTL) والإنجليزية (LTR) | يعمل |
هذا نموذج أولي يعمل بالكامل في المتصفح، وتُحفظ بياناته محليًا في متصفحك فقط. لا يرسل طلبات حقيقية للجامعات ولا يحصّل أي مبلغ.
2. ما يحتاج تكاملًا خارجيًا أو بيانات حقيقية
- بيانات الجامعات الحقيقية: عبر بوابة الجامعة نفسها، أو اتفاقيات تبادل بيانات، أو مصادر رسمية مرخّصة. لا يُنشر أي رقم دون مصدر.
- التصنيفات العالمية: ترخيص من QS / THE / ARWU مع ذكر السنة والمصدر.
- الدفع: Stripe للتغطية العالمية، مع Checkout.com أو مزود محلي في الخليج، وTap/HyperPay في المنطقة؛ Webhooks لتأكيد الدفع.
- إرسال الطلبات للجامعات: API أو SFTP أو تكامل مع أنظمة CRM للقبول (مثل Slate وSalesforce Education Cloud)، أو تصدير يدوي موثّق.
- البريد والرسائل: Amazon SES / SendGrid، وTwilio للرسائل القصيرة ورموز التحقق.
- أسعار الصرف: مزود يومي (مثل Open Exchange Rates) مع تثبيت السعر عند إصدار الفاتورة.
- الإحصاءات العالمية: UNESCO UIS وOECD Education at a Glance.
- الجلسات المباشرة لـ «اسأل طالبًا»: Daily.co أو Zoom Video SDK.
3. المعمارية التقنية المقترحة
WebNext.js 15 · React · TypeScript · Tailwind + Design System tokens · next-intl (RTL/LTR)
APINestJS (Node.js) · REST + OpenAPI · RBAC guards · Zod validation
DataPostgreSQL 16 (Row-Level Security per tenant) · Prisma · Redis cache
SearchMeilisearch / OpenSearch — multilingual, typo-tolerant, faceted
MatchingService in Python/TS: rules engine v1 → learning-to-rank v2 with offline evaluation
JobsBullMQ: notifications, offer expiry, discount thresholds, FX refresh
FilesS3-compatible storage, KMS encryption, ClamAV scan, signed URLs
InfraAWS (me-central-1 + eu + us regions) · Docker · Terraform · CloudFront
لماذا؟ Next.js يعطي صفحات دليل قابلة للأرشفة في محركات البحث مع واجهات تفاعلية للوحات. NestJS يفرض بنية وحدات واضحة وحراسات صلاحيات على الخادم. PostgreSQL مع Row-Level Security يفصل بيانات كل جامعة على مستوى قاعدة البيانات نفسها. مناطق متعددة لاستضافة البيانات قرب المستخدمين وتلبية متطلبات الإقامة.
4. نموذج البيانات
| الجدول | الأعمدة الرئيسية |
|---|---|
| users | id، email، phone، role، locale، mfa، created_at |
| student_profiles | user_id، nationality، dob، study_country، city، school، curriculum_id، grade_scale |
| student_grades | profile_id، term (S1/S2/S3/G11)، raw_value، normalized، method_version |
| student_preferences | profile_id، type (major|country)، ref_id، priority |
| universities | id، names{i18n}، country، city_id، domain، type، verified_at، published |
| university_members | user_id، university_id، role (owner|admissions|finance|content|voice) |
| programs | id، university_id، major_id، tuition_minor، currency، years، min_grade، lang_reqs، seats، deadline، data_status |
| taxonomy | faculties ← fields ← majors ← sub_majors (كلها i18n) |
| applications | id، student_id، program_id، cycle_id، status، submitted_at |
| application_events | سجل غير قابل للتعديل لكل تغيير حالة |
| offers | application_id، conditions، scholarship_pct، expires_at، response |
| ledger_entries | id، kind، amount_minor، currency، beneficiary، status، idempotency_key UNIQUE |
| deposit_credits | deposit_entry_id UNIQUE، state، applied_invoice_id UNIQUE |
| invoices | application_id، fee، credit، discount، due، fx_rate_locked |
| group_offers | program_id، min_students، pct|amount، window، status |
| commissions | group_offer_id، application_id UNIQUE، model، amount |
| ambassadors / questions / appointments | consent_at، withdrawn_at؛ لا بيانات تواصل مكشوفة |
| settings | مفتاح/قيمة مع إصدارات (رسوم، حدود، نماذج عمولة، نطاقات) |
| audit_logs | actor، action، entity، before/after، ip، at |
منع الخصم المزدوج: قيد UNIQUE على applied_invoice_id وعلى deposit_entry_id في جدول deposit_credits، والتحديث داخل معاملة SERIALIZABLE مع SELECT … FOR UPDATE. المبالغ تُخزَّن بالوحدة الصغرى (سنتات) كأعداد صحيحة.
5. مسارات المستخدم
| الدور | المسار |
|---|---|
| الطالب | حساب ← أكاديمي ← تخصصات (≤20) ← مناطق ودول (≤5) ← ميزانية ← توصيات ← قائمة (≤5/دولة، ≤25) ← دفع الجدية ← طلبات ← وثائق ← عروض ← قبول ← فاتورة (− الجدية) ← مسجّل |
| الجامعة | تسجيل بنطاق رسمي ← رمز ← مراجعة يدوية ← ملف ← برامج ورسوم (تأكيد البيانات) ← طلبات ← حالات ← عرض قبول ← عروض جماعية ← سفراء |
| الإدارة | مراجعة التحقق ← نشر ← إعدادات الرسوم والحدود والعمولات ← تصنيفات وجغرافيا ← المدفوعات والاسترداد ← التدقيق |
6. الأمن والخصوصية والامتثال
- المصادقة: Argon2id لكلمات المرور، مفاتيح المرور (Passkeys)، OAuth، ومصادقة ثنائية إلزامية لحسابات الجامعات والإدارة.
- الصلاحيات: RBAC على الخادم + Row-Level Security؛ الجامعة ترى فقط الطلبات المقدمة إليها.
- التشفير: TLS 1.3 أثناء النقل، AES-256 مع KMS عند التخزين، وتشفير على مستوى الحقل لتاريخ الميلاد ورقم الهاتف.
- المدفوعات: لا تمر بيانات البطاقات بخوادمنا (حقول مستضافة لدى المزود، نطاق PCI DSS SAQ-A).
- الخصوصية: موافقات مُسجلة، تصدير وحذف البيانات، سياسات احتفاظ، مراعاة GDPR وقانون حماية البيانات الشخصية الإماراتي (PDPL) ونظام حماية البيانات الشخصية السعودي وFERPA عند التعامل مع جامعات أمريكية.
- القاصرون: الطلاب دون 18 عامًا يحتاجون موافقة ولي الأمر وفق قوانين كل دولة.
- التشغيل: نسخ احتياطية يومية مشفرة مع استعادة لنقطة زمنية، سجلات تدقيق غير قابلة للتعديل، مراقبة وتنبيهات، واختبار اختراق قبل الإطلاق.
7. الافتراضات
- التحويل إلى المعدل الموحّد خطي (القيمة ÷ الحد الأقصى) ودرجات A-Level بنقاط ثابتة؛ وهو تقديري للمقارنة وليس معادلة رسمية.
- الطالب «مؤهل مبدئيًا» إذا تجاوز الحد الأدنى واستوفى اللغة والمنهج؛ «يحتاج مراجعة» إذا كان أقل بـ 5 نقاط أو أقل أو ينقصه شرط لغة/منهج.
- تُخفى البرامج التي تتجاوز الميزانية بأكثر من 25%.
- رسوم الجدية قابلة للاسترداد فقط ما دام رصيدها غير مستخدم.
- العمولة تُحتسب مرة واحدة لكل طالب مسجّل في برنامج تحقق خصمه الجماعي.
- رسوم التسجيل الجامعية تُدفع عبر المنصة كوكيل تحصيل ثم تُحوَّل للجامعة؛ ويمكن بدلًا من ذلك الدفع المباشر للجامعة.
8. خطة المراحل
| # | المرحلة | الحالة |
|---|---|---|
| 1 | التخطيط والتصميم: الاسم، الهوية، المعمارية، قاعدة البيانات، المسارات، نظام التصميم، النموذج التفاعلي | هذا النموذج |
| 2 | المنتج الأساسي: Next.js + NestJS + PostgreSQL، التسجيل، الدليل، التوصيات، اللوحات | 8–10 أسابيع |
| 3 | الأنظمة المتقدمة: الدفع الحقيقي، تكاملات الجامعات، الخصومات والعمولات، اسأل طالبًا، الإشعارات، التقارير | 8 أسابيع |
| 4 | الاختبار والإطلاق: E2E لكل الرحلات، RTL/LTR، الصلاحيات، الدفع، الأداء، اختبار اختراق، تجربة مع 10–20 جامعة | 4–6 أسابيع |