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

Kinoraالصفحات والأدوار والبحث

الصفحات والأدوار والبحث

ما تفعله كل صفحة، وأي دور يراها، وما تفتحه كل صلاحية، وكيف يجد البحث الصفحات والسجلات.

لحزمة الحزمة الكاملة

صفحات العضو

توجد كل صفحة بالإنجليزية تحت /en وبالعربية تحت /ar. تُفتح لوحة التحكم على /en/dashboard، بعد تسجيل الدخول على /en/auth/login. تحتاج صفحات العضو إلى fitness.view، ولا يملكها إلا دور العضو.

عنصر الشريط الجانبيالمساروظيفته
لوحة التحكم/en/dashboardاليوم في لمحة: معدل ضربات القلب، والطاقة والتعافي، وحلقات النشاط، والسعرات والعناصر الغذائية، وأسبوعا النوم ومعدل ضربات القلب، والتمارين القادمة، والخطوات.
المساعد الذكي/en/dashboard/ai-assistantمحادثة تجيب عن تدريب العضو نفسه وتسجّل نيابة عنه.
النشاط/en/dashboard/activityالخطوات، والوقت النشط، والسعرات، والمسافة حسب اليوم أو الأسبوع أو الشهر، وخريطة حرارية لكل ساعة، وتوزيع حسب النوع، وصفحة لكل نشاط مسجَّل مع مساره وأجزائه وارتفاعه وإيقاعه.
التمارين/en/dashboard/workoutsخطة الأسبوع، والعمل المسند من المدرب والمتابعة الأسبوعية، والبرامج، وصفحة كل تمرين، والجلسة المباشرة.
مكتبة التمارين/en/dashboard/workouts/exercisesكل حركة، مع فلترة حسب العضلة والمعدات والصعوبة، وصفحة لكل حركة.
التغذية/en/dashboard/nutritionالسعرات، والعناصر الغذائية، والترطيب، ومدخول الأسبوع.
مخطط الوجبات/en/dashboard/nutrition/meal-plannerوجبات اليوم على خط زمني، حيث يسجّل العضو طعامه.
النوم/en/dashboard/sleepالمراحل، والجدول، والتعافي، واتجاه الأسبوع.
الصحة/en/dashboard/healthدرجة صحية، وأساسيات اليوم، والمؤشرات الحيوية، واتجاهات ثمانية أسابيع.
التقدم/en/dashboard/progressالأداء، وقياسات الجسم، وسلاسل العادات، والأرقام القياسية، والإنجازات.
صور التقدم/en/dashboard/progress/photosصور قبل وبعد مع هدف للوزن.
المجتمع/en/dashboard/communityالمجموعات، والتحديات، والنقاشات، والفعاليات، ولوحة الصدارة.
الإعدادات/en/dashboard/settingsالملف الشخصي، وكلمة المرور، والتنبيهات، والخصوصية، والمظهر، والأجهزة المتصلة، والفوترة، وحذف الحساب.

صفحات الطاقم

يصل الطاقم إلى نظرة المدرب العامة على /en/dashboard: قائمة العملاء في لمحة، والعملاء الذين توقفوا، والمتابعات التي تنتظر ردًا، والعمل المسند لليوم، وحسابات النادي. لا تحمل لوحات قائمة العملاء بيانات إلا لحساب يملك coaching.clients (المدرب الرئيسي والمدربون الشخصيون)، ولا تظهر حسابات النادي إلا مع members.view؛ أما لأي حساب طاقم آخر، مثل حسابات Coach المزروعة، فلا تجد لوحات قائمة العملاء ما تعرضه. ولا تظهر كل صفحة أخرى إلا لدور يمنح صلاحيتها.

عنصر الشريط الجانبيالمسارالصلاحيةوظيفته
عملائي/en/dashboard/clientscoaching.clientsقائمة عملاء المدرب نفسه، وصفحة لكل عميل مع خطته ومتابعاته ورسائله.
النادي/en/dashboard/users/allmembers.viewكل الأعضاء، وصفحة لكل منهم، والأعضاء المحذوفون مع زر للاستعادة.
المحتوى/en/dashboard/contentfitness.manageالكتالوجات التي يقرؤها الأعضاء: التمارين، والجلسات، والبرامج، والأطباق، والمجموعات، والفعاليات، والتحديات، والإنجازات، والشارات.
المدربون/en/dashboard/coachescoaches.viewحسابات الطاقم وأدوارها.
أدوار المدربين/en/dashboard/coach-rolesroles.viewالأدوار والصلاحيات التي يمنحها كل منها.
الإعدادات/en/dashboard/settingsالجميعالملف الشخصي، وكلمة المرور، والمظهر، وإعدادات التطبيق.

يوجد عنصران آخران تحت «العروض التوضيحية»: مكونات واجهة المستخدم، حيث يُعرض كل مكون مشترك مباشرة مع شيفرته، والإعداد الأولي، وهو مسار التشغيل الأول الموجَّه للعضو. احذفهما من navigationData.ts عندما لا تعود بحاجة إليهما.

لا تفهرس محركات البحث لوحة التحكم أبدًا: تحمل كل صفحة الوسم noindex ويمنع public/robots.txt كل المسارات.

الأدوار المرفقة

يتشارك الأعضاء والطاقم جدول حسابات واحدًا وتسجيل دخول واحدًا؛ والأدوار تحدد ما يراه كل منهم. يملك الحساب كل صلاحيات كل دور لديه. ينشئ الزرع سبعة أدوار:

