From 47ac8c1f8e6bf80b9a03f59625e2131e8f343c6c Mon Sep 17 00:00:00 2001 From: Arshia <20220arshia@gmail.com> Date: Thu, 5 Nov 2026 20:22:07 +0330 Subject: [PATCH] added ui-wireframes --- docs/analysis/ui-wireframes.md | 458 +++++++++++++++++++++++++++++++++ 1 file changed, 458 insertions(+) create mode 100644 docs/analysis/ui-wireframes.md diff --git a/docs/analysis/ui-wireframes.md b/docs/analysis/ui-wireframes.md new file mode 100644 index 0000000..4c6fef7 --- /dev/null +++ b/docs/analysis/ui-wireframes.md @@ -0,0 +1,458 @@ +# رابط کاربری و وایرفریم‌ها (UI Wireframes) – سامانه مدیریت و گزارش خرابی دانشگاهی + +**تهیه‌کننده:** رضا آدوسی +**بازبین:** ارشیا همتی‌زاده +**آخرین به‌روزرسانی:** ۱۴۰۵/۰۸/۱۴ + +--- + +## مقدمه + +این سند فهرست صفحات، نقشهٔ ناوبری و طرح اولیهٔ چیدمان (Wireframe) رابط کاربری سامانه را ارائه می‌دهد. هدف، تبدیل داستان‌های کاربر و جریان‌های `activity.md` به صفحات مشخص است، **پیش از** انتخاب فناوری و شروع کدنویسی. + +> **نکتهٔ نمایش:** متن نهایی سامانه فارسی و راست‌به‌چپ (RTL) است. طرح‌های این سند با کاراکترهای ساده رسم شده‌اند و **جهت چیدمان آن‌ها نمایندهٔ جهت نهایی نیست**. در پیاده‌سازی، ستون «منو/اقدام» در سمت راست و ناحیهٔ محتوا در سمت چپ قرار می‌گیرد. + +## ۱. اصول طراحی + +| # | اصل | توضیح | مستند مرجع | +|---|---|---|---| +| P1 | **راست‌به‌چپ و فارسی** | همهٔ برچسب‌ها، پیام‌ها و تاریخ‌ها فارسی؛ تاریخ شمسی با ارقام فارسی | `NFR-03`، `CONTRIBUTING.md` §۷ | +| P2 | **ناوبری نقش‌محور** | هر کاربر فقط صفحات نقش خود را در منو می‌بیند | `FR-02`، `US-15` | +| P3 | **اعتبارسنجی درجا** | خطا کنار همان فیلد نمایش داده می‌شود، نه در بالای صفحه | `US-01.feature` | +| P4 | **حفظ ورودی در خطا** | در خطای اعتبارسنجی یا خطای سرور، مقادیر فرم پاک نمی‌شوند | `US-01.feature` | +| P5 | **افشا نکردن علت خطای ورود** | پیام ورود مبهم است و فیلد اشتباه را مشخص نمی‌کند | `US-15.feature` | +| P6 | **پنهان‌نکردن قابلیت به‌جای کنترل دسترسی** | مجوزدهی سمت سرور؛ رابط کاربری فقط بازتاب آن است | `ADR-03` در `software-architecture.md` | +| P7 | **بازخورد صریح وضعیت** | هر اقدام موفق یا ناموفق پیام روشن دارد | `NFR-03` | +| P8 | **نمایش وضعیت و اولویت به‌صورت بصری** | بج رنگی برای وضعیت و اولویت در همهٔ فهرست‌ها | `FR-08`، `US-06` | + +## ۲. فهرست صفحات + +| شناسه | صفحه | نقش‌های مجاز | داستان‌های کاربر | جریان فعالیت | +|---|---|---|---|---| +| `SCR-01` | ورود به سامانه | همه | `US-15` | `AD-01` | +| `SCR-02` | گزارش‌های من | دانشجو، استاد | `US-03` | `AD-02` | +| `SCR-03` | ثبت گزارش خرابی | دانشجو، استاد | `US-01`، `US-02` | `AD-02` | +| `SCR-04` | جزئیات گزارش (نمای گزارش‌دهنده) | دانشجو، استاد | `US-03`، `US-04`، `US-05` | `AD-02`، `AD-05` | +| `SCR-05` | فهرست گزارش‌های باز | کارمند تأسیسات | `US-06` | `AD-03` | +| `SCR-06` | جزئیات گزارش (نمای تأسیسات) | کارمند تأسیسات | `US-06`–`US-10` | `AD-03` | +| `SCR-07` | مأموریت‌های من | تعمیرکار | `US-11` | `AD-04` | +| `SCR-08` | جزئیات مأموریت | تعمیرکار | `US-12`، `US-13`، `US-14` | `AD-04` | +| `SCR-09` | داشبورد مدیریتی | کارمند تأسیسات، مدیر | `US-17` | `AD-03` | +| `SCR-10` | اعلان‌ها | همه | `US-16` | — | +| `SCR-11` | خطای دسترسی | همه | `US-15` | `AD-01` | +| `SCR-12` | مودال تأیید/رد تعمیر | دانشجو، استاد | `US-05` | `AD-05` | + +## ۳. نقشهٔ ناوبری + +```mermaid +flowchart TD + LOGIN["SCR-01
ورود"] --> ROLE{"نقش کاربر"} + + ROLE -->|"دانشجو / استاد"| R_HOME["SCR-02
گزارش‌های من"] + R_HOME --> R_NEW["SCR-03
ثبت گزارش"] + R_HOME --> R_DETAIL["SCR-04
جزئیات گزارش"] + R_DETAIL --> R_MODAL["SCR-12
تأیید یا رد تعمیر"] + + ROLE -->|"کارمند تأسیسات"| F_HOME["SCR-05
گزارش‌های باز"] + F_HOME --> F_DETAIL["SCR-06
جزئیات گزارش"] + F_HOME --> F_DASH["SCR-09
داشبورد"] + + ROLE -->|"تعمیرکار"| T_HOME["SCR-07
مأموریت‌های من"] + T_HOME --> T_DETAIL["SCR-08
جزئیات مأموریت"] + + ROLE -->|"مدیر"| M_DASH["SCR-09
داشبورد"] + + R_HOME -.-> NOTIF["SCR-10
اعلان‌ها"] + F_DETAIL -.-> NOTIF + T_DETAIL -.-> NOTIF + + R_HOME -.->|"دسترسی غیرمجاز"| ERR["SCR-11
خطای دسترسی"] + F_HOME -.-> ERR + T_HOME -.-> ERR +``` + +## ۴. وایرفریم‌ها + +در هر طرح، کادرهای شماره‌دار به عناصر مشخص اشاره دارند و جدول زیر آن‌ها مشخصات کامل هر عنصر را می‌دهد. این روش از مشکل نمایش راست‌به‌چپ متن فارسی در بلوک کد جلوگیری می‌کند. + +### ۴.۱. `SCR-01` — ورود به سامانه + +```text +┌──────────────────────────────────────────────────────────────┐ +│ [۱] [۲] │ +│ │ +│ ┌────────────────────────┐ │ +│ │ [۳] │ │ +│ │ │ │ +│ │ [۴] │ │ +│ │ ┌──────────────────┐ │ │ +│ │ │ [۵] │ │ │ +│ │ └──────────────────┘ │ │ +│ │ [۶] │ │ +│ │ ┌──────────────────┐ │ │ +│ │ │ [۷] │ │ │ +│ │ └──────────────────┘ │ │ +│ │ [۸] │ │ +│ │ ┌──────────────────┐ │ │ +│ │ │ [۹] │ │ │ +│ │ └──────────────────┘ │ │ +│ └────────────────────────┘ │ +│ │ +└──────────────────────────────────────────────────────────────┘ +``` + +| # | عنصر | نوع | محتوا | رفتار | مرجع | +|---|---|---|---|---|---| +| ۱ | لوگو و نام سامانه | متن | «سامانه مدیریت و گزارش خرابی دانشگاهی» | — | `README.md` | +| ۲ | فضای خالی / زبان | — | فعلاً فقط فارسی | — | `NFR-03` | +| ۳ | عنوان فرم | تیتر | «ورود به سامانه» | — | `US-15` | +| ۴ | برچسب نام کاربری | متن | «نام کاربری» | — | `FR-01` | +| ۵ | ورودی نام کاربری | فیلد متنی | — | اجباری؛ در صورت خالی‌بودن: «این فیلد الزامی است» کنار فیلد | `US-15.feature` | +| ۶ | برچسب رمز عبور | متن | «رمز عبور» | — | `FR-01` | +| ۷ | ورودی رمز عبور | فیلد رمز | — | اجباری؛ ماسک‌شده | `US-15.feature` | +| ۸ | ناحیهٔ خطا | ناحیهٔ پیام | خالی در حالت عادی | در خطای ورود: «نام کاربری یا رمز عبور اشتباه است» — نام کاربری در فرم می‌ماند | `US-15.feature` | +| ۹ | دکمهٔ ورود | دکمهٔ اصلی | «ورود» | پس از موفقیت: انتقال به داشبورد نقش | `AD-01` | + +**حالت‌های خطا:** + +| حالت | پیام | رفتار | مرجع | +|---|---|---|---| +| فیلد خالی | «این فیلد الزامی است» (کنار همان فیلد) | ورود انجام نمی‌شود | `US-15.feature` | +| اعتبارنامهٔ نامعتبر | «نام کاربری یا رمز عبور اشتباه است» | نام کاربری حفظ می‌شود؛ فیلد اشتباه مشخص نمی‌شود | `US-15.feature` | +| سرویس احراز هویت در دسترس نیست | «خطا در ورود؛ لطفاً بعداً تلاش کنید» | ورود انجام نمی‌شود | `US-15.feature` | + +> **الزام امنیتی:** هیچ پیام خطایی نباید مشخص کند «نام کاربری وجود ندارد» یا «رمز اشتباه است». تنها پیام مشترک مجاز است (P5). + +### ۴.۲. `SCR-03` — ثبت گزارش خرابی + +```text +┌──────────────────────────────────────────────────────────────┐ +│ [۱] [۲] │ +├──────────────┬───────────────────────────────────────────────┤ +│ │ [۳] │ +│ [M1] │ ┌──────────────────────────────────────────┐ │ +│ [M2] │ │ [۴] │ │ +│ [M3] │ │ ┌──────────────────────────────────────┐ │ │ +│ [M4] │ │ │ [۵] │ │ │ +│ │ │ └──────────────────────────────────────┘ │ │ +│ │ │ [۶] │ │ +│ │ │ ┌──────────────────────────────────────┐ │ │ +│ │ │ │ [۷] │ │ │ +│ │ │ │ │ │ │ +│ │ │ └──────────────────────────────────────┘ │ │ +│ │ │ [۸] │ │ │ +│ │ │ ┌──────────────────────────────────────┐ │ │ +│ │ │ │ [۹] │ │ │ +│ │ │ └──────────────────────────────────────┘ │ │ +│ │ │ [۱۰] │ │ │ +│ │ │ ┌──────────────────────────────────────┐ │ │ +│ │ │ │ [۱۱] │ │ │ +│ │ │ └──────────────────────────────────────┘ │ │ +│ │ │ [۱۲] [۱۳] │ │ +│ │ └──────────────────────────────────────────┘ │ +└──────────────┴───────────────────────────────────────────────┘ +``` + +| # | عنصر | نوع | محتوا | رفتار | مرجع | +|---|---|---|---|---|---| +| ۱ | نوار بالا | ناحیه | نام کاربر + خروج | — | `FR-01` | +| ۲ | زنگ اعلان | آیکون + شمارنده | تعداد خوانده‌نشده | کلیک → `SCR-10` | `US-16` | +| M1–M4 | منوی نقش | فهرست | «گزارش‌های من»، «ثبت گزارش»، «اعلان‌ها»، «خروج» | فقط آیتم‌های مجاز نقش | `FR-02` | +| ۳ | عنوان صفحه | تیتر | «ثبت گزارش خرابی» | — | `US-01`، `US-02` | +| ۴ | برچسب عنوان | متن | «عنوان» + نشان اجباری | — | `FR-03` | +| ۵ | ورودی عنوان | فیلد متنی | — | اجباری؛ حداکثر ۱۵۰ کاراکتر؛ شمارندهٔ کاراکتر | `US-01.feature` | +| ۶ | برچسب توضیحات | متن | «توضیحات» + نشان اجباری | — | `FR-03` | +| ۷ | ورودی توضیحات | ناحیهٔ متنی | — | اجباری | `US-01.feature` | +| ۸ | برچسب محل خرابی | متن | «محل خرابی» + نشان اجباری | — | `FR-03` | +| ۹ | ورودی محل | فیلد متنی | نمونه: «ساختمان الف - کلاس ۱۰۲» | اجباری | `US-01.feature` | +| ۱۰ | برچسب نوع تجهیز | متن | «نوع تجهیز» + نشان اجباری | — | `FR-03` | +| ۱۱ | انتخاب نوع تجهیز | فهرست کشویی | روشنایی، تهویه، آسانسور، برق، پروژکتور، سایر | اجباری | `US-01.feature`، `README.md` | +| ۱۲ | دکمهٔ انصراف | دکمهٔ ثانویه | «انصراف» | بازگشت به `SCR-02` | — | +| ۱۳ | دکمهٔ ثبت | دکمهٔ اصلی | «ثبت گزارش» | ارسال؛ در انتظار: غیرفعال + نشانگر | `AD-02` | + +**حالت‌های نتیجه:** + +| حالت | پیام | رفتار | مرجع | +|---|---|---|---| +| موفقیت | نمایش شناسهٔ یکتا | انتقال به `SCR-04` یا ماندن با پیام موفقیت | `US-01.feature` | +| فیلد اجباری خالی | «این فیلد الزامی است» کنار فیلد | هیچ گزارشی ذخیره نمی‌شود | `US-01.feature` | +| عنوان ۱۵۱ کاراکتر | «حداکثر طول عنوان ۱۵۰ کاراکتر است» | هیچ گزارشی ذخیره نمی‌شود | `US-01.feature` | +| خطای سرور | «خطا در ثبت گزارش؛ لطفاً دوباره تلاش کنید» | **مقادیر فرم حفظ می‌شوند**، هیچ گزارش ناقصی ذخیره نمی‌شود | `US-01.feature` | + +> **الزام P4:** در حالت خطای سرور، پاک‌کردن فرم **ممنوع** است. این رفتار در `US-01.feature` صریحاً الزام شده است. + +### ۴.۳. `SCR-05` — فهرست گزارش‌های باز (کارمند تأسیسات) + +```text +┌──────────────────────────────────────────────────────────────┐ +│ [۱] [۲] │ +├──────────────┬───────────────────────────────────────────────┤ +│ │ [۳] │ +│ [M1] │ [۴] [۵] [۶] [۷] │ +│ [M2] │ ┌──────────────────────────────────────────┐ │ +│ [M3] │ │ [۸] │ [۹] │ [۱۰] │ [۱۱] │ [۱۲] │ [۱۳] │ │ +│ │ ├──────────────────────────────────────────┤ │ +│ │ │ ... │ │ +│ │ │ ... │ │ +│ │ │ ... │ │ +│ │ └──────────────────────────────────────────┘ │ +│ │ [۱۴] │ +└──────────────┴───────────────────────────────────────────────┘ +``` + +| # | عنصر | نوع | محتوا | رفتار | مرجع | +|---|---|---|---|---|---| +| ۱ | نوار بالا | ناحیه | نام کاربر + خروج | — | — | +| ۲ | زنگ اعلان | آیکون | — | → `SCR-10` | `US-16` | +| M1–M4 | منوی نقش | فهرست | «گزارش‌های باز»، «داشبورد»، «اعلان‌ها»، «خروج» | — | `FR-02` | +| ۳ | عنوان صفحه | تیتر | «گزارش‌های باز» | — | `US-06` | +| ۴ | فیلتر وضعیت | کشویی چندگزینه | از `report_statuses` | پیش‌فرض: همه به‌جز «بسته‌شده» | `FR-08`، `US-06` | +| ۵ | فیلتر اولویت | کشویی چندگزینه | از `priorities` | — | `FR-08` | +| ۶ | جست‌وجو | فیلد متنی | جست‌وجو در عنوان و شناسه | — | `FR-08` | +| ۷ | دکمهٔ پاک‌کردن فیلتر | دکمهٔ ثانویه | «پاک‌کردن فیلترها» | بازنشانی | — | +| ۸ | ستون شناسه | ستون جدول | `report_no` | قابل مرتب‌سازی | — | +| ۹ | ستون عنوان | ستون جدول | عنوان گزارش | لینک به `SCR-06` | — | +| ۱۰ | ستون محل | ستون جدول | محل خرابی | — | `FR-03` | +| ۱۱ | ستون اولویت | ستون جدول | بج اولویت | رنگ‌بندی بر اساس سطح | `FR-07` | +| ۱۲ | ستون وضعیت | ستون جدول | بج وضعیت | رنگ‌بندی بر اساس وضعیت | `FR-11` | +| ۱۳ | ستون تاریخ | ستون جدول | تاریخ ثبت (شمسی) | مرتب‌سازی پیش‌فرض: نزولی | — | +| ۱۴ | صفحه‌بندی | ناحیه | تعداد در صفحه | — | `NFR-04` | + +> **تعریف «باز»:** گزارشی که وضعیت آن «بسته‌شده» نیست. «باز» یک وضعیت رسمی نیست (`data-model.md` §۴.۲). + +### ۴.۴. `SCR-06` — جزئیات گزارش (نمای تأسیسات) + +```text +┌──────────────────────────────────────────────────────────────┐ +│ [۱] [۲] │ +├──────────────┬───────────────────────────────────────────────┤ +│ [M1] │ [۳] [۴] [۵] │ +│ [M2] │ ┌──────────────────┬────────────────────────┐ │ +│ [M3] │ │ [۶] │ [۷] │ │ +│ │ │ [۸] │ [۹] │ │ +│ │ │ [۱۰] │ [۱۱] │ │ +│ │ │ [۱۲] │ [۱۳] │ │ +│ │ │ │ [۱۴] │ │ +│ │ │ │ [۱۵] │ │ +│ │ └──────────────────┴────────────────────────┘ │ +│ │ [۱۶] │ +│ │ ┌──────────────────────────────────────────┐ │ +│ │ │ ... │ │ +│ │ └──────────────────────────────────────────┘ │ +└──────────────┴───────────────────────────────────────────────┘ +``` + +| # | عنصر | نوع | محتوا | رفتار | مرجع | +|---|---|---|---|---|---| +| ۳ | عنوان گزارش | تیتر | عنوان + شناسه | — | `FR-03` | +| ۴ | بج وضعیت | بج | وضعیت جاری | — | `FR-11` | +| ۵ | بج اولویت | بج | اولویت (در صورت تعیین) | — | `FR-07` | +| ۶ | توضیحات | متن | توضیحات گزارش‌دهنده | — | `FR-03` | +| ۷ | محل خرابی | متن | متن محل | — | `FR-03` | +| ۸ | نوع تجهیز | متن | برچسب فارسی نوع | — | `FR-03` | +| ۹ | گزارش‌دهنده | متن | نام نمایشی + نقش | — | — | +| ۱۰ | تاریخ ثبت | متن | تاریخ شمسی | — | — | +| ۱۱ | اطلاعات تکمیلی | فهرست | متن/تصویر + ارائه‌دهنده + زمان | — | `FR-04`، `US-04` | +| ۱۲ | نتیجهٔ تعمیر | ناحیه | توضیحات + تعمیرکار + زمان | فقط در صورت وجود | `FR-12` | +| ۱۳ | تعیین اولویت | کشویی + دکمه | «ذخیرهٔ اولویت» | فقط نقش تأسیسات | `FR-07`، `US-07` | +| ۱۴ | تخصیص تعمیرکار | کشویی + دکمه | فهرست تعمیرکاران + «تخصیص» | فقط نقش تأسیسات | `FR-09`، `US-08` | +| ۱۵ | تغییر وضعیت | کشویی + دکمه | فقط انتقال‌های مجاز | گزینه‌های غیرمجاز نمایش داده نمی‌شوند | `FR-11`، `US-09` | +| ۱۶ | تاریخچه | تایم‌لاین | فهرست اقدامات به ترتیب زمانی | — | `FR-16`، `US-10` | + +> **الزام ADR-06:** گزینه‌های کشویی «تغییر وضعیت» باید از جدول انتقال‌های مجاز خوانده شوند، نه از کد. انتقال‌های نامشخص (پرسش‌های باز ۶ و ۷) نباید در رابط کاربری ظاهر شوند تا زمانی که تیم تصمیم بگیرد. + +### ۴.۵. `SCR-07` — مأموریت‌های من (تعمیرکار) + +```text +┌──────────────────────────────────────────────────────────────┐ +│ [۱] [۲] │ +├──────────────┬───────────────────────────────────────────────┤ +│ [M1] │ [۳] │ +│ [M2] │ ┌──────────────────────────────────────────┐ │ +│ │ │ [۴] │ [۵] │ [۶] │ [۷] │ [۸] │ [۹] │ │ +│ │ ├──────────────────────────────────────────┤ │ +│ │ │ ... │ │ +│ │ └──────────────────────────────────────────┘ │ +└──────────────┴───────────────────────────────────────────────┘ +``` + +| # | عنصر | نوع | محتوا | رفتار | مرجع | +|---|---|---|---|---|---| +| ۳ | عنوان صفحه | تیتر | «مأموریت‌های من» | — | `US-11` | +| ۴ | ستون شناسه | ستون | `report_no` | — | — | +| ۵ | ستون عنوان | ستون | عنوان گزارش | لینک به `SCR-08` | — | +| ۶ | ستون محل | ستون | محل خرابی | — | — | +| ۷ | ستون اولویت | ستون | بج اولویت | — | `FR-07` | +| ۸ | ستون وضعیت | ستون | وضعیت تخصیص | — | `US-12`، `US-13` | +| ۹ | ستون زمان تخصیص | ستون | تاریخ شمسی | — | — | + +> **واژه‌شناسی:** «مأموریت» در `US-11` و `AD-04` همان «تخصیص» در `FR-09` است. رابط کاربری از واژهٔ «مأموریت» استفاده می‌کند چون زبان تعمیرکار است. + +### ۴.۶. `SCR-08` — جزئیات مأموریت (تعمیرکار) + +```text +┌──────────────────────────────────────────────────────────────┐ +│ [۱] [۲] │ +├──────────────┬───────────────────────────────────────────────┤ +│ [M1] │ [۳] [۴] │ +│ │ ┌──────────────────────────────────────────┐ │ +│ │ │ [۵] [۶] [۷] │ │ +│ │ └──────────────────────────────────────────┘ │ +│ │ [۸] │ +│ │ ┌──────────────────────────────────────────┐ │ +│ │ │ [۹] │ │ +│ │ └──────────────────────────────────────────┘ │ +│ │ [۱۰] [۱۱] [۱۲] │ +│ │ [۱۳] │ +│ │ ┌──────────────────────────────────────────┐ │ +│ │ │ ... │ │ +│ │ └──────────────────────────────────────────┘ │ +└──────────────┴───────────────────────────────────────────────┘ +``` + +| # | عنصر | نوع | محتوا | رفتار | مرجع | +|---|---|---|---|---|---| +| ۳ | عنوان + شناسه | تیتر | — | — | — | +| ۴ | بج وضعیت | بج | — | — | `FR-11` | +| ۵ | توضیحات خرابی | متن | — | — | `FR-03` | +| ۶ | محل خرابی | متن | — | — | — | +| ۷ | نوع تجهیز | متن | — | — | — | +| ۸ | دکمهٔ «شروع تعمیر» | دکمه | فقط در وضعیت «ارجاع‌شده» | تغییر وضعیت به «در حال تعمیر» | `US-12` | +| ۹ | فرم ثبت نتیجه | ناحیهٔ متنی + دکمه | توضیحات اقدامات | فقط پس از شروع تعمیر | `FR-12`، `US-13` | +| ۱۰ | دکمهٔ «ثبت نتیجه» | دکمهٔ اصلی | — | تغییر وضعیت به «تعمیر انجام‌شده» | `US-13` | +| ۱۱ | دکمهٔ «درخواست اطلاعات» | دکمهٔ ثانویه | — | باز شدن فرم درخواست | `FR-13`، `US-14` | +| ۱۲ | فرم درخواست اطلاعات | ناحیهٔ متنی + دکمه | متن درخواست | ارسال به گزارش‌دهنده | `US-14`، `AD-04` | +| ۱۳ | تاریخچه | تایم‌لاین | — | — | `FR-16` | + +> **پرسش باز ۶:** مکانیزم دقیق «انتظار برای دریافت اطلاعات» در `AD-04` علامت‌گذاری شده است. آیا وضعیت گزارش باید تغییر کند؟ تا تصمیم‌گیری، رابط کاربری فقط نشانگر «در انتظار پاسخ» نمایش می‌دهد و وضعیت گزارش را تغییر نمی‌دهد. + +### ۴.۷. `SCR-09` — داشبورد مدیریتی + +```text +┌──────────────────────────────────────────────────────────────┐ +│ [۱] [۲] │ +├──────────────┬───────────────────────────────────────────────┤ +│ [M1] │ [۳] │ +│ [M2] │ ┌───────────┬───────────┬───────────┐ │ +│ │ │ [۴] │ [۵] │ [۶] │ │ +│ │ └───────────┴───────────┴───────────┘ │ +│ │ [۷] │ +│ │ ┌──────────────────────────────────────────┐ │ +│ │ │ [۸] │ │ +│ │ └──────────────────────────────────────────┘ │ +└──────────────┴───────────────────────────────────────────────┘ +``` + +| # | عنصر | نوع | محتوا | مرجع | +|---|---|---|---|---| +| ۳ | عنوان | تیتر | «داشبورد» | `US-17` | +| ۴ | کارت آمار | کارت | تعداد گزارش‌های باز | `FR-17` | +| ۵ | کارت آمار | کارت | تعداد درخواست‌های فوری | `FR-17`، `US-17` | +| ۶ | کارت آمار | کارت | تعداد کل گزارش‌ها | `FR-17` | +| ۷ | نمودار / فهرست | ناحیه | توزیع گزارش‌ها بر اساس وضعیت | `FR-17` | +| ۸ | فهرست کوتاه | جدول | آخرین گزارش‌های فوری | `US-17` | + +> **تفکیک نقش:** مدیر فقط مشاهده دارد (`FR-17`، `US-17`). کارمند تأسیسات علاوه بر داشبورد به `SCR-05` و `SCR-06` هم دسترسی دارد. سطح دسترسی کامل مدیر پرسش باز ۹ در `activity.md` است. + +### ۴.۸. `SCR-12` — مودال تأیید یا رد تعمیر + +```text +┌──────────────────────────────────────────────────────────────┐ +│ [۱] │ +│ ┌────────────────────────────────────────────────────────┐ │ +│ │ [۲] │ │ +│ │ [۳] │ │ +│ │ ┌────────────────────────────────────────────────────┐ │ │ +│ │ │ [۴] │ │ │ +│ │ └────────────────────────────────────────────────────┘ │ │ +│ │ [۵] │ │ +│ │ [۶] [۷] │ │ +│ └────────────────────────────────────────────────────────┘ │ +└──────────────────────────────────────────────────────────────┘ +``` + +| # | عنصر | نوع | محتوا | رفتار | مرجع | +|---|---|---|---|---|---| +| ۱ | پوشش پس‌زمینه | لایه | — | کلیک بیرون: بستن مودال | — | +| ۲ | عنوان مودال | تیتر | «تأیید یا رد تعمیر» | — | `US-05` | +| ۳ | نتیجهٔ تعمیر | متن | توضیحات ثبت‌شده | — | `FR-12` | +| ۴ | دلیل رد | ناحیهٔ متنی | فقط اگر «رد» انتخاب شود | اجباری در حالت رد | `US-05.feature` | +| ۵ | ناحیهٔ خطا | پیام | — | «ذکر دلیل رد الزامی است» | `US-05.feature` | +| ۶ | دکمهٔ تأیید | دکمهٔ اصلی | «تأیید تکمیل تعمیر» | بستن گزارش | `FR-14` | +| ۷ | دکمهٔ رد | دکمهٔ خطر | «رد تعمیر» | ثبت رد + پیگیری | `US-05.feature` | + +**حالت‌های خطا:** + +| حالت | پیام | رفتار | مرجع | +|---|---|---|---| +| رد بدون دلیل | «ذکر دلیل رد الزامی است» | وضعیت بدون تغییر می‌ماند | `US-05.feature` | +| کاربر غیرمجاز | «دسترسی مجاز نیست» | وضعیت بدون تغییر | `US-05.feature` | +| وضعیت نامناسب | «این گزارش در وضعیت قابل تأیید نیست» | عملیات انجام نمی‌شود | `US-05.feature` | +| کلیک دوباره | — | فقط یک تغییر وضعیت و یک ورودی تاریخچه | `US-05.feature` | + +## ۵. اجزای مشترک (Component Inventory) + +| شناسه | جزء | توضیح | استفاده در | مرجع | +|---|---|---|---|---| +| `CMP-01` | بج وضعیت | نمایش `label_fa` با رنگ متناظر | `SCR-02`، `SCR-04`، `SCR-05`، `SCR-06`، `SCR-07` | `FR-11` | +| `CMP-02` | بج اولویت | نمایش `label_fa` با رنگ متناظر | `SCR-05`، `SCR-06`، `SCR-07` | `FR-07` | +| `CMP-03` | جدول داده | ستون‌بندی، مرتب‌سازی، صفحه‌بندی | `SCR-02`، `SCR-05`، `SCR-07` | `NFR-04` | +| `CMP-04` | فیلد فرم با اعتبارسنجی | برچسب + نشان اجباری + پیام خطای درجا | `SCR-01`، `SCR-03`، `SCR-12` | `US-01.feature` | +| `CMP-05` | تایم‌لاین تاریخچه | فهرست رویدادهای `report_history` | `SCR-04`، `SCR-06`، `SCR-08` | `FR-16` | +| `CMP-06` | آپلود تصویر | انتخاب و پیش‌نمایش تصویر | `SCR-04` | `FR-04` | +| `CMP-07` | زنگ اعلان | شمارندهٔ خوانده‌نشده + لینک به `SCR-10` | همهٔ صفحات داخلی | `US-16` | +| `CMP-08` | نوار پیام | پیام موفقیت/خطای سطح صفحه | همهٔ صفحات | `NFR-03` | +| `CMP-09` | منوی نقش‌محور | آیتم‌های منو بر اساس نقش | همهٔ صفحات داخلی | `FR-02` | +| `CMP-10` | کادر تأیید | برای اقدام‌های برگشت‌ناپذیر (بستن گزارش) | `SCR-12` | `US-05` | + +## ۶. قرارداد رنگی (پیشنهادی) + +> رنگ‌ها **پیشنهادی** هستند و باید با پرسش باز ۲۴ تأیید شوند. + +| وضعیت / اولویت | رنگ پیشنهادی | توضیح | +|---|---|---| +| ثبت‌شده | خاکستری | تازه ثبت شده، هنوز بررسی نشده | +| ارجاع‌شده | آبی | در انتظار شروع تعمیر | +| در حال تعمیر | نارنجی | در جریان | +| تعمیر انجام‌شده | سبز روشن | در انتظار بازخورد گزارش‌دهنده | +| بسته‌شده | سبز تیره | پایان یافته | +| اولویت کم | خاکستری | — | +| اولویت متوسط | آبی | — | +| اولویت زیاد | نارنجی | — | +| اولویت فوری | قرمز | باید در داشبورد برجسته شود (`US-17`) | + +> **الزام دسترس‌پذیری:** رنگ نباید تنها حامل معنا باشد؛ متن برچسب همیشه در کنار رنگ نمایش داده می‌شود. + +## ۷. پیام‌های استاندارد رابط کاربری + +این جدول، **متن دقیق** پیام‌ها را از فایل‌های Feature استخراج کرده تا در پیاده‌سازی، متن تغییر نکند: + +| شناسه | متن پیام | شرایط | مرجع | +|---|---|---|---| +| `MSG-01` | «این فیلد الزامی است» | فیلد اجباری خالی | `US-01.feature`، `US-15.feature` | +| `MSG-02` | «حداکثر طول عنوان ۱۵۰ کاراکتر است» | عنوان بیش از ۱۵۰ کاراکتر | `US-01.feature` | +| `MSG-03` | «خطا در ثبت گزارش؛ لطفاً دوباره تلاش کنید» | خطای سرور در ذخیره | `US-01.feature` | +| `MSG-04` | «نام کاربری یا رمز عبور اشتباه است» | اعتبارنامهٔ نامعتبر | `US-15.feature` | +| `MSG-05` | «خطا در ورود؛ لطفاً بعداً تلاش کنید» | سرویس احراز هویت در دسترس نیست | `US-15.feature` | +| `MSG-06` | «دسترسی مجاز نیست» | تلاش برای دسترسی غیرمجاز | `US-15.feature`، `US-05.feature` | +| `MSG-07` | «ذکر دلیل رد الزامی است» | رد تعمیر بدون دلیل | `US-05.feature` | +| `MSG-08` | «این گزارش در وضعیت قابل تأیید نیست» | تأیید در وضعیت نامناسب | `US-05.feature` | + +## ۸. نکات و پرسش‌های باز + +| # | پرسش | اثر | +|---|---|---| +| ۲۳ | فناوری و فریم‌ورک رابط کاربری چیست؟ | تعیین روش پیاده‌سازی همهٔ صفحات | +| ۲۴ | پالت رنگی و هویت بصری دانشگاه چیست؟ | بخش ۶ موقت است | +| ۲۵ | آیا رابط کاربری باید واکنش‌گرا (موبایل) باشد؟ | در `NFR-03` صریح نیست؛ بر چیدمان جدول‌ها اثر دارد | +| ۲۶ | سطح دسترسی دقیق مدیر (پرسش باز ۹ در `activity.md`) چیست؟ | تعیین آیتم‌های منوی مدیر | +| ۲۷ | آیا گزارش‌دهنده می‌تواند در هر زمان اطلاعات تکمیلی اضافه کند یا فقط پس از درخواست؟ | رفتار دکمهٔ «افزودن اطلاعات» در `SCR-04` | +| ۲۸ | کانال اعلان (پرسش باز ۸) چیست؟ | محتوای `SCR-10` و `CMP-07` | +| ۲۹ | آیا صفحهٔ «پروفایل کاربر» یا «تغییر رمز» لازم است؟ | در مستندات نیامده | +| ۳۰ | آیا گزارش‌دهنده می‌تواند گزارش خود را ویرایش یا لغو کند؟ | در مستندات نیامده | + +> **پرسش ۲۷ مهم است:** `AD-02` این را به‌عنوان نکتهٔ مدل‌سازی علامت زده و `US-04` زمان آن را محدود نکرده است. تا تصمیم‌گیری، رابط کاربری دکمهٔ «افزودن اطلاعات» را فقط پس از درخواست نمایش می‌دهد (محافظه‌کارانه‌ترین حالت). + +--- + +**وضعیت سند:** نسخه اولیه (Draft) – آماده بازبینی \ No newline at end of file