84 خطوط
6.7 KiB
Markdown
84 خطوط
6.7 KiB
Markdown
# گزارش اجرای فاز ۳ پنل مدیر
|
||
|
||
تاریخ اجرا: ۱۴۰۵/۰۵/۲۹ (2026-08-20)
|
||
|
||
## محدوده اجراشده
|
||
|
||
- بخش مستقل «تخصیص آموزش» به ناوبری مدیر اضافه شد.
|
||
- جریان ساده و پنجمرحلهای مخاطب، آموزش، مهلت، اعلان و بازبینی پیادهسازی شد.
|
||
- مدیر میتواند یک تیم تحت مدیریت یا چند کارمند مشخص از همان محدوده را انتخاب کند.
|
||
- فقط نسخههای منتشرشده دورهها و مسیرهای یادگیری در انتخاب آموزش نمایش داده میشوند.
|
||
- سه حالت بدون مهلت، تاریخ مشخص و مهلت نسبی پشتیبانی میشود.
|
||
- اعلان فوری، یادآوری قبل از مهلت، یادآوری روز مهلت و شرط «فقط اگر شروع نشده» قابل تنظیم است.
|
||
- پیش از ثبت، خلاصه کامل تصمیم نمایش داده میشود و پس از ثبت، تعداد تخصیص موفق، تکراری، اعلان ارسالشده، ردشده و زمانبندیشده گزارش میشود.
|
||
- فهرست تخصیصهای اخیر مدیر با امکان تغییر/حذف مهلت و ارسال یادآوری اضافه شد.
|
||
- اقدامهای «تخصیص آموزش» و «ارسال یادآوری» از پروفایل کارمند، با deep-link و فیلتر همان کارمند، به جریان جدید متصل شدند.
|
||
|
||
## قرارداد API و مجوزها
|
||
|
||
Endpointهای اختصاصی و محدود به مدیر:
|
||
|
||
- `GET /api/v1/manager/assignment-contexts`
|
||
- `GET /api/v1/manager/assignments`
|
||
- `POST /api/v1/manager/assignments`
|
||
- `PATCH /api/v1/manager/assignments/{assignment}/deadline`
|
||
- `POST /api/v1/manager/assignments/{assignment}/reminders`
|
||
|
||
مجوزهای افزودهشده:
|
||
|
||
- `manager.assignments.manage`
|
||
- `manager.deadlines.manage`
|
||
- `manager.reminders.send`
|
||
|
||
Endpoint عمومی سازمان برای assignment همچنان برای مدیر ممنوع است. مجوزهای جدید فقط جریان محدودشده مدیر را فعال میکنند.
|
||
|
||
## امنیت، Scope و یکپارچگی داده
|
||
|
||
- مخاطبان در backend از تیمهای تحت مدیریت و اعضای فعال آنها استخراج میشوند؛ شناسه ارسالی کلاینت منبع اعتماد نیست.
|
||
- ساخت، مشاهده، تغییر مهلت و یادآوری فقط برای تخصیصهایی مجاز است که مدیر ساخته و همه گیرندگان آن همچنان داخل scope او باشند.
|
||
- دوره Draft یا محتوای خصوصی از context حذف و در mutation نیز رد میشود.
|
||
- تخصیص فعال تکراری در سطح هر گیرنده رد میشود؛ گیرندگان غیرتکراری همان درخواست همچنان ثبت میشوند.
|
||
- ساخت تخصیص، تغییر مهلت و ارسال یادآوری در audit log ثبت میشوند.
|
||
- reminder دستی دارای کلید idempotency روزانه است تا ارسال تکراری ناخواسته رخ ندهد.
|
||
- مسیر یادآوری با rate limit مستقل محافظت شده است.
|
||
|
||
## معماری اعلان و زمانبندی
|
||
|
||
- ارسال واقعی از کانال In-App موجود انجام میشود و Notification Center یادگیرنده را تغذیه میکند.
|
||
- جدول `notification_schedules` برای اعلانهای آینده، وضعیت تحویل، شرط، خطا و کلید idempotency اضافه شد.
|
||
- فرمان `notifications:process-schedules` هر دقیقه توسط scheduler اجرا میشود.
|
||
- هنگام تحویل، تکمیل/لغو assignment و شرط «شروع نشده» دوباره ارزیابی میشود.
|
||
- با تغییر مهلت، reminderهای در انتظار لغو و بر اساس مهلت جدید زمانبندی میشوند؛ با حذف مهلت لغو میشوند.
|
||
- تنظیمات `inAppNotifications`، `assignmentNotifications` و `deadlineReminders` کاربر رعایت میشوند؛ اعلانهای الزامی از اعلان اختیاری تفکیک شدهاند.
|
||
- لایه orchestration از کانال تحویل جدا است و برای اتصال بعدی Web/PWA/FCM آماده است؛ هیچ اتصال ساختگی FCM یا Push اضافه نشده است.
|
||
|
||
## تصمیمهای UI/UX
|
||
|
||
- طراحی با tokenها، RTL، dark mode و ترجمه فارسی/انگلیسی موجود هماهنگ نگه داشته شد.
|
||
- هر مرحله یک تصمیم مشخص دارد و خطا پیش از عبور از همان مرحله با `role="alert"` اعلام میشود.
|
||
- ورودیها label واقعی، دکمه آیکونی بستن نام قابلدسترسی و ترتیب طبیعی keyboard دارند.
|
||
- وضعیتها تنها با رنگ منتقل نمیشوند و متن/آیکن مکمل دارند.
|
||
- motion محدود است و `prefers-reduced-motion` رعایت میشود.
|
||
- در پروفایل کارمند، لینک تخصیص ویزارد را برای همان شخص باز میکند؛ لینک یادآوری فقط تخصیصهای مرتبط با او را فیلتر میکند.
|
||
|
||
## تست و راستیآزمایی
|
||
|
||
- Backend کامل: ۱۶۲ تست و ۱۱۰۲ assertion پاس.
|
||
- Frontend کامل: ۳۱ فایل و ۹۸ تست پاس.
|
||
- تست متمرکز Manager frontend: ۷ تست پاس.
|
||
- تست متمرکز Manager backend: ۷ تست و ۵۸ assertion پاس.
|
||
- TypeScript typecheck، lint، Pint و build تولیدی پاس.
|
||
- migration زمانبندی اعلان با موفقیت اجرا شد.
|
||
- Playwright فاز ۳ در Chrome: ۲ تست پاس؛ ویزارد پنجمرحلهای و عرضهای ۳۷۵، ۷۶۸ و ۱۴۴۰ پیکسل بدون overflow بررسی شدند.
|
||
- build هشدار قدیمی chunkهای بزرگتر از ۵۰۰ کیلوبایت را دارد؛ این هشدار مانع build نیست و به این فاز اختصاص ندارد.
|
||
- PHPStan در وابستگیهای نصبشده پروژه وجود ندارد؛ بنابراین اجرای آن ممکن نبود و جایگزین نتایج آن ادعا نشده است.
|
||
|
||
## خارج از محدوده این فاز
|
||
|
||
- قابلیتهای Skills، Insights، Reports و Approvals فاز ۴
|
||
- bulk deadline extension فراتر از نیاز واقعی فعلی
|
||
- اتصال تولیدی Web Push، PWA Push یا FCM
|
||
- هرگونه redesign سراسری پنل مدیر
|
||
|
||
فاز ۳ در همین نقطه متوقف شده است و فاز ۴ شروع نشده است.
|