الدورما يمنحه
المدرب الرئيسيكل الصلاحيات ما عدا ثنائي التدريب fitness.view وfitness.edit
مدربالأعضاء، والمدربون، والمحتوى، وقائمة الأدوار، وإعدادات التطبيق، ونقل الأعضاء بين المدربين
مدير الناديالأعضاء، والمحتوى، وقائمتا المدربين والأدوار، ونقل الأعضاء بين المدربين
محررالمحتوى، وقائمتا الأعضاء والمدربين
المشاهد (Viewer)كل صلاحيات .view ما عدا fitness.view: شاشات النادي للقراءة فقط
مدرب شخصيقائمة عملائه الخاصة (coaching.clients) والمحتوى، من دون قائمة الأعضاء
عضوثنائي التدريب: صفحات اللياقة الخاصة به، ولا شيء وراءها

يملك كل دور أيضًا ai_chat.use وai_chat.view_models وsettings.view: المساعد، والملف الشخصي والتفضيلات الخاصة بالحساب. دور العضو وحده يتدرّب، لذا لا يحصل حساب الطاقم أبدًا على صفحات لياقة خاصة به. الحساب الجديد من صفحة التسجيل يكون عضوًا.

الصلاحيات

الوحدةالصلاحيات
الأعضاءmembers.view, members.create, members.update, members.delete, members.restore, members.verify
المدربونcoaches.view, coaches.create, coaches.edit, coaches.delete, coaches.assign_roles
الأدوارroles.view, roles.create, roles.edit, roles.delete, roles.assign_permissions
الإعداداتsettings.view, settings.edit
اللياقةfitness.view وfitness.edit (حساب يتدرّب)، وfitness.manage (كتالوجات المحتوى)
التدريبcoaching.clients (قائمة عملائك)، وcoaching.assign (نقل الأعضاء بين المدربين)
المساعد الذكيai_chat.use, ai_chat.view_models

يتحقق الشريط الجانبي والصفحات وواجهة API من الأسماء نفسها، لذا فإن تعديل دور في شاشة «أدوار المدربين» يغيّر ما تراه حساباته. والحساب المسجّل دخوله عند تغيّر أدواره يحصل على الصلاحيات الجديدة فورًا، عبر مقبس مباشر.

يفتح Ctrl+K، أو Cmd+K على Mac، البحث من أي صفحة، وكذلك مربع البحث في الشريط العلوي. تتنقل الأسهم بين النتائج، ويفتح Enter إحداها ويغلقه Escape.

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

كيف يعمل البحث في الخادم

يحتاج GET /api/search?q=<term>&locale=<en|ar>&limit=<1-10> إلى رمز تسجيل دخول ولا يحتاج إلى صلاحية بعينها. يشغّل باحثًا لكل نوع يمكن للمستدعي فتحه ويستبعد الأنواع الأخرى.

النوعما يطابقهالصلاحية
member, coachالاسم الأول، واسم العائلة، والاثنان معًا، واسم المستخدم، والبريد الإلكترونيmembers.view, coaches.view
roleالاسم، والوصفroles.view
exercise, workout, program, dish, group, event, challenge, achievement, badgeالاسم والحقول الخاصة بالنوع، باللغتين، والمعرّف النصي أو المفتاحfitness.manage
  • المصطلح الأقصر من حرفين لا يُرجع أي نتائج؛ والأطول من 100 حرف يُقتطع إلى 100. limit لكل نوع، 5 افتراضيًا و10 كحد أقصى.
  • الصف الذي يبدأ نصه بالمصطلح يأتي قبل الصف الذي تبدأ إحدى كلماته به، وهذا يأتي قبل الصف الذي يحتويه فقط. وعند التساوي يأتي الأحدث تحديثًا أولًا.
  • تحمل كل نتيجة kind وtitle وdetail وimage وhref من دون بادئة اللغة. وتُستبعد الحسابات المحذوفة.

الإعدادات

  • الملف الشخصي وكلمة المرور: يعدّل كل حساب ما يخصه.
  • التنبيهات والخصوصية والأجهزة والفوترة: خاصة بالعضو نفسه. مفاتيح التنبيهات الأربعة، ومشاركة النشاط مع المجتمع، والأجهزة ومصادر البيانات المتصلة، والخطة مع فواتيرها. الفوترة للقراءة فقط: لا شيء في القالب يستلم دفعة.
  • المظهر: مظهر فاتح أو داكن أو حسب النظام، ولون تمييز، وتقليل الحركة، تُحفظ مع الحساب فيتبعه الشكل بين الأجهزة.
  • التصدير: ينزّل العضو كل ما سجّله في ملف JSON واحد.
  • حذف الحساب: يغلق الحساب نفسه بعد تأكيد كلمة المرور.
  • إعدادات التطبيق: يغيّر الطاقم الذين يملكون settings.edit الإعدادات المشتركة.

إعدادات التطبيق المزروعة هي اسم الموقع وشعاره النصي، وعنوانا بريد إلكتروني، ووضع الصيانة، والوحدات الافتراضية، وأول يوم في الأسبوع، والأهداف الافتراضية (الخطوات والماء والنوم والسعرات)، ومفتاحا ميزتين للمجتمع والمساعد. لا يقرأ أيًا منها إلا المساعد الذكي، وهو يقرأ الوحدات والأهداف. أما البقية فمخزّنة ويمكن تعديلها، لكن لا شيء يقرؤها: تشغيل وضع الصيانة أو إيقاف ميزة لا يغيّر شيئًا على الشاشة حتى تربطه بشيفرتك.

توقفت عند خطوة؟

ابحث عن الحل قبل أن تبدأ من جديد.

حل المشكلات

تفضيلات ملفات تعريف الارتباط

نستخدم ملفات تعريف الارتباط لتعزيز تجربة التصفح الخاصة بك وتحليل حركة المرور على الموقع وتخصيص المحتوى. بالنقر على "قبول الكل"، فإنك توافق على استخدامنا لملفات تعريف الارتباط للتحليلات والإعلانات المخصصة.