دليل مسؤولي الخدمات
This content is not available in your language yet.
يرسل البنّاؤون طلبات الخدمات المشتركة من لوحة المنصة، وينفّذها مسؤولو الخدمات يدويًا من هذا الدليل. يمنح المسؤول (admin) دور مسؤول الخدمات. الهدف ألّا يتوقّف أي طلب على شخص واحد، فاكتب دائمًا في ملاحظة الطلب ما فعلت، ليكمل غيرك من حيث توقّفت.
قبل كل طلب
رابط قسم «قبل كل طلب»- انقل الطلب إلى «قيد التنفيذ» حين تبدأ، كي لا يعمل عليه مسؤولان معًا.
- تأكّد أن الطلب لمشروع حقيقي، وأن صاحبه قائده أو عضو في فريقه. إن لم يكن ذلك واضحًا، فاسأل في ملاحظة الطلب.
- اعمل بحسابك أنت على Cloudflare وGitHub، وبالصلاحيات التي يحتاجها الطلب فقط.
- أنهِ الطلب بإحدى حالتين: «تمّ» مع ما فعلت والروابط والخطوة التالية لصاحبه، أو «اعتُذر عنه» مع السبب وما يستطيع فعله بدلًا من ذلك.
هدفنا في التجربة الأولى للمنصة أن تُنفَّذ الطلبات خلال 3 أيام. إن لم تستطع إكمال طلب، فاكتب ما ينقصه، واطلب من مسؤول آخر أن يتسلّمه.
نطاق فرعي
رابط قسم «نطاق فرعي»1. تحقّق من الاسم
رابط قسم «1. تحقّق من الاسم»- حروف إنجليزية صغيرة وأرقام وشرطات، في مستوى واحد، مثل
your-app.hasanat.dev. لا يقبل تسجيل الدخول المشترك غير ذلك. - غير مستخدم في سجلات DNS لنطاق hasanat.dev. أسماء مثل
authوappsوplatformوnextمستخدمة لمواقع حسنات. - يدلّ على المشروع نفسه.
2. اربطه بحسب مكان التطبيق
رابط قسم «2. اربطه بحسب مكان التطبيق»Worker في حساب حسنات: من لوحة Cloudflare: Workers & Pages ← الـ Worker ← Settings ← Domains & Routes ← Add ← Custom Domain، ثم أدخل الاسم واختر Add Custom Domain. ينشئ Cloudflare سجل DNS والشهادة. أو أضفه إلى ملف إعداد الـ Worker، ثم انشره:
{ "routes": [{ "pattern": "your-app.hasanat.dev", "custom_domain": true }]}لا يقبل Cloudflare نطاقًا مخصّصًا على اسم له سجل CNAME قائم. تحقّق لمن السجل قبل أي تغيير.
مشروع Pages في حساب حسنات: Workers & Pages ← المشروع ← Custom domains ← Set up a domain، ثم أدخل الاسم. لأن النطاق في الحساب نفسه، يضيف Cloudflare سجل CNAME بعد تأكيدك.
مشروع Pages في حساب صاحب الطلب:
- تأكّد أن صاحب الطلب أضاف الاسم في Custom domains في مشروعه أولًا. سجل CNAME وحده دون هذه الخطوة لا يكفي.
- في سجلات DNS لنطاق hasanat.dev، أضف سجلًا من نوع
CNAME، اسمهyour-app، ومحتواهyour-app.pages.dev. - انتظر حتى يظهر النطاق نشطًا في مشروعه.
استضافة أخرى، مثل Vercel أو Netlify:
- يضيف صاحب الطلب الاسم في إعدادات استضافته، وينقل إلى الطلب السجلات التي تطلبها، وهي غالبًا
CNAME، وأحيانًاTXTللتحقّق. - أضف السجلات كما هي تمامًا. اتبع توثيق الاستضافة في خيار التمرير عبر Cloudflare (Proxy)، فكثير منها يطلب أن يبقى السجل «DNS only».
Worker في حساب آخر على Cloudflare: لا يمكن ربطه مباشرة، لأن Cloudflare يشترط أن يكون الـ Worker في الحساب الذي يملك نطاق hasanat.dev. اعرض على صاحب الطلب أن ينشر على Pages، أو اتفق مع المسؤول على نشره في حساب حسنات قبل أن تعرض ذلك. إن لم يناسبه أي خيار، فاعتذر عن الطلب مع السبب.
3. تحقّق وأغلق الطلب
رابط قسم «3. تحقّق وأغلق الطلب»curl -sI https://your-app.hasanat.dev- تأكّد أن الصفحة تعمل بشهادة صحيحة.
- إن كان التطبيق يستخدم تسجيل الدخول المشترك، فجرّب الدخول والعودة إلى النطاق الجديد.
- اكتب الرابط في ملاحظة الطلب، وأغلقه بحالة «تمّ».
تسجيل دخول لتطبيق خارجي
رابط قسم «تسجيل دخول لتطبيق خارجي»ما يوجد في خدمة الدخول اليوم:
- تسجيل الدخول المشترك يعمل فقط للمواقع التي تُعرض على
*.hasanat.dev، عبر ملف الجلسة المشترك. التفاصيل في تسجيل الدخول. - لا يوجد تدفق OAuth للتطبيقات الخارجية، ولا تسجيل لتطبيقات عميلة، ولا معرّفات أو أسرار تُصدر لها.
- في الخدمة تدفق للتطبيقات المثبّتة على الأجهزة (
/native/*)، لكنه مربوط في الكود بتطبيق «دايمة» وحده. دعم تطبيق آخر يحتاج تغييرًا في كود الخدمة، وهو في مستودع خاص يملكه المسؤول.
كيف تتعامل مع الطلب:
- اسأل صاحب الطلب: هل يمكن عرض التطبيق على نطاق فرعي من hasanat.dev؟ إن أمكن، فهذا هو الحل: نفّذه طلبَ نطاق فرعي، ودلّه على صفحة تسجيل الدخول.
- إن لم يمكن، مثل تطبيق جوال أو نطاق لا بد منه، فاكتب الحاجة في ملاحظة الطلب، وارفعها إلى المسؤول، لأنها تحتاج تغييرًا في خدمة الدخول. لا تعِد بموعد.
- لا تشارك أسرار خدمة الدخول مع أي تطبيق، مهما كان السبب.
قاعدة بيانات
رابط قسم «قاعدة بيانات»-
تأكّد أن التطبيق سيعمل في حساب حسنات على Cloudflare. إن كان صاحب الطلب ينشر من حسابه، فالأسهل أن ينشئ قاعدته بنفسه. دلّه على قاعدة البيانات، وأغلق الطلب.
-
سجّل الدخول إلى Wrangler بحساب له صلاحية على حساب حسنات، ثم أنشئ القاعدة باسم المشروع:
نافذة طرفيّة npx wrangler loginnpx wrangler d1 create your-app-db -
اكتب في ملاحظة الطلب ما يضيفه صاحبه إلى إعداد تطبيقه، مع المعرّف الذي طبعه الأمر:
[[d1_databases]]binding = "DB"database_name = "your-app-db"database_id = "<database-id>" -
اتفق مع صاحب الطلب على من يطبّق المخطّط على القاعدة. إن لم تكن له صلاحية على حساب حسنات، فطبّقه أنت من مجلد مستودع المشروع، بعد أن تراجع ملف SQL:
نافذة طرفيّة npx wrangler d1 execute your-app-db --remote --file=schema.sql# أو، إن كان المشروع يستخدم ملفات الترحيل:npx wrangler d1 migrations apply your-app-db --remote -
لا تطبّق تغييرًا يحذف بيانات حقيقية (مثل
DROP TABLEأوDELETEواسع) دون موافقة القائد. تتيح D1 استعادة القاعدة إلى نقطة زمنية سابقة بميزة Time Travel، فاعرف كيف تعمل قبل أي تغيير كبير.
قاعدة hasanat-db خاصة بـ hasanat.dev والمنصة، ولا تُستخدم لتطبيقات المشاريع. أي تغيير في مخطّطها يتمّ في مستودع hasanat أولًا.
إدراج مشروع قائم في hasanat.dev
رابط قسم «إدراج مشروع قائم في hasanat.dev»المشاريع القائمة تدخل مشروعًا مباشرة، وصاحبها قائدها.
- افتح رابط المشروع، وتأكّد أنه يعمل ويخدم حاجة حقيقية، وأن صاحب الطلب صاحبه أو قائده.
- تأكّد أن للمشروع موجزًا بقالب حسنات. إن لم يوجد، فساعد صاحبه في كتابته من القالب.
- أضف الموجز إلى مستودع المشاريع في مجلد جديد برقم المشروع التالي، في طلب سحب.
- بعد دمجه، تُنقل نصوص الموجزات إلى hasanat.dev بالأمر
bun run sync:briefsفي مستودع hasanat. إن لم تكن لديك صلاحية تشغيله، فاطلبه ممن يدير hasanat.dev. - في صفحة المشرفين على hasanat.dev، عيّن صاحب الطلب قائدًا، واضبط المرحلة: «قيد البناء» أو «يعمل». إن لم تكن مشرفًا، فاطلب ذلك من أحد المشرفين.
- أرسل لصاحب الطلب رابط صفحة المشروع، وذكّره بأن يفتح الأدوار التي يحتاجها.
الإدراج في apps.hasanat.dev
رابط قسم «الإدراج في apps.hasanat.dev»يعمل دليل التطبيقات على موقع حسنات السابق، وتُراجع فيه الاقتراحات قبل نشرها من صفحة مراجعة خاصة بالمسؤولين.
- تأكّد أن المشروع «يعمل»، وأن الطلب فيه الرابط الرسمي، ومن يساعد التطبيق وكيف، ورابط ملاحظة الخصوصية.
- انقل الطلب بهذه المعلومات إلى المسؤول، أو إلى من له صلاحية مراجعة الدليل.
- بعد انتقال hasanat.dev إلى الموقع الجديد، تأكّد مع المسؤول من طريقة الوصول إلى صفحة المراجعة.
طلبات أخرى
رابط قسم «طلبات أخرى»- ملاحظات من داخل التطبيق: أداة الملاحظات السابقة متوقفة حتى تحتاجها تجربة حقيقية. إن كان الطلب لتجربة جارية، فارفعه إلى المسؤول مع وصف الحاجة.
- أي خدمة غير مذكورة هنا: ليست خدمة مشتركة اليوم. اشرح لصاحب الطلب ما الممكن، وارفع الحاجة إلى المسؤول إن تكرّرت، أو اعتذر عن الطلب مع السبب.
حين يتكرّر نوع جديد من الطلبات، أضف خطواته إلى هذا الدليل في طلب سحب إلى مستودع المنصة.