العملاء وقوائم العملاء
كيف يتولى المدرب الأعضاء، ويسند التمارين، ويقرأ المتابعات الأسبوعية، ويراسل كل عميل، وما الذي يراه العضو.
لحزمة الحزمة الكاملة
من يدرّب من
للعضو مدرب نشط واحد على الأكثر. تتقاسم صلاحيتان العمل:
| الصلاحية | يملكها | ما تفتحه |
|---|---|---|
coaching.clients | المدرب الرئيسي، المدرب الشخصي | قائمة عملاء المستدعي نفسه: «عملائي»، وخطة كل عميل ومتابعاته ورسائله. لا عملاء أي شخص آخر. |
coaching.assign | المدرب الرئيسي، المدرب، مدير النادي | جانب النادي: نقل أي عضو إلى مدرب، أو إخراجه من كل قوائم العملاء. |
يمنح الزرع المدرب الرئيسي أكبر قائمة عملاء، ويمنح المدرب الشخصي التجريبي (trainer@example.com) وكل حساب آخر بدور Personal Trainer أو Coach قائمة أصغر، ويترك بقية الأعضاء (أحد عشر عضوًا في زرع جديد) من دون مدرب، ليجد المدرب أشخاصًا يتولاهم. لا يرى «عملائي» إلا حساب يملك coaching.clients: المدرب الرئيسي والمدربون الشخصيون. دور Coach المزروع لا يمنحها، لذا فإن الحساب الذي يحمله، مثل john.smith@staff.com، لديه عملاء في قائمته لكنه لا يراهم أبدًا.
ما يراه المدرب
- نظرة المدرب العامة على
/en/dashboard: عدد العملاء الذين تدرّبوا هذا الأسبوع، ومن توقف (لم يُنهِ شيئًا خلال 7 أيام)، والمتابعات التي تنتظر ردًا، والعمل المسند لليوم عبر قائمة العملاء. - عملائي على
/en/dashboard/clients: قائمة العملاء مع آخر جلسة لكل عميل، وجلساته ودقائقه هذا الأسبوع، ومقدار ما أنجزه من خطته. يبحث إضافة عميل في الأعضاء الذين ليس لديهم مدرب ويتولى أحدهم. - صفحة العميل على
/en/dashboard/clients/<username>: أسبوعه، والعمل المسند معلَّمًا بأنه منجز أو فائت أو قادم، ومتابعاته الأسبوعية مع مربع للرد، وسلسلة الرسائل.
إسناد العمل
- يعطي المدرب العميل تمرينًا من الكتالوج، وتاريخ بدء، وملاحظة اختيارية. يظهر التمرين في صفحة «التمارين» لدى العضو.
- الجلسات التي ينهيها العضو بنفسه هي ما يجعل العمل المسند منجزًا. لا شيء يُعلَّم يدويًا.
- يحذف المدرب الإسناد من صفحة العميل.
المتابعات الأسبوعية
- من صفحة «التمارين»، يسجّل العضو متابعة واحدة كل أسبوع: كيف كان شعوره خلال الأسبوع من 1 إلى 5، ووزن اختياري، وملاحظات اختيارية. التسجيل مرة أخرى في الأسبوع نفسه يستبدلها.
- يقرؤها المدرب في صفحة العميل وفي النظرة العامة، بدءًا بالتي لم يُرد عليها، ثم يرد. ويرى العضو الرد تحت متابعته.
- تسجيل متابعة والرد عليها يرسل كل منهما إشعارًا إلى الطرف الآخر.
الرسائل
لكل مدرب وعميل سلسلة خاصة واحدة. تتسع الرسالة لـ 2,000 حرف و6 مرفقات كحد أقصى (صور أو مقاطع أو ملفات)، تمر عبر مسار الرفع وتحتاج إلى حاوية وسائط. وكل رسالة ترسل إشعارًا إلى الطرف الآخر.
نقل الأعضاء بين المدربين
في صفحة العضو ضمن «النادي»، يختار الطاقم الذين يملكون coaching.assign مدرب العضو، أو يخرجونه من كل قوائم العملاء. تعرض القائمة الحسابات التي تحمل الدور المسمّى Coach، مع عدد عملاء كل منها.
امنح دور Coach قائمة عملاء
دور Coach المزروع لا يمنح coaching.clients، لذا فإن الحساب الذي لا يحمل سواه لا تُعرض عليه «عملائي» للأعضاء المسندين إليه. امنح coaching.clients لدور Coach في شاشة «أدوار المدربين» إذا كان يجب على مدربيك العمل على قوائم عملائهم. أما المدرب الرئيسي والمدربون الشخصيون فيتولون الأعضاء بأنفسهم، من إضافة عميل.
مسارات التدريب
كل مسار موجود تحت /api/fitness/coaching ويحتاج إلى رمز bearer. تجيب مسارات قائمة العملاء عن الحساب الذي يرسل الطلب ولا أحد غيره.
| المسارات | الصلاحية | ما تفعله |
|---|---|---|
GET /clients, GET /clients/:username, GET /available-members, POST /clients | coaching.clients | قائمة العملاء، وعميل واحد، والأعضاء الذين ليس لديهم مدرب، وتولّي أحدهم ({ username }) |
GET /workouts, GET|POST /clients/:username/plan, DELETE /plan/:id | coaching.clients | الكتالوج الذي يُسنَد منه، وخطة العميل، والإسناد ({ workoutSlug, startsOn, note? })، والحذف |
GET /roster/assigned-work, GET /roster/check-ins | coaching.clients | عمل اليوم ومتابعات هذا الأسبوع عبر قائمة العملاء |
GET /clients/:username/check-ins, POST /check-ins/:id/reply | coaching.clients | متابعات العميل، والرد ({ body }، حتى 2,000 حرف) |
GET|POST /clients/:username/messages | coaching.clients | السلسلة مع عميل واحد |
GET /my-coach, GET /my-plan, GET /check-ins, GET /messages | fitness.view | جانب العضو: مدربه، وخطته، ومتابعاته، وسلسلته |
POST /check-ins, POST /messages | fitness.edit | تسجيل متابعة هذا الأسبوع ({ energy, weightKg?, notes? })، والكتابة إلى المدرب |
GET /coaches, GET /assignments/:username, POST /assignments, DELETE /assignments/:username | coaching.assign | حسابات دور Coach، ومن يدرّب العضو، ونقل عضو ({ coachUsername, memberUsername })، وإخراج عضو |
تعود الأخطاء على شكل مفاتيح تترجمها لوحة التحكم، مثل already_your_client وmember_has_coach وnot_a_coach وno_coach وmessage_required.