# AL MURIS INTERNATIONAL — تشغيل وإدارة الموقع

## ما تم بناؤه
- موقع متعدد الصفحات بالإنجليزية والبنغالية والعربية؛ 132 مسار محتوى أساسي: 44 لكل لغة، تتضمن 21 دولة و6 قطاعات.
- 38 تصنيفًا مهنيًا مع بحث وفلترة، ونماذج طلب عمالة وشراكة بثلاث خطوات.
- تخزين دائم للطلبات في D1 والمستندات في R2. الدولة المطلوبة منفصلة عن صفحة/دولة المصدر.
- رقم مرجعي، منع تكرار الطلب عند إعادة المحاولة، وحالات صريحة للبريد (غير مهيأ/مقبول للإرسال/جزئي/فشل).
- إدارة الطلبات، البحث والفلترة، الحالات، المسؤول، الملاحظات وسجل التحديث، تنزيل المرفقات، تصدير CSV.
- إدارة المحتوى والترجمات: تعديل عناوين ومقدمات الصفحات وإضافة نص، إضافة دول ومهن وأسئلة وشركاء وحالات توظيف. تعديل التصميم والنصوص البنيوية يتم من المصدر.
- مؤشرات الطلبات حسب البلد والمهنة والشهر والصفحة؛ تحليلات اختيارية للنقرات والزيارات والجلسات الموافق عليها ومعدل تحويلها. هذه الجلسة مرتبطة بعلامة تبويب المتصفح، وليست تعريف GA4 الزمني.
- محتوى مرئي مولد توضيحيًا، معلّم بوضوح، وليس صورًا حقيقية لعمليات الشركة.

## الدخول إلى الإدارة
الرابط `/admin`. تسجيل الدخول عبر ChatGPT. تُقارن هوية المستخدم الموثقة بعنوان المالك الموجود في المتغير السري `ADMIN_OWNER_EMAIL`. لا توجد كلمة مرور افتراضية أو مسار يتجاوز المصادقة.

المالك يستطيع إضافة أدوار إدارية بعناوين البريد. المدير والمحرر يستطيعان تحديث الطلبات والمحتوى. المشاهد يقرأ ويصدر فقط. منح الدور لا يمنح صلاحية دخول الموقع الخاص ولا يرسل دعوة؛ صلاحية زيارة الموقع تُدار منفصلة في Sites.

## الطلبات
1. يختار العميل دولة الوجهة والمهنة والعدد.
2. يحفظ النظام صفحة المصدر منفصلة، حتى إن غيّر العميل دولة الوجهة.
3. تصبح الحالة `new`. يستطيع الموظف تغييرها إلى reviewed / negotiating / contracted / completed / rejected / cancelled.
4. تعديل الحالة أو المسؤول مع ملاحظة يسجل صاحب التعديل والتاريخ.
5. المرفقات لا تُتاح بروابط عامة؛ تنزيلها يمر عبر التحقق الإداري.

## البريد التلقائي
الشفرة مهيأة لمزود Resend عبر واجهة HTTP. لم يقدم المستخدم حساب المزود أو مفاتيحه؛ لذلك لم يُرسل بريد اختباري ولم نتحقق من التسليم.

المتغيرات المطلوبة عبر إعدادات Sites الآمنة:
- `RESEND_API_KEY`: مفتاح المزود السري.
- `EMAIL_FROM`: عنوان إرسال معتمد لدى المزود، مثل اسم الشركة وعنوان على نطاقها بعد توثيقه.

بعد الربط: تحقق من DNS/SPF/DKIM لدى المزود، نفذ طلبًا مراقبًا، وافحص وصول إشعار الشركة وتأكيد العميل. `accepted` يعني قبول المزود للإرسال وليس إثبات الوصول إلى صندوق البريد. زر Retry email يعيد المحاولة بمفتاح منع تكرار الطلب. الإرسال غير متاح قبل إعداد المتغيرين.

## النطاق والفهرسة
النسخة المنشورة تبدأ خاصة بالمالك. لا يعني وجودها أنها منشورة على almurisintl.com.
- اربط النطاق من إعدادات Sites وأكمل سجلات DNS وفق التعليمات التي يعيدها مزود الاستضافة.
- اجعل `SITE_URL` هو أصل النطاق الفعلي دون شرطة أخيرة، وأعد النشر.
- `PUBLIC_INDEXING=false` يمنع الفهرسة أثناء المراجعة. بعد الموافقة على البيانات والتحقق من النطاق والجمهور، اضبطه `true` وأعد النشر.
- تغيير الجمهور إلى عام خطوة مستقلة؛ إبقاء صلاحيات CRM إلزامي.
- `/sitemap.xml` يولد مسارات المحتوى وبدائل اللغات. `/robots.txt` يحظر الإدارة والـAPI عند الفهرسة العامة.
- `GOOGLE_SITE_VERIFICATION` و`BING_SITE_VERIFICATION` يقبلان رموز التحقق فقط، ولا يثبت وجودهما أن الملكية تحققت خارجياً.
- لا توجد ضمانات ترتيب أو أحجام بحث مختلقة. راجع MARKET_RESEARCH.md وGROWTH_PLAN_90_DAYS.md.

