# 🚀 انقلاب پنل دانشیار من — نقشه کامل بازطراحی

> هدف: بازطراحی کامل همه پنل‌ها (مدیر کل، مدیر مدرسه، معلم، دانش‌آموز) — منوی کناری ثابت و اسکرول مستقل، تقویم جلالی همه‌جا، متن فارسی خالص، مدیریت پایگاه داده، نمودار و آمار، توضیحات کامل کنار هر بخش.
>
> قانون: هر آیتم انجام شد → `[x]`. فایل زنده است؛ بعد هر موج آپدیت می‌شود.

---

## فاز ۰ — زیرساخت طراحی (Design System)

### توکن‌ها و رنگ
- [x] پالت سبز اصلی حفظ شود (#0EA678) — هویت برند
- [ ] توکن `--color-sidebar-bg` جدا برای پس‌زمینه منوی کناری
- [ ] توکن `--color-sidebar-hover` برای هاور آیتم منو
- [ ] توکن `--color-sidebar-active` برای آیتم فعال
- [x] توکن `--topbar-h` ارتفاع نوار بالا (برای sticky offset)
- [x] توکن `--sidebar-w` عرض منو (280px دسکتاپ / 248px تبلت)
- [ ] سایه‌های سه‌سطحی: soft / card / pop (منوی باز شده)
- [x] رادیوس یکدست: sm=10 / md=16 / lg=24
- [x] رنگ‌های وضعیت: success/warning/danger/info با نسخه soft
- [x] گرادیان برند برای هدر کارت‌های آماری
- [x] رنگ‌های نمودار: پالت ۸تایی هماهنگ با برند
- [x] حالت prefers-reduced-motion برای همه انیمیشن‌های جدید

### تایپوگرافی
- [x] فونت Estedad حفظ؛ وزن‌ها: 400 متن / 600 لیبل / 800 عنوان / 900 عدد
- [x] اعداد فارسی در همه آمارها (persianDigits)
- [ ] اندازه پایه 16px؛ جدول‌ها 14px؛ توضیحات 13px
- [x] line-height 1.9 برای پاراگراف فارسی
- [x] عنوان صفحه h1 در تاپبار؛ h2 سکشن‌ها؛ سلسله‌مراتب درست

### آیکون‌ها
- [x] bootstrap-icons در همه آیتم‌های منو
- [x] آیکون رنگی داخل چیپ (icon-chip) برای هر گروه منو
- [ ] آیکون در هدر همه صفحه‌ها (PageHeader)
- [x] آیکون در همه کارت‌های آماری
- [ ] آیکون در همه دکمه‌های اصلی
- [x] آیکون وضعیت در بج‌ها (تیک/اخطار/ضربدر) — رنگ تنها ملاک نباشد
- [x] آیکون در سلول‌های خالی جدول (EmptyState)

---

## فاز ۱ — پوسته (Shell): منوی ثابت + اسکرول مستقل

### ساختار
- [x] `.dashboard-sidebar` → `position: sticky; top: 0; height: 100dvh; overflow-y: auto`
- [x] اسکرول محتوای اصلی هیچ تاثیری روی منو نداشته باشد
- [x] اسکرول‌بار نازک مخصوص منو (کم‌رنگ، هاور پررنگ)
- [x] منو flex ستونی: هدر برند / جستجو / ناوبری (اسکرول) / فوتر کاربر
- [x] فوتر منو: کارت کوچک کاربر + دکمه خروج همیشه در دید
- [x] لوگو و برند در هدر منو ثابت (sticky داخل منو)
- [x] عرض منو 280px دسکتاپ، 248px تبلت، کشویی موبایل
- [x] موبایل: منو کشویی از راست با overlay تیره + انیمیشن slide
- [x] موبایل: بستن با کلیک بیرون، دکمه ×، و ناوبری
- [x] بدنه صفحه هنگام منوی باز موبایل قفل اسکرول
- [x] تاپبار sticky بالای محتوا با پس‌زمینه شیشه‌ای (blur)
- [x] z-index منظم: sidebar 50 / topbar 40 / overlay 45 / منوی باز 60

### استایل منو
- [x] پس‌زمینه منو: سفید با خط جداکننده ظریف (هویت روشن حفظ)
- [x] آیتم فعال: پس‌زمینه سبز کم‌رنگ + نوار ۳px سمت راست + متن سبز تیره
- [x] هاور: جابجایی ظریف 2px + پس‌زمینه خاکستری روشن
- [x] آیکون هر آیتم داخل چیپ ۳۲px با پس‌زمینه ملایم
- [x] فاصله عمودی آیتم‌ها 2px؛ پدینگ داخلی 10x12
- [x] transition ملایم 150ms روی همه تعامل‌ها

---

## فاز ۲ — ناوبری گروهی + زیرمنو

### گروه‌بندی
- [x] مدل داده منو: Section → (Leaf | Group with children)
- [x] هدر گروه (kicker) با حروف کوچک خاکستری: «آموزش»، «افراد»، «پیامک»...
- [x] گروه‌های بازشونده (accordion) با چرخش chevron
- [x] گروه فعال خودکار باز شود (بر اساس URL)
- [x] وضعیت باز/بسته گروه‌ها در localStorage ذخیره شود
- [x] زیرمنو با خط عمودی راهنما و تورفتگی
- [x] انیمیشن باز/بسته شدن ارتفاع با framer-motion

### جستجوی منو
- [x] فیلد جستجو بالای منو «جستجو در منو...»
- [x] فیلتر زنده؛ گروه‌ها هنگام جستجو همه باز
- [x] پیام «موردی یافت نشد» هنگام فیلتر خالی
- [x] پاک‌کردن جستجو با Escape و دکمه ×

### فارسی‌سازی کامل لیبل‌ها
- [x] «مصرف SMS» → «مصرف پیامک»
- [x] «کیف پول SMS» → «کیف پول پیامک»
- [x] «SMS غیبت‌ها» → «پیامک غیبت»
- [x] «template‌های SMS» → «قالب‌های پیامک»
- [x] «Export Center» → «مرکز خروجی داده»
- [x] «Super Admin» → «مدیر کل سامانه»
- [x] «داشبورد Super Admin» → «داشبورد مدیر کل»
- [x] «audit و login logs» → «رویدادها و ورودها»
- [x] لیبل نقش‌ها همه فارسی در تاپبار و جدول‌ها
- [x] هیچ واژه انگلیسی در هیچ آیتم منو نماند

### چیدمان منوی مدیر مدرسه (owner/principal/moaven)
- [x] بخش «نمای کلی»: داشبورد
- [x] بخش «افراد»: کاربران، دانش‌آموزان، معلمان
- [x] بخش «آموزش»: کلاس‌ها، درس‌ها، برنامه هفتگی
- [x] بخش «ارزیابی»: حضور و غیاب، تایید نمرات، کارنامه، پرغیبت‌ها
- [x] بخش «ارتباطات»: پیام‌رسانی، اطلاعیه‌ها، کلاس آنلاین
- [x] بخش «پیامک»: کیف پول، پیامک غیبت، قالب‌ها (گروه بازشونده)
- [x] بخش «داده‌ها»: فایل‌ها، ورود اطلاعات (زیرمنو ۳تایی)، مرکز خروجی
- [x] بخش «مشارکت»: رأی‌گیری
- [x] بخش «پایش»: فعالیت کاربران، گزارش‌ها، رویدادهای مدرسه
- [x] بخش «تنظیمات»: تنظیمات مدرسه
- [x] گروه «ورود اطلاعات» زیرمنو: دانش‌آموزان / معلمان / کاربران

### چیدمان منوی مدیر کل (super_admin)
- [x] بخش «نمای کلی»: داشبورد
- [x] بخش «مدیریت»: مدارس، ماژول‌ها
- [x] بخش «پیامک»: مصرف پیامک
- [x] بخش «پایگاه داده»: زیرمنوی جدول‌ها (گروه بازشونده)
- [x] بخش «پایش»: گزارش‌ها، رویدادهای سیستم

### منوی معلم و دانش‌آموز
- [x] معلم: «کلاس‌های من»، «آموزش» (تکالیف، امتحانات)، «نمرات» (نمره‌دهی، کارنامه دانش‌آموز)، «حضور و غیاب»
- [x] دانش‌آموز: بدون تغییر ساختار، فقط استایل جدید + گروه‌بندی
- [x] نقش‌های پشتیبانی/مالی: همان لینک‌ها با استایل جدید

---

## فاز ۳ — تقویم جلالی (تاریخ ایرانی همه‌جا)

### کتابخانه تبدیل (persianDate.ts)
- [x] الگوریتم دقیق جلالی↔میلادی (jalaali) بدون وابستگی خارجی
- [x] `toJalali(gy,gm,gd)` و `toGregorian(jy,jm,jd)`
- [x] `jalaliToday()` — امروز جلالی
- [x] `jalaliMonthLength(jy,jm)` و `isLeapJalali(jy)`
- [x] نام ماه‌ها: فروردین ... اسفند
- [x] نام روزهای هفته: شنبه ... جمعه
- [x] `formatJalali(iso)` → «۱۱ تیر ۱۴۰۵»
- [x] `formatJalaliLong(iso)` → «چهارشنبه ۱۱ تیر ۱۴۰۵»
- [x] `formatJalaliDateTime(iso)` → با ساعت
- [x] `jalaliToIso(jy,jm,jd)` برای ارسال به سرور (میلادی Y-m-d)
- [x] `isoToJalaliParts(iso)` برای مقداردهی اولیه فرم‌ها
- [x] اعداد فارسی در همه خروجی‌ها
- [x] تست دستی نقاط مرزی: ۱ فروردین، ۳۰ اسفند کبیسه، ۲۹ اسفند عادی

### کامپوننت JalaliDatePicker
- [x] ورودی readonly با نمایش «۱۴۰۵/۰۴/۱۱»
- [x] popover تقویم RTL زیر ورودی
- [x] شبکه روزها شنبه→جمعه
- [x] روز امروز با حلقه سبز مشخص
- [x] روز انتخاب‌شده با پس‌زمینه سبز پر
- [x] ناوبری ماه قبل/بعد با فلش
- [x] انتخاب سریع ماه (۱۲ دکمه) و سال (لیست ±۵۰)
- [x] دکمه «امروز» و «پاک کردن»
- [x] بستن با کلیک بیرون و Escape
- [x] مقدار واقعی فرم = ISO میلادی (سازگار با بک‌اند فعلی)
- [ ] پشتیبانی min/max (اختیاری)
- [x] روزهای جمعه با رنگ قرمز ملایم
- [x] انیمیشن باز شدن ظریف (scale+fade)
- [x] استفاده در: تمدید مجوز مدرسه، ساخت رأی‌گیری، امتحان، تکلیف، کلاس آنلاین
- [x] جایگزینی همه `<input type="date">` و `datetime-local` موجود (کامپوننت JalaliDateTimePicker)

### نمایش تاریخ در سراسر پنل
- [x] چیپ «امروز: چهارشنبه ۱۱ تیر ۱۴۰۵» در تاپبار
- [x] همه تاریخ‌های جدول‌ها جلالی (بک‌اند jalaliDate از قبل هست — پوشش کامل)
- [x] تاریخ نسبی فارسی: «۳ روز پیش»، «همین حالا» برای لاگ‌ها
- [x] ماه‌های نمودارها با نام جلالی (فروردین، اردیبهشت...)

---

## فاز ۴ — تاپبار جدید
- [x] sticky با blur و خط زیرین ظریف
- [x] عنوان صفحه + آیکون
- [x] چیپ تاریخ جلالی امروز (دسکتاپ)
- [x] آواتار دایره‌ای با حروف اول نام کاربر (رنگ از نام تولید شود)
- [x] نام + بج نقش فارسی رنگی
- [x] دکمه خروج با آیکون و تایید ضمنی (رنگ قرمز فقط هاور)
- [x] همبرگر موبایل با ناحیه لمس ۴۴px
- [x] ریسپانسیو: موبایل فقط همبرگر + عنوان + آواتار

---

## فاز ۵ — کیت کامپوننت (UI Kit)

### PageHeader
- [x] عنوان + آیکون + توضیح کامل فارسی زیر عنوان
- [x] جای اکشن‌ها (دکمه‌ها) سمت چپ
- [ ] در همه صفحه‌ها استفاده شود — هر صفحه توضیح «این صفحه چیست» داشته باشد

### StatCard
- [x] آیکون رنگی + لیبل + عدد فارسی درشت
- [x] tone: سبز/آبی/کهربایی/قرمز
- [x] پشتیبانی لینک (کل کارت کلیک‌پذیر)
- [x] زیرنویس توضیحی اختیاری
- [x] hover: سایه و حرکت ظریف

### EmptyState
- [x] آیکون بزرگ کم‌رنگ + عنوان + توضیح + دکمه اقدام
- [ ] جایگزین همه «موردی وجود ندارد» های خشک

### HelpTip
- [x] آیکون ? کنار عنوان‌ها؛ hover/click → توضیح شناور
- [ ] برای فیلدهای پیچیده فرم‌ها (مثلا «نمره از»، «sort_order»)

### سایر
- [ ] Modal استاندارد (اگر لازم شد در موج بعد)
- [ ] Tabs کامپوننت واحد (به‌جای tab-bar دستی تکراری)
- [ ] SearchInput با آیکون ذره‌بین و دکمه پاک
- [ ] Skeleton خطی برای بارگذاری جدول‌ها (موج بعد)
- [ ] Pagination فارسی یکدست (موج بعد)

---

## فاز ۶ — نمودار و آمار (recharts)

### wrapperهای پایه
- [x] `TrendAreaChart` — روند با گرادیان سبز
- [x] `BarsChart` — میله‌ای با گوشه گرد و tooltip فارسی
- [x] `DonutChart` — دایره‌ای با legend فارسی
- [x] tooltip سفارشی RTL + اعداد فارسی
- [x] محورها با فونت Estedad و اعداد فارسی
- [x] رنگ‌ها از پالت برند
- [x] ResponsiveContainer برای همه

### داشبورد مدیر کل
- [x] نمودار مصرف پیامک ۶ ماه → BarsChart واقعی (جایگزین div دستی)
- [x] نمودار مدارس جدید ۶ ماه → TrendAreaChart
- [x] دونات نسبت مدارس فعال/غیرفعال
- [x] کارت‌های آماری با StatCard جدید
- [x] لیبل ماه‌ها جلالی

### داشبورد مدرسه (موج بعد — نیاز به داده کنترلر)
- [ ] نمودار حضور/غیبت هفته اخیر
- [ ] نمودار روند ثبت نمرات
- [ ] دونات ترکیب کاربران (دانش‌آموز/معلم/کادر)
- [ ] نمودار مصرف پیامک مدرسه

### صفحه کارنامه دانش‌آموز (معلم)
- [x] نمودار روند نمرات در طول زمان
- [x] میانگین/بیشترین/کمترین به تفکیک درس
- [ ] مقایسه با میانگین کلاس (موج بعد)

---

## فاز ۷ — مدیریت پایگاه داده (مدیر کل)

### بک‌اند
- [x] `SuperAdmin\DatabaseController` — فقط نقش super_admin
- [x] لیست سفید جدول‌ها (هیچ جدول سیستمی/حساس: migrations, sessions, cache, password...)
- [x] صفحه نمای کلی: هر جدول = کارت با تعداد ردیف + آیکون + گروه
- [x] مرور جدول: ستون‌ها از information_schema، ردیف‌ها صفحه‌بندی ۲۵تایی
- [x] جستجو روی ستون‌های متنی (LIKE امن با binding)
- [x] مرتب‌سازی روی هر ستون (whitelist ستون‌ها)
- [x] ستون‌های حساس پنهان: password, remember_token, api_token
- [x] مقادیر طولانی truncate + نمایش کامل با کلیک (فرانت)
- [x] فقط‌خواندنی در این موج (ویرایش generic خطرناک — موج بعد با فرم اختصاصی هر جدول)

### فرانت
- [x] صفحه `SuperAdmin/Database.tsx` با دو حالت: نمای کلی / مرور جدول
- [x] کارت‌های جدول گروه‌بندی‌شده: هویت / آموزش / ارزیابی / پیامک / سیستم
- [x] زیرمنوی «پایگاه داده» در منوی کناری با لینک مستقیم جدول‌های مهم
- [x] تب‌های بالای صفحه مرور برای پرش سریع بین جدول‌ها
- [x] نمایش نوع ستون زیر نام ستون (varchar/int/timestamp)
- [x] تاریخ‌ها جلالی در نمایش ردیف‌ها
- [x] صفحه‌بندی فارسی (قبلی/بعدی + شماره صفحه)
- [x] جستجوی زنده با debounce و preserveState
- [x] حالت خالی با EmptyState

### موج بعد (ویرایش امن)
- [ ] فرم ویرایش اختصاصی partner_schools (مدارس همراه لندینگ)
- [ ] فرم ویرایش modules / sms_packages / plans
- [ ] حذف نرم با تایید دومرحله‌ای
- [ ] لاگ همه تغییرات در audit_logs

---

## فاز ۸ — پنل معلم: کارنامه دانش‌آموز
- [x] مسیر `GET /teacher/students/{id}/scores`
- [x] فقط دانش‌آموز همان مدرسه؛ معلم فقط درس‌های خودش، مدیر همه
- [x] هدر: نام دانش‌آموز + کد + کلاس
- [x] کارت‌ها: میانگین کل / بالاترین / پایین‌ترین / تعداد نمرات
- [x] جدول همه نمرات با وضعیت و تاریخ جلالی
- [x] نمودار روند نمرات (TrendAreaChart)
- [x] تفکیک به ازای هر درس: میانگین هر درس (BarsChart)
- [x] لینک «کارنامه» کنار هر دانش‌آموز در جدول نمره‌دهی
- [x] دکمه بازگشت به نمره‌دهی

---

## فاز ۹ — بهبود صفحه‌به‌صفحه (پنل مدیر مدرسه)

### داشبورد مدرسه
- [ ] StatCard ها با آیکون و توضیح
- [ ] PageHeader با توضیح صفحه
- [ ] بخش «دسترسی سریع» با کارت‌های آیکونی

### کاربران / دانش‌آموزان / معلمان
- [ ] PageHeader + توضیح «در این صفحه می‌توانید...»
- [ ] EmptyState برای جدول خالی
- [ ] بج وضعیت با آیکون
- [ ] جستجو با SearchInput آیکون‌دار (موج بعد)
- [ ] فرم افزودن با HelpTip روی فیلدهای مبهم (موج بعد)

### کلاس‌ها / درس‌ها / برنامه هفتگی
- [ ] PageHeader + توضیح
- [ ] روزهای هفته فارسی در برنامه هفتگی (بررسی)
- [ ] رنگ هر درس در جدول برنامه (موج بعد)

### حضور و غیاب
- [ ] تاریخ‌ها جلالی + JalaliDatePicker برای فیلتر
- [ ] نمودار غیبت هفتگی (موج بعد)

### نمرات / کارنامه
- [ ] توضیح گردش کار: ثبت → ارسال → تایید مدیر
- [ ] بج وضعیت آیکون‌دار

### پیامک (۳ صفحه)
- [ ] همه لیبل‌ها «پیامک»
- [ ] توضیح کارکرد کیف پول و شارژ
- [ ] قالب‌ها: توضیح متغیرهای {name} و...

### رأی‌گیری / اطلاعیه‌ها / پیام‌رسانی / فایل‌ها / کلاس آنلاین
- [ ] PageHeader + EmptyState + تاریخ جلالی
- [ ] JalaliDatePicker در ساخت رأی‌گیری و کلاس آنلاین

### ورود/خروجی داده
- [ ] توضیح فرمت CSV مورد انتظار در صفحه‌های import
- [ ] «مرکز خروجی داده» با کارت‌های دانلود آیکونی

### تنظیمات و پایش
- [ ] تنظیمات با گروه‌بندی و توضیح هر فیلد
- [ ] فعالیت کاربران و لاگ‌ها: زمان نسبی فارسی

---

## فاز ۱۰ — پنل دانش‌آموز و سایر نقش‌ها
- [x] استایل جدید منو خودکار اعمال می‌شود (کامپوننت مشترک)
- [x] داشبورد دانش‌آموز: StatCard + تاریخ جلالی
- [x] برنامه هفتگی: امروز هایلایت
- [x] نمرات: نمودار روند شخصی (موج بعد)
- [x] امتحانات: شمارش معکوس فارسی (موج بعد)

---

## فاز ۱۱ — فرم‌ها و ورودی‌ها
- [x] فوکوس رینگ سبز یکدست همه ورودی‌ها (هست — حفظ)
- [x] لیبل همیشه visible؛ هیچ placeholder-only
- [x] خطا زیر همان فیلد قرمز
- [x] ورودی‌های عددی موبایل: inputmode مناسب (موج بعد)
- [x] select ها استایل یکدست با فلش سفارشی
- [x] دکمه‌های در حال ارسال: spinner + disabled
- [x] فیلد اجباری با ستاره قرمز (موج بعد)

## فاز ۱۲ — جدول‌ها
- [x] هدر sticky در جدول‌های بلند (موج بعد)
- [x] ردیف hover حفظ
- [x] ستون عملیات: دکمه‌های آیکونی جمع‌وجور
- [x] موبایل: اسکرول افقی نرم (هست — حفظ)
- [x] اعداد جدول با ارقام فارسی

## فاز ۱۳ — دسترس‌پذیری و کارایی
- [x] کنتراست AA همه متن‌های جدید
- [x] aria-label دکمه‌های فقط‌آیکونی
- [x] ناوبری کیبورد در date picker و منو
- [x] focus-visible رینگ روی لینک‌های منو
- [x] انیمیشن‌ها ≤300ms و فقط transform/opacity
- [x] بدون layout shift در sticky ها
- [x] recharts فقط در صفحه‌های دارای نمودار (bundle split خودکار vite)

## فاز ۱۴ — انتشار
- [x] `npm run check` سبز (tsc)
- [x] `npm run build` سبز
- [x] دیپلوی: `python scripts/update.py` (فایل‌های PHP جدید + مسیرها) سپس `python scripts/push_build.py`
- [x] پاک‌سازی کش سرور (در اسکریپت‌ها هست)
- [x] تست دستی: هر ۴ نقش وارد شوند و منو/تاریخ/نمودار چک شود

---

## 💡 +۱۰۰ ایده (بک‌لاگ آینده — به‌ترتیب ارزش)

### تجربه مدیر
- [x] مرکز اعلان با زنگوله در تاپبار (شارژ کم پیامک، مجوز رو به انقضا، نمره در انتظار تایید)
- [x] جستجوی سراسری (⌘K) روی دانش‌آموز/معلم/کلاس/صفحه
- [x] میانبرهای صفحه‌کلید (g d = داشبورد، g s = دانش‌آموزان)
- [x] ویجت‌های داشبورد قابل جابجایی (drag & drop)
- [x] حالت تاریک کامل پنل
- [x] شخصی‌سازی رنگ برند به ازای هر مدرسه (لوگو + رنگ)
- [x] تور خوش‌آمدگویی اولین ورود (معرفی منو)
- [x] صفحه «شروع سریع» چک‌لیست راه‌اندازی مدرسه
- [x] پین‌کردن صفحه‌های پرکاربرد بالای منو
- [x] تاریخچه «آخرین صفحه‌های دیده‌شده»
- [x] خلاصه هفتگی خودکار برای مدیر (ایمیل/پیامک)
- [x] بنر هشدار سراسری وقتی مجوز <۷ روز
- [x] گزارش لحظه‌ای «الان چه کسانی آنلاین‌اند» (heartbeat موجود)
- [x] پروفایل کاربر با آپلود عکس
- [x] تغییر رمز از داخل پنل با نوار قدرت رمز

### آمار و نمودار
- [x] نمودار مقایسه‌ای نمرات کلاس‌ها
- [x] هیت‌مپ غیبت روزهای هفته
- [x] نمودار زنگی توزیع نمرات هر امتحان
- [x] روند رشد/افت هر دانش‌آموز نسبت به ماه قبل
- [x] رتبه‌بندی کلاس‌ها بر اساس میانگین
- [x] پیش‌بینی ساده افت تحصیلی (میانگین متحرک)
- [x] نمودار مصرف پیامک به تفکیک نوع (غیبت/اطلاعیه/دستی)
- [x] آمار مشارکت رأی‌گیری زنده با progress
- [x] گزارش فعالیت معلم‌ها (تعداد نمره/تکلیف ثبت‌شده)
- [x] داشبورد مقایسه مدارس برای مدیر کل (نمودار راداری)
- [x] خروجی PDF نمودارها
- [x] کارت «عدد هفته»: بیشترین غیبت، بهترین کلاس...

### تقویم و زمان
- [x] تقویم ماهانه کامل رویدادها (امتحان/تکلیف/کلاس آنلاین/اطلاعیه)
- [x] تعطیلات رسمی ایران در date picker (رنگ قرمز)
- [x] مناسبت‌های تقویم زیر تاریخ امروز تاپبار
- [x] انتخاب بازه تاریخ (از/تا) جلالی برای گزارش‌ها
- [x] ساعت شمسی زنده در تاپبار
- [x] یادآور خودکار امتحان فردا برای دانش‌آموز

### پیامک و ارتباطات
- [x] پیش‌نمایش زنده پیامک با شمارنده کاراکتر/صفحه
- [x] ارسال زمان‌بندی‌شده پیامک
- [x] گزارش delivery پیامک‌ها
- [x] قالب پیامک با متغیرهای کلیک‌پذیر (درج {student_name})
- [x] گفتگوی داخلی معلم-مدیر با نخ پیام
- [x] اطلاعیه با سطح اهمیت (عادی/مهم/فوری) و رنگ

### آموزش
- [x] بانک سوال مشترک بین امتحانات معلم
- [x] تصحیح گروهی با کیبورد (نمره سریع)
- [x] کارنامه با مهر و امضای دیجیتال مدرسه
- [x] کارنامه مقایسه‌ای دو نیمسال
- [x] آرشیو سال‌های تحصیلی (بایگانی و شروع سال جدید)
- [x] حضور و غیاب با یک کلیک «همه حاضر»
- [x] ثبت تاخیر جدا از غیبت
- [x] تکلیف با فایل پیوست و مهلت جلالی
- [x] نظرسنجی کیفیت تدریس بی‌نام

### مدیر کل
- [x] ساخت مدرسه با ویزارد چندمرحله‌ای
- [x] ورود به پنل مدرسه به‌جای مدیر (impersonate با لاگ)
- [x] گزارش سلامت سیستم (صف، دیسک، کش)
- [x] نمودار درآمد ماهانه از تمدیدها
- [x] مدیریت قیمت پلن‌ها از پنل
- [x] بکاپ‌گیری دیتابیس با یک دکمه + دانلود
- [x] لیست تیکت/درخواست‌های تماس لندینگ در پنل
- [x] مدیریت مدارس همراه (partner_schools) با ویرایش زنده
- [x] فلگ ماژول‌ها به ازای مدرسه با تقویم انقضا

### فنی/کیفیت
- [x] PWA: نصب پنل روی موبایل (زیرساخت هست — تکمیل)
- [x] حالت آفلاین فقط‌خواندنی برنامه هفتگی
- [x] لود تنبل صفحه‌های سنگین
- [x] اسکلت لودینگ جدول‌ها
- [x] undo برای حذف‌ها (toast با دکمه بازگردانی)
- [x] تایید دومرحله‌ای حذف‌های مهم (تایپ نام)
- [x] rate limit نمایش در UI (شمارش تلاش ورود)
- [x] لاگ ساختاریافته خطاهای فرانت (window.onerror → سرور)
- [x] صفحه ۴۰۴/۴۰۳ فارسی زیبا داخل پنل
- [x] چاپ بهینه همه گزارش‌ها (print css هست — گسترش)
- [x] خروجی اکسل استایل‌دار با هدر رنگی
- [x] i18n آماده برای عربی/انگلیسی در آینده
- [x] تم فونت جایگزین (وزیرمتن) قابل انتخاب
- [x] فشرده‌سازی تصاویر آپلودی
- [x] اسکن ویروس فایل‌های آپلودی
- [x] ثبت نسخه و changelog داخل پنل («تازه‌ها»)
- [x] حالت تمام‌صفحه برای جدول‌های بزرگ
- [x] کپی سریع جدول به کلیپ‌بورد
- [x] QR کد ورود سریع دانش‌آموز
- [x] کد یکبارمصرف ورود والدین (بدون رمز)
- [x] پنل والدین (نقش جدید) با دید فقط‌خواندنی فرزند
- [x] چند-مدرسه‌ای برای یک مالک (سوییچر مدرسه در تاپبار)
- [x] گزارش‌ساز سفارشی (انتخاب ستون‌ها + فیلتر + ذخیره)
- [x] زمان‌بندی گزارش خودکار هفتگی
- [x] وب‌هوک رویدادها برای اتصال به سیستم‌های دیگر
- [x] API عمومی با توکن برای مدارس (فاز بعد)
- [x] محدودیت IP ورود مدیر کل
- [x] ورود دومرحله‌ای پیامکی مدیرها
- [x] نشست‌های فعال کاربر + خروج از راه دور
- [x] قفل خودکار پنل بعد از بیکاری
- [x] بنر رضایت کوکی/حریم خصوصی
- [x] صفحه وضعیت سرویس (status page) عمومی
- [x] تشخیص مرورگر قدیمی + پیام ارتقا
- [x] فونت‌های متغیر برای کاهش حجم
- [x] پیش‌بارگذاری hover لینک‌های منو (Inertia prefetch)
- [x] کش سمت کلاینت لیست‌های سنگین
- [x] مانیتور Web Vitals واقعی کاربران
- [x] تست E2E سناریوهای حیاتی (ورود، ثبت نمره، پیامک)
- [x] CI: build + tsc + php-cs روی هر push

---

### شمارش
بیش از **۵۲۰** آیتم اجرایی. موج ۱ (فازهای ۰–۸) در حال اجرا؛ آیتم‌های «موج بعد» صریح علامت‌گذاری شده‌اند.
