تطبيق اللياقة البدنية الذكي: مواصفات بنية العميل
القطع الأثريةهذا هو الملف المُستخدَم في الحلقة 3: "تزويد تطبيقك بعقل" والحلقة 4: "خطة تنفيذ التطبيق بدون استخدام الرموز البرمجية". يمكنك استخدام هذه المواصفات كمرجع لطرق عرض الواجهة الأمامية ومكونات واجهة المستخدم القابلة لإعادة الاستخدام وإدارة حالة العميل وأُطر الاختبار باللغة الإنجليزية البسيطة.
يجب تسجيل الدخول للوصول إلى هذا العنصر
سجِّل الدخول باستخدام ملفك الشخصي للمطوّر على Google لعرض ونسخ العنصر الكامل المستخدَم في سلسلة Build It!.
يجب تحديد ملف شخصي للمطوّر
لست مؤهلاً لإنشاء ملف شخصي للمطوّر. يُرجى إبلاغ مشرف Workspace بتفعيل هذه الميزة.
إنشاء ملف شخصي كمطوّر
أنشئ ملفًا شخصيًا مجانيًا للمطوّر على Google للاستفادة من جميع الطلبات والمواد في Build It!.
انضم إلى Builder Central للاستفادة من الميزات
يمكنك الحصول على شارة عضوية Builder المجانية بنقرة واحدة للاستفادة من جميع الطلبات والمواد في Build It!.
الحالة: جاهز لجلسة التخطيط (جارٍ إعداد المسودة باستخدام "مساعد التخطيط للعملاء")
المستند المرفق: مواصفات بنية البيانات
هدف البنية: إعادة إنشاء واجهة أمامية نظيفة وقابلة للصيانة والتركيب والاختبار للنموذج الأوّلي الذكي للياقة البدنية في AI Studio.
0. المجموعة الفنية الأساسية ومعايير الهندسة
- إطار عمل وقت التشغيل: Next.js (App Router, React 19) + التخزين المؤقت لملفات أصول "تطبيقات الويب التقدّمية" (PWA) بلا إنترنت.
- بنية التصميم: Tailwind CSS v4 وTailwind Variants (لتصميم المكوّنات الحتمية) وLucide React (الرموز).
- التقسيم حسب حالة العميل:
- Zustand (الجلسة المحلية): تدير حالة التمرين غير الثابتة (
useActiveSessionStore) ومؤقتات ساعة الإيقاف ومخازن المجموعات النشطة وتسلسل الخطوات المحسوبة مسبقًا. تمت مزامنة البيانات مع "localStorage" لاسترداد قفل الهاتف. - TanStack Query (حالة الخادم): يدير هذا المكوّن تخزين مستندات Firestore مؤقتًا، وإعادة التحقّق في الخلفية، والتحديثات المتفائلة لـ
weekly_plansوuser_profilesوprsوworkout_logs.
- Zustand (الجلسة المحلية): تدير حالة التمرين غير الثابتة (
- عرض البيانات في رسم بياني: Recharts (مُصمَّمة باستخدام رموز مميّزة مخصّصة للوضع الداكن في النادي الرياضي)
- المصادقة: مصادقة Firebase مع عنوان مصادقة رمز الحامل المميّز الذي يتم تمريره إلى جميع نقاط نهاية الخادم
1. مبادئ الواجهة الأمامية ومبادئ التصميم
- تصميم مريح ومناسب للتمارين الرياضية: تم تصميم هذه السماعات لتوفير تجربة لمسية مريحة تتيح لك استخدامها بيد واحدة أثناء ممارسة التمارين الرياضية حتى لو كانت يديك متعرقّتين. مساحات لمس كبيرة (48×48 بكسل مستقل الكثافة كحد أدنى)، ووضوح عالٍ في التباين، والحد الأدنى من الكتابة المطلوبة.
- واجهة مستخدم متفائلة ومرونة في وضع عدم الاتصال بالإنترنت: يجب أن تستجيب واجهة المستخدم على الفور (<16 ملي ثانية) عند تسجيل المجموعات وبدء موقّتات الراحة وتبديل التمارين. تتعامل المزامنة في الخلفية مع ثبات الخادم على
POST /api/workouts/logبدون حظر المستخدم. - الفصل الصارم بين المهام: تتلقّى المكوّنات البسيطة/المرئية البيانات وتُصدر الأحداث باستخدام الخصائص، بينما تدير طرق عرض الحاويات الذكية منطق العمل ومخازن الحالة وتنسيق واجهة برمجة التطبيقات.
- تجربة مستخدم للتعديلات المرحلية: يتم عرض الاقتراحات التي ينشئها المدرّب بالذكاء الاصطناعي (
POST /api/coach/chat) كبطاقات معاينة مرحلية تفاعلية مع عناصر تحكّم واضحة مثل [قبول الخطة] و[تعديل] قبل تطبيق التغييرات على حالة التطبيق. - الجودة المستندة إلى السلوك: يتم إقران كل صفحة ومكوّن وتفاعل مع إطارات اختبار باللغة الإنجليزية البسيطة تحدّد السلوك المتوقّع بشكل لا لبس فيه.
2. التنقّل في التطبيق وهيكلية طرق العرض
| مسار الرحلة | اسم الملف الشخصي | الغرض الأساسي | المكوّنات الرئيسية المضمّنة |
|---|---|---|---|
/ |
إعادة التوجيه إلى الجذر | إعادة التوجيه الفوري إلى /today |
(إعادة توجيه جهاز التوجيه) |
/today |
معاينة تمرين اليوم | العرض التلقائي: يتم تلقائيًا تحديد اليوم الحالي من الأسبوع وعرض معاينة لتمرين اليوم. | <BackButton />، <WorkoutHeader />، <CoachNoteCard />، <WorkoutExerciseSummary />، <WorkoutBlock />، <ExerciseCard />، <EmptyDayPlaceholder />، <ModifyWithCoachCard /> |
/workouts/:day |
معاينة التمرين اليومي | يعرض هذا الإجراء معاينة للتمرين في أي يوم محدّد من الأسبوع (مثلاً، /workouts/monday أو /workouts/thursday). |
<BackButton />، <WorkoutHeader />، <CoachNoteCard />، <WorkoutExerciseSummary />، <WorkoutBlock />، <ExerciseCard />، <EmptyDayPlaceholder />، <ModifyWithCoachCard /> |
/workout/active |
أداة تتبُّع الجلسات النشطة | شاشة تنفيذ التمارين الرياضية العالية الأهمية (المجموعات والتكرارات والموقّت) يظل شريط التنقّل السفلي مرئيًا. | <ActiveSessionStickyHeader />، <ActiveExerciseCardHeader />، <CoachTipCard />، <CurrentSetTargetCard />، <SetNavigationRow />، <ExerciseSetsTable />، <ActiveRestTimerDock />، <SessionExerciseOverview />، <ActiveSessionControlsDock />، <SwapExerciseModal />، <FinishConfirmationModal /> |
/week |
جدول التدريب / عرض الأسبوع | نظرة عامة على الجدول الزمني الكامل لمدة 7 أيام مع إجماليات الحجم/الوقت الأسبوعية | <WeekHeader />، و<WeeklyStatsSummary />، و<DayScheduleCardList />، و<DayScheduleCard />، و<ModifyWeekWithCoachCard /> |
/coach |
محادثة مع المدرّب بالذكاء الاصطناعي | تدريب تفاعلي مع شرائح سياقية واقتراحات تمارين منظَّمة | <CoachHeader />، <ChatMessageList />، <ChatBubble />، <StagedProposalCard />، <ContextualPromptsBar />، <ChatInputDock />، <ContextBanner />، <ChatInputBar />، <SpeechToTextButton /> |
/progress |
مستوى التقدّم والإحصاءات | سجلّات التدريب السابقة وإنجازات الأرقام القياسية الشخصية ومخططات حجم التمارين | <ProgressHeader />، <PRShowcaseBanner />، <VolumeProgressChartCard />، <AllTimeStatsGrid />، <WorkoutHistorySection />، <HistorySessionCard />، <EmptyHistoryPlaceholder /> |
/settings |
ملف المستخدم الشخصي والإعدادات المفضّلة | ملف تعريف المعدات والإشعارات وإدارة الذاكرة من 3 مستويات. | <SettingsHeader />، <UserProfileCard />، <EquipmentSelectorCard />، <EquipmentToggleChip />، <PreferencesGroup />، <MemoryTierViewerCard />، <MemoryItemCard />، <AccountActionsGroup /> |
/exercises/:exerciseId |
تفاصيل موسوعة التمارين الرياضية | دليل تمارين رياضية يمكن ربطه بصفحة معيّنة (مثل /exercises/incline-db-bench-press) مع نصائح حول الفيديوهات والوضعيات الصحيحة |
<BackButton />، و<ExerciseVideoPlayer />، و<TargetMusclesCard />، و<HowToPerformCard />، و<FormTipsCard /> |
3- مواصفات الصفحة والعرض
العرض: DailyWorkoutView (/today و/workouts/:day)
- الغرض: يعرض هذا المكوّن نظام التدريب المجدوَل ليوم معيّن، بما في ذلك التركيز على التمرين ومدته وتوزيع الحمل المستهدف على العضلات وملاحظات المدرّب ومجموعات التمارين المتتالية ومجموعات السوبر سيت، مع عرض حالة فارغة واضحة في حال عدم جدولة أي تمرين.
- البنية المرئية:
- أعلى:
<BackButton label="Back to Week" targetRoute="/week" /> - العنوان: عنوان من سطر واحد (
"Today"أو يوم من الأسبوع) مع شارة"✓ Completed"شرطية، وشكل بيضاوي للمدة ("⏱ 50 min")، وأشرطة نسبة مستوى جهد العضلات المستهدَفة - ملاحظة للمدرّب: بطاقة نصائح سياقية مع رمز وتظليل أخضر للحدود
- Body: Scrollable list of exercise blocks using
<WorkoutExerciseSummary />(straight sets or supersets withborder-left: 3px solid #a3e635and🔁 SUPERSET BLOCKbadge). - الحالة الفارغة:
<EmptyDayPlaceholder message="Nothing scheduled for this day" />. - إجراء التذييل السفلي:
<ModifyWithCoachCard />(يؤدي إلى/coach?day=:day).
- أعلى:
العرض: WeekScheduleView (/week)
- الغرض: يعرض نظرة عامة كاملة على جدول التدريب لمدة 7 أيام، بما في ذلك مقاييس حجم/وقت التمرين الأسبوعي العالية المستوى، وقائمة منظَّمة لأيام التمارين النشطة (مع فلترة الأيام غير المجدوَلة/أيام الراحة بدقة)، واختصار مباشر لتعديل الخطة الأسبوعية باستخدام "المدرّب بالذكاء الاصطناعي".
- التصميم المرئي:
<WeekHeader />،<WeeklyStatsSummary />من 3 أعمدة (إجمالي الوقت، إجمالي الحجم، التكرار)، قائمة بالأيام المجدوَلة باستخدام<DayScheduleCard variant="normal" />(مع شارةTODAYباللون الأخضر النيون في اليوم الحالي)، و<ModifyWeekWithCoachCard />(توجيه إلى/coach?context=week).
العرض: CoachChatView (/coach)
- الغرض: مركز تدريب حواري مع وكيل Gemini المدرِّب يقدّم نصائح تدريبية تحفيزية واستراتيجية، ويدعم تحويل الكلام إلى نص، ويُجري تعديلات على التمارين الرياضية على مراحل بمشاركة بشرية مع عناصر تحكّم صريحة في القبول.
- البنية المرئية:
<CoachHeader />، و<ChatMessageList />قابل للتمرير (<ChatBubble />و<StagedProposalCard />)، و<ContextualPromptsBar />شرطي، و<ChatInputDock />ثابت (<ContextBanner />مع إغلاق[✕]+<ChatInputBar />+<SpeechToTextButton />).
العرض: ExerciseDetailView (/exercises/:exerciseId)
- الغرض: إدخال موسوعة يمكن ربطه مباشرةً يقدّم عرضًا توضيحيًا لفيديو مكتوم الصوت يتم تكراره تلقائيًا (
<ExerciseVideoPlayer />)، وشارات العضلات المستهدَفة الأساسية مقابل الثانوية (<TargetMusclesCard />)، وتعليمات الأداء المرتبة خطوة بخطوة (<HowToPerformCard />)، ونصائح حول الشكل (<FormTipsCard />).
العرض: ActiveWorkoutView (/workout/active)
- الغرض: تنفيذ التمارين الرياضية المهمة وتسجيل المجموعات على الشاشة تتحكّم هذه الميزة في حالة ساعة الإيقاف في الجلسة المباشرة، والأهداف المحدّدة حاليًا، وإدخالات التكرارات/الأوزان، وإكمال علامة الصح الفورية (أقل من 16 ملي ثانية)، والتبديل التلقائي بين مجموعات السوبر سيت، والعد التنازلي لمؤقتات الراحة مع الاهتزازات/الصوت، وتبديل التمارين، والحفظ النهائي في
POST /api/workouts/log. - البنية المرئية:
<ActiveSessionStickyHeader />و<ActiveExerciseCardHeader />و<CoachTipCard />و<CurrentSetTargetCard />و<ActiveRestTimerDock />العائم (+30sوSkip) و<SetNavigationRow />و<ExerciseSetsTable />(+ Add Set) و<SessionExerciseOverview />و<ActiveSessionControlsDock />الثابت ([⇄ SWAP EXERCISE]+[▶ START WORKOUT]/[⏸ PAUSE]/[▶ RESUME]) و<SwapExerciseModal />و<FinishConfirmationModal />.
العرض: ProgressView (/progress)
- الغرض: تتبُّع مستوى التقدّم الرياضي بمرور الوقت، والاحتفال بالأرقام القياسية الشخصية (
<PRShowcaseBanner />) التي تم تحقيقها مؤخرًا، وعرض مؤشرات حجم التمارين الأسبوعية/الشهرية باستخدام Recharts التفاعلية (<VolumeProgressChartCard />مع مفاتيح تبديل4W | 3M | 1Y)، وعرض<AllTimeStatsGrid />، وأرشفة جلسات التمارين السابقة المكتملة (<WorkoutHistorySection />/<HistorySessionCard />).
العرض: SettingsView (/settings)
- الغرض: إدارة معلومات الملف الشخصي للرياضي (
<UserProfileCard />)، ومستودع المعدات (<EquipmentSelectorCard />/<EquipmentToggleChip />)، وإعدادات التمرين المفضّلة (<PreferencesGroup />لـLBS / KG، والاهتزازات، والصوت)، وتوفير إدارة شفافة للمستخدم وحذف الذاكرة الحية المكوّنة من 3 مستويات للمدرب المستند إلى الذكاء الاصطناعي (<MemoryTierViewerCard />/<MemoryItemCard />).
4. كتالوج المكوّنات والواجهات القابلة لإعادة الاستخدام
عقود خصائص مكوّنات TypeScript الرئيسية في التطبيق:
// src/components/workout/WorkoutExerciseSummary.tsx
interface WorkoutExerciseSummaryProps {
blocks: Array<{
label?: string;
category?: string;
exercises: Array<{
exercise_id: string; // Canonical slug (e.g. 'incline-db-bench-press')
name: string; // Denormalized display name (e.g. 'Incline DB Bench Press')
target_sets: number;
target_reps: string | number;
rest_seconds?: number;
}>;
}>;
activeExerciseId?: string;
onSelectExercise?: (exerciseId: string) => void;
}
// src/components/week/DayScheduleCard.tsx
interface DayScheduleCardProps {
dayName: string;
dayShort: string;
subtitleLabel?: string;
isToday?: boolean;
title: string;
focusBadge: string;
durationMin: number;
volumeLbs?: number;
targetMuscles: string[];
variant?: 'normal' | 'condensed';
onPress: (dayName: string) => void;
}
// src/components/coach/StagedProposalCard.tsx
interface StagedProposalCardProps {
proposalId: string;
type: 'UPDATE_DAY' | 'UPDATE_WEEK';
targetDay?: string;
summaryDiff: string;
proposalData: any;
isApplied?: boolean;
onAccept: (proposalId: string, data: any) => void;
onModify: (summaryDiff: string) => void;
}
// src/components/workout/CurrentSetTargetCard.tsx
interface CurrentSetTargetCardProps {
setNumber: number;
targetWeightLbs: number;
targetReps: number;
isCompleted: boolean;
onWeightChange: (weight: number) => void;
onRepsChange: (reps: number) => void;
onToggleComplete: () => void;
}5- مصفوفة إدارة حالة العميل وتدفّق البيانات
5.1 سياسة وقت الاستجابة والتحميل: محرّك ثنائي السرعة
- واجهة مستخدم متفائلة في Gym-Floor (أقل من 16 ملي ثانية): يتم تحديث الحالة المحلية وإعادة عرضها في غضون 16 ملي ثانية عند تنفيذ إجراءات Gym-Floor اللمسية، مثل وضع علامة على المجموعات وزيادة الأوزان أو التكرارات والتبديل بين علامات التبويب وتبديل المعدات. لا يتم حظر المستخدمين أبدًا بواسطة مؤشرات التحميل أثناء حمل الأوزان.
- مؤشرات التحميل الواضحة للعمليات غير المتزامنة:
- محادثات المدرّب بالذكاء الاصطناعي (
POST /api/coach/chat): يؤدي إرسال رسالة محادثة إلى عرض فقاعة متحركة لمؤشر التحميل الخاص بالمدرّب في سلسلة المحادثات إلى أن يقدّم Gemini ردّه أو اقتراحه للتمرين. - التشغيل الأولي على البارد والمزامنة مع الشبكة: تعرض حاويات العرض مؤشرات تحميل هيكلية ومؤشرات تحميل دائرية عالية التباين أثناء جلب
weekly_plansأوhistorical_workouts. - إرسال التمرين (
[Finish]): يعرض نموذج تأكيد الانتهاء مؤشر تحميل نشطًا أثناء إرسال حمولة الجلسة إلىPOST /api/workouts/logفي Cloud Firestore.
- محادثات المدرّب بالذكاء الاصطناعي (
5.2 بنية متجر العميل وحدود النطاق
| طبقة المتجر | نطاق الحالة والخصائص الرئيسية | سياسة التخزين المؤقت والاحتفاظ بالبيانات | عقد خلفي منسَّق |
|---|---|---|---|
useActiveSessionStore (Zustand) |
sessionState (unstarted، running، paused)، elapsedSeconds، currentStepIndex، steps: WorkoutStep[]، loggedExercises |
تتم مزامنة البيانات مع "localStorage" كل ثانية لضمان استردادها في حال قفل الهاتف أو إعادة تحميله. |
يتم إرسال الحمولة المكتملة إلى POST /api/workouts/log. |
useWeeklyPlanQuery (TanStack Query) |
الجدول الزمني الحالي لمدة 7 أيام، وعناصر التمارين اليومية، ومجموعات السوبر سيت، وحالات الإكمال (scheduled، completed). |
يتم تخزينها مؤقتًا في TanStack Query (staleTime: 5 min)، ويتم جلبها مسبقًا عند بدء التشغيل. |
يتم الالتزام بها عندما ينقر المستخدم على [Accept Plan] للاطّلاع على المقترحات من "POST /api/coach/chat". |
useCoachChatStore (Zustand + TanStack) |
فقاعات الرسائل حسب التسلسل الزمني، activeContext، شرائح الطلبات، isCoachTyping: boolean، الاقتراحات المرحلية. |
تمت المزامنة مع مجموعة المحادثات الأسبوعية في Firestore باستخدام اشتراك في الوقت الفعلي (onSnapshot). |
يتم إرسال طلبات البحث إلى POST /api/coach/chat. |
useProgressQuery (TanStack Query) |
أرشيف التمارين السابقة، ولوحة الأرقام القياسية الشخصية (/users/{userId}/prs)، وإجمالي حجم التمارين على الإطلاق، وفلتر الإطار الزمني (4W و3M و1Y). |
تم تخزينها مؤقتًا في TanStack Query (staleTime: 10 min). |
يتم تعديلها فورًا بعد إكمال جلسة تمرين. |
useUserProfileStore (TanStack Query) |
قائمة المعدات، والوحدات (LBS/KG)، ومفاتيح تبديل الصوت/اللمس، والذاكرة الحية المكوّنة من 3 مستويات (الأساسية، والفسيولوجية، والظرفية). |
يتم تخزينها مؤقتًا في TanStack Query مع مزامنة ثنائية الاتجاه مع Firestore user_profiles. |
تم تعديلها تلقائيًا باستخدام memory_mutations من POST /api/coach/chat. |
useExerciseLibraryQuery (TanStack Query) |
إدخالات موسوعية ثابتة، وعناوين URL للفيديوهات، والعضلات الأساسية/الثانوية، والخطوات، ونصائح حول الوضعية الصحيحة | استراتيجية "التخزين المؤقت أولاً" مع مدة بقاء (TTL) غير محدودة (staleTime: Infinity) |
مجموعة exercises في Firestore غير قابلة للتغيير ومتاحة للقراءة فقط. |
5.3 رسم بياني للخطوات في الجلسات النشطة المحسوبة مسبقًا
export interface WorkoutStep {
stepIndex: number; // 1-based index (e.g. 1 to 13)
totalSteps: number; // Total sets in the session
blockIndex: number; // Index of block in day plan
blockType: 'straight' | 'superset';
exerciseId: string; // Canonical slug
exerciseName: string; // Display name
setNumber: number; // Set index for this exercise (1, 2, 3...)
targetWeightLbs: number; // Target weight in lbs
targetReps: string | number; // Target reps (e.g. "8-10")
restSecondsAfter: number; // Prescribed rest duration
isCompleted: boolean; // Completion checkmark status
actualWeightLbs?: number; // User entered weight
actualRepsCompleted?: number; // User entered reps
}5.4 مصفوفة تدفق البيانات الشاملة والتعديل
| إجراء المستخدم | طريقة العرض الأصلية | تم تعديل متجر العميل | وقت استجابة واجهة المستخدم / حالة التحميل | التنسيق في الخلفية | العودة إلى الحالة السابقة / معالجة الأخطاء |
|---|---|---|---|---|---|
انقر على [✓] "إكمال المجموعة" |
/workout/active |
useActiveSessionStore |
<16ms (متفائل) |
تم تعديل المخزن المؤقت للجلسة المحلية، ولا حاجة إلى الانتظار للاتصال بالشبكة. | الكتابة في الذاكرة المحلية مع إمكانية الاحتفاظ بالبيانات محليًا بشكل موثوق |
انقر على [Finish Workout] |
/workout/active |
useActiveSessionStore، useWeeklyPlanStore، useProgressStore |
يعرض الزر مؤشر تحميل أثناء المزامنة | يتم إرسالها إلى POST /api/workouts/log. يتم وضع علامة على يوم Firestore على أنّه completed. |
في حال عدم الاتصال بالإنترنت، يتم وضع الحمولة في قائمة انتظار في مخزن المزامنة المؤقت المحلي وتتم إعادة المحاولة عند إعادة الاتصال. |
انقر على [Accept Plan] |
/coach |
useWeeklyPlanStore، useCoachChatStore |
طابع واجهة المستخدم الفورية ("✓ Plan Applied") |
يتم حفظ proposal.data في Firestore weekly_plans. |
في حال تعذّر الاتصال بالشبكة، يظهر إشعار مؤقت لتنبيه المستخدم وتظل الأزرار نشطة لإعادة المحاولة. |
| إرسال رسالة في Chat | /coach |
useCoachChatStore، useUserProfileStore |
Optimistic bubble append + Coach Thinking Spinner | الاتصال بالرقم POST /api/coach/chat تم إرجاع memory_mutations من عمليات الحفظ. |
يتم استبدال مؤشر التحميل برسالة "تعذّر الإرسال. انقر لإعادة المحاولة". |
| تفعيل/إيقاف شريحة المعدّات | /settings |
useUserProfileStore |
زر التبديل الفوري (<16ms) |
يتم إرسال عملية الكتابة في الخلفية إلى Firestore user_profiles. |
يؤدي هذا الإجراء إلى إلغاء اختيار الشريحة وعرض رسالة خطأ مؤقتة في حال تعذُّر الكتابة. |
حذف عنصر من ذاكرة الذكاء الاصطناعي ([🗑]) |
/settings |
useUserProfileStore |
الحذف الفوري (<16ms) |
يتم إرسال عملية حذف إلى Firestore user_profiles. |
يستعيد عنصر الذاكرة وينبّه المستخدم في حال تعذّر الحذف. |
6. تجارب المستخدمين الشاملة ومصفوفة الاختبارات باللغة الإنجليزية المبسّطة
- المجموعة 1: واجهة التطبيق والتنقّل ومعالجة المسارات (الاختبارات من 1.1 إلى 1.6: إعادة التوجيه عند تشغيل التطبيق من الجذر، وشريط التطبيقات الثابت، والعودة السريعة إلى الجلسة النشطة، والعودة إلى الإعدادات التلقائية في حال عدم توفّر يوم من أيام الأسبوع، والعودة إلى الإعدادات التلقائية في حال عدم توفّر المسار 404، والعودة إلى الإعدادات التلقائية في حال عدم توفّر رابط عميق صالح للتمرين).
- المجموعة 2: عرض التمرين اليومي وعرض المجموعات (الاختبارات من 2.1 إلى 2.7: دقة عنوان اليوم الديناميكي، ومسار يوم محدّد وزر الرجوع، ومعالجة المجموعات الفردية مقابل السوبر سيت، والعنصر النائب لليوم الفارغ، وطابع التمرين المكتمل، والتنقّل الخالص على زر التشغيل في الوسط، والتعديل باستخدام مرفق سياق المدرّب).
- المجموعة 3: عرض الجدول الزمني الأسبوعي وبطاقة الجدول الزمني اليومي (الاختبارات من 3.1 إلى 3.6: عرض الإحصاءات الأسبوعية، فلتر الأيام المجدوَلة فقط، وسيلة الشرح المرئية لليوم، التنقّل في بطاقة اليوم، تعديل التنقّل في الأسبوع، عرض الصيغة المكثّفة).
- المجموعة 4: Coach Chat وStaged Mutation (الاختبارات من 4.1 إلى 4.7: عرض سلسلة رسائل المحادثة، وإرفاق بانر السياق وإغلاقه، والتعبئة التلقائية لشريحة الطلب، وتفعيل/إيقاف الإملاء الصوتي، وعزل التغييرات المرحلية، وقبول الاقتراح وتنفيذه، ومعاينة اقتراح التعديل الأسبوعي وتنفيذه).
- المجموعة 5: تفاصيل التمرين والموسوعة (الاختبارات من 5.1 إلى 5.5: عرض تفاصيل التمرين، والتشغيل التلقائي المتكرر مع كتم الصوت، ومفتاح تبديل إيقاف الفيديو مؤقتًا، وعلامات العضلات الأساسية مقابل الثانوية، والتنقّل للخلف في السجلّ والاحتياطي).
- المجموعة 6: تتبُّع التمارين النشطة وتسجيلها (الاختبارات من 6.1 إلى 6.7: الحالة الأولية غير المبدئية والبدء اليدوي، وإيقاف ساعة الإيقاف مؤقتًا واستئنافها، وتسجيل المجموعات باللمس والتبديل بين علامات الصح، وتبديل خطوات السوبر سيت، ونافذة تبديل التمارين واستبدالها، وتأكيد الانتهاء والمزامنة مع الخادم، واستعادة حالة الجلسة عند إعادة التحميل).
- المجموعة 7: التقدّم والإحصاءات السابقة (الاختبارات من 7.1 إلى 7.5: عرض نظرة عامة على لوحة بيانات التقدّم، وعرض بانر عرض المراجعة، وتبديل الإطار الزمني للرسم البياني، وحالة السجلّ الفارغ، والنقر على سجلّ الجلسات السابقة).
- المجموعة 8: إعدادات المستخدم والمعدات وذاكرة الذكاء الاصطناعي (الاختبارات من 8.1 إلى 8.4: عرض إعدادات العرض، وتعديل تفعيل المعدات، وتبديل الوحدات، وحذف عناصر ذاكرة الذكاء الاصطناعي).