## التحليلات والخصوصية
- لا تُرسل أحداث تحليل اختيارية قبل موافقة الزائر.
- بيانات الحملات والإحالة تجمع عند توافرها وبالموافقة. الإحالة تُختصر إلى أصل الموقع، لا الرابط الكامل.
- معلومات المصدر المرسلة من المتصفح سياق قابل للتلاعب وليست إثبات هوية.
- `GA_MEASUREMENT_ID` بصيغة G-... يفعّل GA4 بعد الموافقة. لا ترسل بيانات تواصل العملاء إلى GA4.
- Search Console يوفر استعلامات مجمعة. لا تربط كلمة بحث بعميل محدد بلا دليل.
- لم تُربط الحسابات الخارجية أو Google Tag Manager، ولم تُختبر قياسات GA4 الحية.
- على الشركة اعتماد سياسة الاحتفاظ ومراجعة الخصوصية وفق نشاطها وأسواقها قبل الإطلاق العام.

## المحتوى والتوثيق
المحتوى المنشور في الإدارة يظهر مباشرة من قاعدة البيانات. استخدم المسار نفسه لكل ترجمة. الدولة الجديدة تُعرض في دليل الأسواق وتضاف للخريطة فقط باللغات المنشورة.

الشركاء وعمليات التوظيف يتطلبان مصدر تحقق وموافقة صريحة على حق النشر قبل تفعيل النشر. لا تضف أمثلة العملاء المحتملين الواردة في البحث إلى قائمة الشركاء.

الرخصة، العنوان التفصيلي، صور الموظفين الحقيقية والعلاقات التجارية لم تُقدَّم؛ لم تُختلق. لا تنشر وعودًا بمسارات غير مثبتة. صفحة المجر توضح القيود؛ وصف كوريا يميز نظام EPS الحكومي.

## النسخ الاحتياطي
من الإدارة ← Launch checklist ← Download full data backup. هذه ميزة للمالك فقط، تنزل JSON يتضمن جداول الطلبات والملاحظات والمحتوى والأدوار والأحداث، بالإضافة إلى الملفات بتشفير Base64 (ترميز، وليس تشفيرًا أمنيًا). احفظه في وجهة مؤمنة؛ فهو يحتوي بيانات عملاء.

هذه نسخة يدوية وليست جدولة آلية. يُفضل أخذها قبل التعديلات الكبرى وبحسب سياسة الشركة. لا تعتبر سجل Git نسخة لبيانات العملاء. الاستعادة إجراء تشغيلي: تحقق من JSON، استعد الجداول ضمن قاعدة اختبار بالترتيب (requests قبل notes)، وأعد كائنات R2 إلى مفاتيحها الأصلية، ثم تحقق من الأعداد والمرفقات قبل اعتماد الاستعادة. لم يُنفذ اختبار استعادة بيانات حية.

## التطوير والنشر
المنصة: Vinext/React، Worker، D1، R2. حافظ على تكامل Sites في vite.config.ts.
- التحقق من الأنواع: `./node_modules/.bin/tsc --noEmit`
- اختبارات الخلفية المعزولة: `node --import ./tests/register.mjs --test tests/backend.mjs`
- مخطط البيانات: db/schema.ts؛ إنشاء ترحيل إضافي بـ `npm run db:generate`.
- لا تعدل ترحيلًا سبق تطبيقه. الترحيلات المصدرية لا تحتوي بيانات عملاء.
- البناء والنشر عبر helpers مهارة Sites؛ لا تحفظ أسرارًا في المصدر أو المتصفح.
- اختبارات البيئة المحلية لا ترسل رسائل إلى أشخاص حقيقيين.

## حدود تقنية معروفة
- لوحة الإدارة باللغة الإنجليزية؛ المحتوى العام والنماذج باللغات الثلاث.
- التحقق من الملفات يراجع الحجم والنوع والتوقيع، وليس فحصًا بمضاد فيروسات. الملفات الخاصة تُنزّل كمرفقات لا تعرض مباشرة.
- النسخ الاحتياطية الآلية وSLA والمراقبة والتنبيهات التشغيلية تحتاج إعدادًا منفصلًا.
- الترجمة البنغالية والعربية تحتاج اعتمادًا تجاريًا من الشركة قبل الإطلاق العام.
- قياسات Core Web Vitals الميدانية لا تتوافر قبل زيارات فعلية كافية. لا تُذكر نتيجة أداء غير مقاسة.
