Smart Fitness App: Client Architecture Spec
مصنوعاین آرتیفکت در قسمت ۳: «به برنامهتان مغز بدهید» و قسمت ۴: «طرح پیادهسازی برنامه بدون کد» استفاده شده است. میتوانید از این مشخصات بهعنوان مرجعی برای نماهای پیشنما، مؤلفههای میانای کاربر با قابلیت استفاده مجدد، مدیریت وضعیت مشتری، و چارچوبهای تست به زبان انگلیسی ساده استفاده کنید.
برای دسترسی به این آرتیفکت، به سیستم وارد شوید
با «نمایه توسعهدهنده Google» خود به سیستم وارد شوید تا بتوانید کل مصنوع استفادهشده در مجموعه Build It! را مشاهده و کپی کنید.
نمایه توسعهدهندگان نرمافزار لازم است
واجدشرایط نمایه توسعهدهندگان نیستید. به سرپرست فضای کاریتان اطلاع دهید تا این ویژگی را فعال کند.
ایجاد نمایه تولیدکننده
برای باز کردن قفل همه پیاموارهها و مصنوعات Build It!، «نمایه توسعهدهنده Google» رایگان ایجاد کنید.
برای باز کردن قفل، به Builder Central بپیوندید
با یک کلیک، نشان عضویت رایگان «سازنده» را مطالبه کنید تا قفل همه پیاموارهها و خروجیهای ساختاریافته Build It! باز شود.
وضعیت: آماده برای جلسه برنامهریزی (پیشنویس با همراه برنامهریزی مشتری)
سند همراه: مشخصات معماری داده
هدف معماری: بازسازی تمیز، قابل نگهداری، مدولار، و قابل آزمایش فرانتاند نمونه اولیه تناسب اندام هوشمند AI Studio.
۰. پشته فنی اصلی و استانداردهای مهندسی
- چارچوب زمان اجرا: Next.js (App Router، React 19) + ذخیره موقت داراییهای آفلاین «برنامه وب پیشرو» (PWA).
- معماری سبکبندی: Tailwind CSS v4 + Tailwind Variants (برای سبکبندی قطعی مؤلفه) + Lucide React (نمادها).
- بخش ایالت مشتری:
- Zustand (جلسه محلی): وضعیت ناپایدار کف سالن ورزشی (
useActiveSessionStore)، زمانسنجهای وقتنگهدار، بافرهای مجموعه فعال، و توالی گامهای ازپیش محاسبهشده را مدیریت میکند. برای بازیابی قفل تلفن، باlocalStorageهمگامسازی شد. - TanStack Query (Server State): حافظه پنهان سند Firestore، اعتبارسنجی مجدد پسزمینه، و بهروزرسانیهای خوشبینانه را برای
weekly_plans،user_profiles،prs، وworkout_logsمدیریت میکند.
- Zustand (جلسه محلی): وضعیت ناپایدار کف سالن ورزشی (
- مصورسازی نمودار: Recharts (با سبک نشانهای سفارشی حالت تاریک باشگاه).
- اصالتسنجی: اصالتسنجی Firebase با سرصفحه اصالتسنجی رمزیاب دارنده به همه نقاط پایانی سرور ارسال میشود.
۱. اصول طراحی و اصول فرانتاند
- طراحی ارگونومیک مناسب برای باشگاه: طراحیشده برای کارکرد لمسی با یک دست در میان تمرین با دستهای عرقکرده. هدفهای ضربه زدن بزرگ (حداقل ۴۸×۴۸ پیکسل مستقل از تراکم)، خوانایی با کنتراست بالا، و حداقل تایپ موردنیاز.
- رابط کاربری خوشبینانه و انعطافپذیری آفلاین: ثبت کردن ستها، شروع کردن زمانسنجهای استراحت، و جابهجا کردن تمرینها باید فوراً (کمتر از ۱۶ میلیثانیه) در رابط کاربری پاسخ دهد. همگامسازی پسزمینه پایداری سرور را در
POST /api/workouts/logبدون مسدود کردن کاربر مدیریت میکند. - تفکیک دقیق نگرانیها: مؤلفههای Dumb/Presentational دادهها را دریافت میکنند و رویدادها را بااستفاده از props منتشر میکنند؛ نماهای محفظه هوشمند منطق کسبوکار، فروشگاههای وضعیت، و هماهنگی میانای برنامهسازی کاربردی را مدیریت میکنند.
- تجربه کاربری تغییر مرحلهای: پیشنهادهای تولیدشده توسط «مربی هوش مصنوعی» (
POST /api/coach/chat) بهصورت کارتهای پیشنمایش مرحلهای تعاملی با کنترلهای صریح [پذیرفتن طرح] و [اصلاح] قبلاز اعمال تغییرات در وضعیت برنامه ارائه میشوند. - کیفیت رفتارمحور: هر صفحه، مؤلفه، و تعامل با چارچوبهای تست به زبان انگلیسی ساده جفت میشود که رفتار موردانتظار را بهطور واضح تعریف میکند.
۲. پیمایش برنامه و سلسلهمراتب نما
| مسیر | مشاهده نام | هدف اصلی | عناصر اصلی موجود است |
|---|---|---|---|
/ |
هدایت ریشه | هدایت فوری به /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 |
برنامه زمانی تمرین / نمای هفته | نمای کلی برنامه زمانی کامل ۷ روزه با مجموع حجم/زمان هفتگی. | <WeekHeader />، <WeeklyStatsSummary />، <DayScheduleCardList />، <DayScheduleCard />، <ModifyWeekWithCoachCard /> |
/coach |
گپ مربی هوش مصنوعی | مربیگری مکالمهای با تراشههای زمینهای و پیشنهادهای تمرین مرحلهای. | <CoachHeader />، <ChatMessageList />، <ChatBubble />، <StagedProposalCard />، <ContextualPromptsBar />، <ChatInputDock />، <ContextBanner />، <ChatInputBar />، <SpeechToTextButton /> |
/progress |
پیشرفت و تجزیهوتحلیل | گزارشهای تمرین قبلی، دستاوردهای PR، و نمودارهای حجم. | <ProgressHeader />، <PRShowcaseBanner />، <VolumeProgressChartCard />، <AllTimeStatsGrid />، <WorkoutHistorySection />، <HistorySessionCard />، <EmptyHistoryPlaceholder /> |
/settings |
نمایه و اولویتهای کاربر | نمایه تجهیزات، اعلانها، و مدیریت حافظه ۳ لایهای. | <SettingsHeader />، <UserProfileCard />، <EquipmentSelectorCard />، <EquipmentToggleChip />، <PreferencesGroup />، <MemoryTierViewerCard />، <MemoryItemCard />، <AccountActionsGroup /> |
/exercises/:exerciseId |
جزئیات دانشنامه تمرین | راهنمای تمرین با پیوند عمیق (مثلاً /exercises/incline-db-bench-press) با ویدیو و نکتههای فرم. |
<BackButton />، <ExerciseVideoPlayer />، <TargetMusclesCard />، <HowToPerformCard />، <FormTipsCard /> |
۳. مشخصات صفحه و بازدید
نما: DailyWorkoutView (/today و /workouts/:day)
- هدف: رژیم تمرینی زمانبندیشده را برای یک روز خاص نمایش میدهد—ازجمله تمرکز تمرین، مدتزمان، توزیع بار عضلانی هدف، یادداشتهای مربی، بلوکهای ست مستقیم، و بلوکهای سوپرست—با یک حالت خالی تمیز بهعنوان جایگزین زمانی که هیچ تمرینی زمانبندی نشده است.
- آناتومی بصری:
- بالا:
<BackButton label="Back to Week" targetRoute="/week" />. - سرایند: عنوان تکخطی (
"Today"یا روز هفته) با نشان شرطی"✓ Completed"، قرص مدت ("⏱ 50 min")، و نوارهای درصد شدت عضله هدف. - یادداشت مربی: کارت توصیه بافتی با نماد و حاشیه سبز رنگ.
- بدنه: فهرست پیمایشی از بلوکهای تمرین بااستفاده از
<WorkoutExerciseSummary />(ستهای مستقیم یا سوپرستها با نشانborder-left: 3px solid #a3e635و🔁 SUPERSET BLOCK). - وضعیت خالی:
<EmptyDayPlaceholder message="Nothing scheduled for this day" />. - کنش پانویس پایین:
<ModifyWithCoachCard />(مسیرها به/coach?day=:day).
- بالا:
مشاهده: WeekScheduleView (/week)
- هدف: نمای کلی برنامه تمرینی کامل ۷ روزه را نمایش میدهد، ازجمله سنجههای سطح بالای حجم/ زمان هفتگی، فهرست گلچینشدهای از روزهای تمرین فعال (با فیلتر کردن دقیق روزهای بدون برنامه/ استراحت)، و میانبر مستقیم برای بازنگری برنامه هفتگی با «مربی هوش مصنوعی».
- آناتومی بصری:
<WeekHeader />،<WeeklyStatsSummary />۳ ستونی (زمان کل، حجم کل، فرکانس)، فهرست روزهای زمانبندیشده بااستفاده از<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)
- هدف: اجرای تمرینات با ریسک بالا و صفحه ثبت مجموعه. وضعیت زمانسنج جلسه زنده، اهداف تنظیمشده فعلی، ورودیهای تکرار/وزن، تکمیل فوری علامت تیک (کمتر از ۱۶ میلیثانیه)، تناوب خودکار سوپرست، شمارش معکوس زمانسنج استراحت با لمس/صدا، تعویض تمرین، و پایداری نهایی در
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، لمسی، صدا)، و ارائه مدیریت شفاف کاربر و حذف «حافظه زنده ۳ سطحی» مربی هوش مصنوعی (<MemoryTierViewerCard />/<MemoryItemCard />).
۴. کاتالوگ و میاناهای مؤلفه قابلاستفاده مجدد
قراردادهای کلیدی TypeScript component prop در سراسر برنامه:
// 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;
}۵. ماتریس جریان داده و مدیریت وضعیت کارخواه
۵.۱ خطمشی تأخیر و بار کردن: موتور دو سرعته
- رابط کاربری خوشبینانه Gym-Floor (کمتر از ۱۶ میلیثانیه): کنشهای لمسی Gym-Floor (علامت زدن ستها، افزایش وزنهها/ تکرارها، جابهجایی بین برگهها، و روشن/ خاموش کردن تجهیزات) وضعیت محلی را بهروزرسانی میکنند و در کمتر از ۱۶ میلیثانیه دوباره رندر میشوند. کاربران هرگز هنگام نگهداشتن وزنهها با نشانگرهای بارگیری مسدود نمیشوند.
- نشانگرها و چرخندههای بارگیری صریح برای عملیات ناهمگام:
- مکالمههای مربی هوش مصنوعی (
POST /api/coach/chat): ارسال پیام گپ بلافاصله یک حباب چرخان پویانماییشده «مربی درحال فکر کردن است» را در جریان گپ نمایش میدهد تا زمانی که Gemini پاسخ یا پیشنهاد تمرین خود را برگرداند. - راهاندازی سرد اولیه و همگامسازی شبکه: محفظههای نما، بارکنندههای اسکلتی و نشانگرهای بارگیری با کنتراست بالا را هنگام واکشی
weekly_plansیاhistorical_workoutsنمایش میدهند. - ارسال تمرین (
[Finish]): مدال تأیید پایان، یک چرخانک بارگیری فعال را نمایش میدهد درحالیکه بار مفید جلسه بهPOST /api/workouts/logدر Cloud Firestore ارسال میشود.
- مکالمههای مربی هوش مصنوعی (
۵.۲ معماری فروشگاه مشتری و مرزهای دامنه
| لایه فروشگاه | دامنه وضعیت و ویژگیهای کلیدی | خطمشی پایداری و حافظه نهان | قرارداد زیرینه هماهنگشده |
|---|---|---|---|
useActiveSessionStore (Zustand) |
sessionState (unstarted، running، paused)، elapsedSeconds، currentStepIndex، steps: WorkoutStep[]، loggedExercises. |
هر ثانیه با localStorage همگامسازی میشود تا بازیابی قفل/بازآوری تلفن بدون خطا انجام شود. |
بار داده تکمیلشده را به POST /api/workouts/log ارسال میکند. |
useWeeklyPlanQuery (TanStack Query) |
برنامه ۷ روزه فعلی، اشیاء تمرین روزانه، بلوکهای سوپرست، وضعیتهای تکمیل (scheduled، completed). |
در TanStack Query ذخیرهشده در حافظه نهان (staleTime: 5 min)؛ پیشواکشیشده در راهاندازی. |
وقتی کاربر روی [Accept Plan] برای پیشنهادهای POST /api/coach/chat تکضرب میزند، متعهد میشود. |
useCoachChatStore (Zustand + TanStack) |
حبابکهای پیام بهترتیب زمانی، activeContext، تراشههای پیامواره، isCoachTyping: boolean، پیشنهادهای مرحلهای. |
بااستفاده از اشتراک همزمان (onSnapshot)، با سطل گپ هفتگی Firestore همگامسازی شد. |
پرسوجوها را به POST /api/coach/chat ارسال میکند. |
useProgressQuery (TanStack Query) |
بایگانی تمرینات گذشته، تابلوی رکورد شخصی (/users/{userId}/prs)، مجموع حجم کل زمان، فیلتر بازه زمانی (4W، 3M، 1Y). |
در TanStack Query ذخیره شد (staleTime: 10 min). |
بلافاصله پساز تکمیل جلسه تمرین بهروز میشود. |
useUserProfileStore (TanStack Query) |
فهرست تجهیزات، واحدها (LBS/KG)، کلیدهای روشن/خاموش صدا/لمسی، حافظه زنده ۳ سطحی (اصلی، فیزیولوژیکی، موقعیتی). |
در TanStack Query با همگامسازی دوطرفه با Firestore user_profiles ذخیره شده است. |
بهطور خودکار بااستفاده از memory_mutations از POST /api/coach/chat بهروز شد. |
useExerciseLibraryQuery (TanStack Query) |
مدخلهای دانشنامه ایستا، نشانیهای وب ویدیو، عضلات اصلی/فرعی، مراحل، نکات فرم. | Aggressive cache-first with infinite TTL (staleTime: Infinity). |
فقط خواندنی از مجموعه تغییرناپذیر Firestore exercises. |
۵.۳ نمودار مرحله جلسه فعال ازپیش محاسبهشده
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
}۵.۴ ماتریس جهش و جریان داده سرتاسر
| راهانداز کاربر | نمای اصلی | فروشگاه کارخواه تغییر کرد | تأخیر واسط کاربر / وضعیت بار کردن | هماهنگی زیرینه | عقبگرد / رسیدگی به خطا |
|---|---|---|---|---|---|
روی [✓] تکمیل مجموعه تکضرب بزنید |
/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 ارسال میکند. |
مورد حافظه را بازیابی میکند و اگر حذف ناموفق باشد به کاربر هشدار میدهد. |
۶. مسیرهای کاربر سرتاسر و ماتریس آزمایشی به زبان انگلیسی ساده
- مجموعه ۱: پوسته برنامه، پیمایش، و مدیریت مسیر (آزمایشهای ۱.۱ تا ۱.۶: تغییرمسیر راهاندازی ریشه، جایگاه ثابت، بازگشت سریع جلسه فعال، بازگشت به حالت قبلی روز نامعتبر هفته، بازگشت به حالت قبلی ۴۰۴ مسیر ناشناخته، بازگشت به حالت قبلی پیوند عمیق تمرین نامعتبر).
- مجموعه ۲: نمای تمرین روزانه و پرداز دادن بلوک (آزمایشهای ۲.۱ تا ۲.۷: وضوح عنوان روز پویا، مسیر روز خاص و دکمه برگشت، رفتار بلوک تکی درمقابل اَبَرمجموعه، جایبان روز خالی، مُهر تمرین تکمیلشده، پیمایش خالص روی دکمه پخش مرکزی، اصلاح با پیوست بافت مربی).
- مجموعه ۳: نمای برنامه زمانی هفتگی و کارت برنامه زمانی روزانه (آزمایشهای ۳.۱ تا ۳.۶: ارائه آمار هفتگی، فیلتر فقط روزهای زمانبندیشده، فراخوان تصویری امروز، پیمایش کارت روز، اصلاح پیمایش هفته، ارائه گونه فشرده).
- مجموعه ۴: گپ مربی و جهش مرحلهای (آزمایشهای ۴.۱ تا ۴.۷: رندر کردن جاریسازی پیام گپ، پیوست کردن و رد کردن برنمای بافت، ازپیش تکمیل کردن تراشه پیاموارهدهی، کلید روشن/خاموش دیکته گفتار، جداسازی جهش مرحلهای، پذیرش و ثبت پیشنهاد، پیشنمایش و ثبت پیشنهاد بازنگری هفتگی).
- مجموعه ۵: جزئیات تمرین و دانشنامه (آزمایشهای ۵.۱ تا ۵.۵: ارائه جزئیات تمرین، بازپخش بیصدا با حلقه خودکار، کلید مکث ویدیو، برچسبهای عضلات اصلی درمقابل عضلات فرعی، پیمایش به عقب در سابقه و بازگشت).
- مجموعه ۶: ردیاب و ثبت تمرین فعال (آزمایشهای ۶.۱ تا ۶.۷: وضعیت اولیه شروعنشده و شروع دستی، توقف موقت و ازسرگیری زمانسنج، ثبت مجموعه لمسی و تغییر علامت تیک، تناوب مرحله مجموعه برتر، جابهجایی تمرین و جایگزینی، تأیید پایان و همگامسازی سرور، بازیابی وضعیت جلسه هنگام بار کردن مجدد).
- مجموعه ۷: تجزیهوتحلیل پیشرفت و سابقه (آزمونهای ۷.۱ تا ۷.۵: رندر نمای کلی داشبورد پیشرفت، نمایش برنمای ویترین PR، کلید وضعیت بازه زمانی نمودار، وضعیت سابقه خالی، تکضرب زدن روی سابقه جلسه گذشته).
- مجموعه ۸: تنظیمات کاربر، تجهیزات، و حافظه هوش مصنوعی (آزمایشهای ۸.۱ تا ۸.۴: پرداز تنظیمات، بهروزرسانی کلید تجهیزات، تغییر واحدها، حذف مورد حافظه هوش مصنوعی).