New_Micro_Learning/docs/manager-phase-3-report.md

84 خطوط
6.7 KiB
Markdown
خام پیوند همیشگی سرزنش تاریخچه

مخزن ambiguous runes header

راهنمای مخزن ambiguous runes توضیحات

# گزارش اجرای فاز ۳ پنل مدیر
تاریخ اجرا: ۱۴۰۵/۰۵/۲۹ (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 سراسری پنل مدیر
فاز ۳ در همین نقطه متوقف شده است و فاز ۴ شروع نشده است.