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

6.7 KiB
خام سرزنش تاریخچه

گزارش اجرای فاز ۳ پنل مدیر

تاریخ اجرا: ۱۴۰۵/۰۵/۲۹ (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 سراسری پنل مدیر

فاز ۳ در همین نقطه متوقف شده است و فاز ۴ شروع نشده است.