Standardize analysis docs and add user story features (#25)

Align docs/analysis files on one structure: metadata header, unnumbered
"مقدمه", numbered sections, and a final "نکات و پرسش‌های باز" section.

- user-story.md: add "نیازمندی‌های مرتبط" (FR refs) to each US, number
  the sections, and update the last-updated date
- requirements-specification.md: define "گزارش‌دهنده" and align the
  closing section name
- activity.md: add metadata header and مقدمه, drop English actor labels,
  give each diagram an AD-NN id, and add a status line
- CONTRIBUTING.md: record the analysis docs standard as section ۷
- features/: Gherkin scenarios for US-01, US-05 and US-15
This commit is contained in:
2026-11-02 22:29:14 +03:30
committed by GitHub
parent 8b73b8abd6
commit 407596264f
7 changed files with 355 additions and 153 deletions
+42
View File
@@ -0,0 +1,42 @@
# مرجع: US-01 ، FR-03 ، FR-05 ، AD-02
Feature: ثبت خرابی توسط دانشجو
به عنوان یک دانشجو
می‌خواهم خرابی مشاهده‌شده را به همراه مکان و توضیحات ثبت کنم
تا بتوانم مشکل را سریع به بخش تأسیسات اطلاع دهم و پیگیری کنم
Background:
Given کاربری با نقش "دانشجو" و نام کاربری "student1" وارد سامانه شده است
Scenario: ثبت موفق گزارش خرابی با اطلاعات کامل
When فرم ثبت گزارش را با عنوان "چراغ کلاس ۱۰۲ روشن نمی‌شود"، توضیحات "کلید برق کار نمی‌کند"، محل "ساختمان الف - کلاس ۱۰۲" و نوع تجهیز "روشنایی" ارسال می‌کند
Then گزارش با وضعیت "ثبت‌شده" ذخیره می‌شود
And شناسه یکتای گزارش نمایش داده می‌شود
And گزارش در فهرست "گزارش‌های من" دانشجو دیده می‌شود
Scenario Outline: ارسال فرم با یک فیلد اجباری خالی
When فرم ثبت گزارش را با فیلد "<فیلد>" خالی ارسال می‌کند
Then پیام خطای "این فیلد الزامی است" کنار "<فیلد>" نمایش داده می‌شود
And هیچ گزارشی ذخیره نمی‌شود
Examples:
| فیلد |
| عنوان |
| توضیحات |
| محل خرابی |
| نوع تجهیز |
Scenario: عنوان با طول مرزی ۱۵۰ کاراکتر پذیرفته می‌شود
When فرم ثبت گزارش را با عنوانی به طول ۱۵۰ کاراکتر و سایر فیلدهای معتبر ارسال می‌کند
Then گزارش با وضعیت "ثبت‌شده" ذخیره می‌شود
Scenario: عنوان با ۱۵۱ کاراکتر رد می‌شود
When فرم ثبت گزارش را با عنوانی به طول ۱۵۱ کاراکتر و سایر فیلدهای معتبر ارسال می‌کند
Then پیام خطای "حداکثر طول عنوان ۱۵۰ کاراکتر است" نمایش داده می‌شود
And هیچ گزارشی ذخیره نمی‌شود
Scenario: خطای سرور هنگام ذخیره‌سازی
Given سرویس ذخیره‌سازی در دسترس نیست
When فرم ثبت گزارش را با اطلاعات معتبر ارسال می‌کند
Then پیام "خطا در ثبت گزارش؛ لطفاً دوباره تلاش کنید" نمایش داده می‌شود
And مقادیر واردشده در فرم حفظ می‌شوند
And هیچ گزارش ناقصی ذخیره نمی‌شود
+51
View File
@@ -0,0 +1,51 @@
# مرجع: US-05 ، FR-14 ، AD-05
Feature: تأیید یا رد نتیجه تعمیر توسط گزارش‌دهنده
به عنوان یک دانشجو یا استاد
می‌خواهم پس از اعلام رفع خرابی، آن را تأیید یا رد کنم
تا بتوانم از بسته شدن صحیح گزارش مطمئن شوم
Background:
Given گزارش شماره "R-100" با وضعیت "تعمیر انجام‌شده" و گزارش‌دهنده "student1" وجود دارد
Scenario: تأیید نتیجه تعمیر توسط گزارش‌دهنده
Given کاربر "student1" وارد سامانه شده است
When نتیجه تعمیر گزارش "R-100" را تأیید می‌کند
Then وضعیت گزارش "R-100" به "بسته‌شده" تغییر می‌کند
And تاریخچه گزارش ثبت تأیید گزارش‌دهنده را نشان می‌دهد
Scenario: رد نتیجه تعمیر بدون ذکر دلیل
Given کاربر "student1" وارد سامانه شده است
When نتیجه تعمیر گزارش "R-100" را با دلیل خالی رد می‌کند
Then پیام خطای "ذکر دلیل رد الزامی است" نمایش داده می‌شود
And وضعیت گزارش "R-100" بدون تغییر "تعمیر انجام‌شده" می‌ماند
Scenario: رد نتیجه تعمیر با ذکر دلیل
Given کاربر "student1" وارد سامانه شده است
When نتیجه تعمیر گزارش "R-100" را با دلیل "خرابی هنوز برطرف نشده است" رد می‌کند
Then دلیل رد در تاریخچه گزارش ثبت می‌شود
And گزارش برای پیگیری بیشتر علامت‌گذاری می‌شود
Scenario: کاربر دیگری نمی‌تواند نتیجه تعمیر را تأیید کند
Given کاربر "student2" وارد سامانه شده است
When سعی می‌کند نتیجه تعمیر گزارش "R-100" را تأیید کند
Then پیام "دسترسی مجاز نیست" نمایش داده می‌شود
And وضعیت گزارش "R-100" بدون تغییر "تعمیر انجام‌شده" می‌ماند
Scenario Outline: تأیید یا رد فقط در وضعیت "تعمیر انجام‌شده" مجاز است
Given گزارش "R-101" با وضعیت "<وضعیت>" وجود دارد
When کاربر "student1" سعی می‌کند نتیجه تعمیر گزارش "R-101" را تأیید کند
Then عملیات انجام نمی‌شود
And پیام "این گزارش در وضعیت قابل تأیید نیست" نمایش داده می‌شود
Examples:
| وضعیت |
| ثبت‌شده |
| ارجاع‌شده |
| در حال تعمیر |
| بسته‌شده |
Scenario: کلیک دوباره روی تأیید یک تغییر وضعیت بیشتر ایجاد نمی‌کند
Given کاربر "student1" وارد سامانه شده است
When دو بار پشت سر هم روی دکمه تأیید کلیک می‌کند
Then وضعیت گزارش "R-100" فقط یک بار به "بسته‌شده" تغییر می‌کند
And تاریخچه گزارش فقط یک ورودی تأیید دارد
+47
View File
@@ -0,0 +1,47 @@
# مرجع: US-15 ، FR-01 ، FR-02 ، AD-01
Feature: ورود به سامانه
به عنوان یک کاربر سیستم
می‌خواهم با نام کاربری و رمز عبور وارد سامانه شوم
تا بتوانم به امکانات مربوط به نقش خودم دسترسی داشته باشم
Scenario: ورود موفق و انتقال به داشبورد نقش کاربر
Given کاربری با نام کاربری "student1" و رمز عبور معتبر وجود دارد
When نام کاربری "student1" و رمز عبور معتبر را وارد و فرم را ارسال می‌کند
Then کاربر وارد سامانه می‌شود
And صفحه ثبت گزارش خرابی برای نقش "دانشجو" نمایش داده می‌شود
Scenario: رمز عبور اشتباه
Given کاربری با نام کاربری "student1" وجود دارد
When نام کاربری "student1" و رمز عبور "اشتباه" را وارد می‌کند
Then پیام "نام کاربری یا رمز عبور اشتباه است" نمایش داده می‌شود
And پیام مشخص نمی‌کند کدام فیلد اشتباه است
And نام کاربری "student1" در فرم باقی می‌ماند
And کاربر وارد سامانه نمی‌شود
Scenario Outline: ارسال فرم ورود با فیلد خالی
When فرم ورود را با "<فیلد خالی>" خالی ارسال می‌کند
Then ورود انجام نمی‌شود
And پیام "این فیلد الزامی است" کنار "<فیلد خالی>" نمایش داده می‌شود
Examples:
| فیلد خالی |
| نام کاربری |
| رمز عبور |
Scenario: دسترسی به صفحه نقش دیگر مجاز نیست
Given کاربر "student1" با نقش "دانشجو" وارد سامانه شده است
When آدرس صفحه داشبورد کارمند تأسیسات را مستقیم باز می‌کند
Then پیام "دسترسی مجاز نیست" نمایش داده می‌شود
And هیچ اطلاعات گزارش مدیریتی نمایش داده نمی‌شود
Scenario: خروج از سامانه و محافظت از صفحات
Given کاربر "student1" وارد سامانه شده است
When از سامانه خارج می‌شود
And سپس آدرس صفحه ثبت گزارش را باز می‌کند
Then کاربر به صفحه ورود هدایت می‌شود
Scenario: سرویس احراز هویت در دسترس نیست
Given سرویس احراز هویت در دسترس نیست
When نام کاربری و رمز عبور معتبر را ارسال می‌کند
Then پیام "خطا در ورود؛ لطفاً بعداً تلاش کنید" نمایش داده می‌شود
And کاربر وارد سامانه نمی‌شود