diff --git a/assets/admin/pages/AppointmentsPage.test.tsx b/assets/admin/pages/AppointmentsPage.test.tsx
index 5eb6ca4c..04d55cde 100644
--- a/assets/admin/pages/AppointmentsPage.test.tsx
+++ b/assets/admin/pages/AppointmentsPage.test.tsx
@@ -140,6 +140,20 @@ describe('AppointmentsPage — پروفایل کلینیک چندپزشکه', ()
expect(screen.queryByRole('button', { name: 'لیزر CO2' })).toBeNull();
});
+ /** برگشت از منبع به خودِ پزشک باید در همان نوار باشد، نه با کلیک روی تب بالایی. */
+ it('تب نخستِ نوار منابع، برگشت به نوبتدهی خود پزشک است', async () => {
+ const user = userEvent.setup();
+ renderWithProviders();
+
+ await screen.findByText('دکتر محمدی');
+ await user.click(await screen.findByRole('button', { name: 'لیزر CO2' }));
+ expect(await screen.findByText(/نوبتدهی این منبع سرویسی است/)).toBeInTheDocument();
+
+ await user.click(screen.getByRole('button', { name: 'نوبتهای خود پزشک' }));
+
+ expect(screen.queryByText(/نوبتدهی این منبع سرویسی است/)).toBeNull();
+ });
+
/** باگ گزارششده: نمای منبع نباید اسلاتی باشد. */
it('نمای منبع سرویسی است و تایملاین اسلاتی ندارد', async () => {
const user = userEvent.setup();
diff --git a/assets/admin/pages/AppointmentsPage.tsx b/assets/admin/pages/AppointmentsPage.tsx
index 787c6dea..dab274b8 100644
--- a/assets/admin/pages/AppointmentsPage.tsx
+++ b/assets/admin/pages/AppointmentsPage.tsx
@@ -888,9 +888,14 @@ export default function AppointmentsPage() {
(پزشک ناظر)، پس کاربر بین نوبتهای پزشک و دستگاههای تحت نظرش جابهجا میشود. */}
{supervisedResources.length > 0 && (
- منابعِ این پزشک
+ نوبتدهی
+ {/* تب نخست راهِ بازگشت است: بدون آن، برگشتن از منبع به خودِ پزشک فقط با
+ کلیک روی تب بالایی ممکن بود و کاربر دنبالش میگشت. */}
({ uuid: r.uuid, name: r.name }))}
+ doctors={[
+ { uuid: '', name: 'نوبتهای خود پزشک' },
+ ...supervisedResources.map((r) => ({ uuid: r.uuid, name: r.name })),
+ ]}
selected={selectedResourceUuid}
onSelect={selectResource}
showAll={false}