# نمودارهای فعالیت (Activity Diagrams) – سامانه مدیریت و گزارش خرابی دانشگاهی **تهیه‌کننده:** ارشیا همتی‌زاده **بازبین:** رضا آدوسی **آخرین به‌روزرسانی:** ۱۴۰۵/۰۸/۱۱ --- ## مقدمه این سند جریان‌های کاری اصلی سامانه گزارش و مدیریت خرابی‌های دانشگاه را با استفاده از Mermaid نمایش می‌دهد. > **نکته:** نمودارها بر اساس بازیگران و ۱۷ داستان کاربر شناسایی‌شده در [user-story.md](user-story.md) تهیه شده‌اند. جزئیاتی که در [نیازمندی‌ها](requirements-specification.md) صریحاً مشخص نشده‌اند، به‌عنوان فرض یا پرسش باز علامت‌گذاری شده‌اند و نباید قانون قطعی سیستم تلقی شوند. ## ۱. بازیگران و مسئولیت‌ها | بازیگر | مسئولیت‌ها | |---|---| | دانشجو | ثبت و پیگیری گزارش خرابی، ارائه اطلاعات تکمیلی و تأیید یا رد نتیجه تعمیر | | استاد | ثبت و پیگیری گزارش خرابی، ارائه اطلاعات تکمیلی و تأیید یا رد نتیجه تعمیر | | کارمند تأسیسات | بررسی و فیلتر گزارش‌ها، تعیین اولویت، تخصیص تعمیرکار، به‌روزرسانی وضعیت و مشاهده تاریخچه | | تعمیرکار | مشاهده مأموریت‌های تخصیص‌یافته، شروع تعمیر، ثبت نتیجه و درخواست اطلاعات تکمیلی | | مدیر | مشاهده داشبورد مدیریتی؛ سطح دسترسی دقیق این نقش باید در نیازمندی‌ها مشخص شود | | کاربر سیستم | عنوان عمومی کاربر احراز هویت‌شده در داستان‌های ورود و اعلان؛ لزوماً یک نقش انسانی مستقل نیست | ## ۲. نمودار فعالیت احراز هویت (AD-01) **داستان کاربر مرتبط:** US-15 — ورود به سیستم. این نمودار فرایند عمومی ورود کاربر را نشان می‌دهد. روش دقیق احراز هویت، بازیابی رمز عبور و سیاست قفل حساب در این بخش مشخص نشده‌اند. ```mermaid flowchart TD A([شروع]) --> B[باز کردن صفحه ورود] B --> C[وارد کردن نام کاربری و رمز عبور] C --> D[ارسال فرم ورود] D --> E{آیا اطلاعات ورود معتبر هستند؟} E -->|خیر| F[نمایش خطای ورود] F --> C E -->|بله| G[احراز هویت کاربر] G --> H[تشخیص نقش کاربر] H --> I[نمایش داشبورد متناسب با نقش کاربر] I --> J([پایان]) ``` ## ۳. نمودار فعالیت ثبت گزارش خرابی (AD-02) **داستان‌های کاربر مرتبط:** - US-01 — دانشجو گزارش خرابی ثبت می‌کند. - US-02 — استاد گزارش خرابی ثبت می‌کند. - US-03 — دانشجو یا استاد وضعیت گزارش را پیگیری می‌کند. - US-04 — دانشجو یا استاد اطلاعات تکمیلی ارائه می‌دهد. دانشجو و استاد از جریان کاری کلی یکسانی برای گزارش خرابی استفاده می‌کنند؛ بنابراین در یک گروه مسئولیت نمایش داده شده‌اند. ```mermaid flowchart TD subgraph Reporter["دانشجو / استاد"] A([شروع]) --> B[باز کردن صفحه ثبت گزارش خرابی] B --> C[وارد کردن جزئیات خرابی] C --> D[ثبت و ارسال گزارش خرابی] H[اصلاح اطلاعات گزارش] I[مشاهده وضعیت گزارش] J[ارائه اطلاعات تکمیلی] end subgraph System["سیستم"] E{آیا اطلاعات واردشده معتبر هستند؟} F[نمایش خطاهای اعتبارسنجی] G[ذخیره گزارش خرابی] K[قرار دادن گزارش در فهرست گزارش‌های قابل بررسی] L[نمایش وضعیت فعلی گزارش] end D --> E E -->|خیر| F F --> H H --> D E -->|بله| G G --> K K --> I I --> L L --> M{آیا اطلاعات تکمیلی درخواست شده است؟} M -->|بله| J J --> K M -->|خیر| N([پایان]) ``` **نکته مدل‌سازی:** حلقه اصلاح اطلاعات، اعتبارسنجی فرم را نمایش می‌دهد. باید مشخص شود آیا کاربر می‌تواند در هر زمان اطلاعات تکمیلی ارسال کند یا فقط پس از درخواست کارمند تأسیسات یا تعمیرکار مجاز به این کار است. ## ۴. نمودار فعالیت مدیریت گزارش‌ها (AD-03) **داستان‌های کاربر مرتبط:** - US-06 — مشاهده و فیلتر گزارش‌های باز. - US-07 — تعیین اولویت گزارش. - US-08 — تخصیص تعمیرکار. - US-09 — به‌روزرسانی وضعیت گزارش. - US-10 — مشاهده تاریخچه گزارش. - US-17 — مشاهده داشبورد توسط کارمند تأسیسات یا مدیر. ```mermaid flowchart TD subgraph Staff["کارمند تأسیسات"] A([شروع]) --> B[باز کردن داشبورد مدیریت گزارش‌ها] B --> C[مشاهده و فیلتر گزارش‌های باز] C --> D[انتخاب یک گزارش] E[بررسی جزئیات گزارش] F[تعیین اولویت گزارش] G[انتخاب تعمیرکار مناسب] H[به‌روزرسانی وضعیت گزارش] I[مشاهده تاریخچه گزارش] end subgraph System["سیستم"] J[نمایش گزارش انتخاب‌شده] K{آیا گزارش آماده تخصیص است؟} L[درخواست یا ثبت اطلاعات ناقص] M[ذخیره اولویت] N[ذخیره تخصیص تعمیرکار] O[ذخیره تغییر وضعیت] P[در دسترس قرار دادن مأموریت برای تعمیرکار] end D --> J J --> E E --> K K -->|خیر| L L --> I I --> Q([پایان]) K -->|بله| F F --> M M --> G G --> N N --> P P --> H H --> O O --> I ``` **نکته مدل‌سازی:** تصمیم «آیا گزارش آماده تخصیص است؟» یک مرحله پیشنهادی است. شرایط دقیق تخصیص تعمیرکار و نحوه بازگرداندن گزارش‌های ناقص به گزارش‌دهنده باید در نیازمندی‌ها مشخص شوند. ## ۵. نمودار فعالیت تعمیر خرابی (AD-04) **داستان‌های کاربر مرتبط:** - US-11 — تعمیرکار کارهای تخصیص‌یافته را مشاهده می‌کند. - US-12 — تعمیرکار تعمیر را آغاز می‌کند. - US-13 — تعمیرکار نتیجه تعمیر را ثبت می‌کند. - US-14 — تعمیرکار درخواست اطلاعات تکمیلی می‌دهد. ```mermaid flowchart TD subgraph Technician["تعمیرکار"] A([شروع]) --> B[باز کردن فهرست کارهای تخصیص‌یافته] B --> C[انتخاب یک مأموریت] C --> D[بررسی جزئیات خرابی] E[شروع فرایند تعمیر] F[انجام عملیات تعمیر] G[ثبت نتیجه تعمیر] H[درخواست اطلاعات تکمیلی] end subgraph System["سیستم"] I[نمایش مأموریت تخصیص‌یافته] J[به‌روزرسانی وضعیت گزارش] K{آیا اطلاعات تکمیلی مورد نیاز است؟} L[ارسال درخواست اطلاعات] M[ذخیره نتیجه تعمیر] N[اعلان ثبت نتیجه تعمیر به کاربر مربوطه] end C --> I I --> D D --> E E --> J J --> F F --> K K -->|بله| H H --> L L --> O[انتظار برای دریافت اطلاعات درخواستی] O --> F K -->|خیر| G G --> M M --> N N --> P([پایان]) ``` **نکته مدل‌سازی:** در این نمودار، درخواست اطلاعات تکمیلی باعث توقف موقت تعمیر می‌شود. باید مشخص شود چه کسی اطلاعات را ارائه می‌کند، پس از دریافت اطلاعات چگونه به تعمیرکار اطلاع داده می‌شود و آیا هنگام انتظار وضعیت گزارش تغییر می‌کند یا خیر. ## ۶. نمودار فعالیت تأیید تعمیر (AD-05) **داستان کاربر مرتبط:** US-05 — دانشجو یا استاد تکمیل تعمیر را تأیید یا رد می‌کند. گزارش‌دهنده نتیجه ثبت‌شده تعمیر را بررسی می‌کند و مشخص می‌کند که آیا خرابی برطرف شده است یا خیر. ```mermaid flowchart TD subgraph Reporter["دانشجو / استاد"] A([شروع]) --> B[مشاهده اطلاعات تکمیل تعمیر] B --> C[بررسی نتیجه تعمیر] C --> D{آیا خرابی برطرف شده است؟} E[تأیید تکمیل تعمیر] F[رد تکمیل تعمیر] end subgraph System["سیستم"] G[ثبت تأیید گزارش‌دهنده] H[بستن گزارش] I[ثبت رد نتیجه تعمیر] J[بازگرداندن گزارش برای پیگیری بیشتر] end D -->|بله| E E --> G G --> H H --> K([پایان]) D -->|خیر| F F --> I I --> J J --> L([پایان - نیازمند پیگیری بیشتر]) ``` **پرسش باز:** نیازمندی‌ها باید مشخص کنند پس از رد نتیجه تعمیر چه اتفاقی می‌افتد: آیا گزارش به کارمند تأسیسات بازمی‌گردد، دوباره به همان تعمیرکار تخصیص داده می‌شود یا فرایند دیگری اجرا می‌شود؟ این نمودار هیچ‌یک از این سیاست‌ها را به‌عنوان تصمیم قطعی انتخاب نمی‌کند. ## ۷. نمودار کلی چرخه عمر گزارش خرابی (AD-06) این نمودار نمایی کلی از فرایند اصلی سیستم ارائه می‌دهد و مراحل ثبت گزارش، مدیریت، تعمیر و تأیید را به یکدیگر متصل می‌کند. ```mermaid flowchart TD A([شروع]) --> B[ثبت گزارش خرابی توسط دانشجو یا استاد] B --> C{آیا گزارش معتبر است؟} C -->|خیر| D[اصلاح اطلاعات گزارش توسط گزارش‌دهنده] D --> B C -->|بله| E[ذخیره گزارش توسط سیستم] E --> F[بررسی گزارش توسط کارمند تأسیسات] F --> G{آیا اطلاعات بیشتری مورد نیاز است؟} G -->|بله| H[درخواست اطلاعات تکمیلی] H --> I[ارائه اطلاعات توسط گزارش‌دهنده] I --> F G -->|خیر| J[تعیین اولویت توسط کارمند تأسیسات] J --> K[تخصیص تعمیرکار توسط کارمند تأسیسات] K --> L[مشاهده مأموریت توسط تعمیرکار] L --> M[شروع فرایند تعمیر توسط تعمیرکار] M --> N{آیا تعمیرکار به اطلاعات بیشتری نیاز دارد؟} N -->|بله| O[درخواست اطلاعات توسط تعمیرکار] O --> P[ارائه اطلاعات درخواستی] P --> M N -->|خیر| Q[ثبت نتیجه تعمیر توسط تعمیرکار] Q --> R[بررسی نتیجه تعمیر توسط گزارش‌دهنده] R --> S{آیا گزارش‌دهنده تعمیر را تأیید می‌کند؟} S -->|بله| T[بستن گزارش توسط سیستم] T --> U([پایان]) S -->|خیر| V[ثبت عدم تأیید] V --> W[بازگرداندن گزارش برای پیگیری بیشتر] W --> F ``` **نکته مدل‌سازی:** بازگشت گزارش ردشده به مرحله بررسی کارمند تأسیسات، یک مسیر پیشنهادی برای پیگیری مجدد است و هنوز سیاست قطعی تخصیص مجدد محسوب نمی‌شود. این مسیر باید با اعضای تیم پروژه بررسی و تأیید شود. ## ۸. نکات و پرسش‌های باز موارد زیر باید پیش از نهایی‌شدن نمودارها با اعضای تیم پروژه مشخص شوند: 1. **اعتبارسنجی گزارش:** کدام فیلدها اجباری هستند و چه شرایطی باعث نامعتبر شدن گزارش می‌شود؟ 2. **رد گزارش:** آیا کارمند تأسیسات می‌تواند گزارش ثبت‌شده را رد کند؟ در صورت امکان، دلایل و وضعیت‌های مربوط به آن چیست؟ 3. **اولویت‌ها:** چه سطوحی برای اولویت وجود دارد و معیار تعیین هر سطح چیست؟ 4. **وضعیت‌های گزارش:** فهرست رسمی وضعیت‌ها و انتقال‌های مجاز بین آن‌ها چیست؟ 5. **تخصیص تعمیرکار:** آیا یک گزارش می‌تواند به چند تعمیرکار تخصیص داده شود یا در هر لحظه فقط یک تعمیرکار مسئول آن است؟ 6. **اطلاعات تکمیلی:** چه افرادی می‌توانند درخواست اطلاعات دریافت کنند و هنگام انتظار برای پاسخ چه اتفاقی می‌افتد؟ 7. **تأیید تعمیر:** پس از رد نتیجه تعمیر توسط گزارش‌دهنده، جریان کاری دقیق چیست؟ 8. **اعلان‌ها:** کدام رویدادها باعث ارسال اعلان می‌شوند، دریافت‌کنندگان چه کسانی هستند و اعلان‌ها از چه کانالی ارسال می‌شوند؟ 9. **دسترسی مدیر:** آیا دسترسی مدیر فقط به مشاهده داشبورد محدود است یا این نقش امکان مدیریت گزارش‌ها را نیز دارد؟ 10. **احراز هویت:** آیا قوانین ورود یا کنترل دسترسی برای نقش‌های مختلف متفاوت است؟ --- **وضعیت سند:** نسخه اولیه (Draft) – آماده بازبینی