خلاصه پروژه
این سند، تمام قابلیتهای موردنیاز سامانه مدیریت کلاسهای ورزشی را با تمرکز بر اجرای «سرورمحور» (Laravel) و کلاینت ساده (React Native) ارائه میکند: احراز هویت با OTP، مدیریت نقشها، تعریف کلاس و جلسات، ثبتنام، فاکتور و پرداخت، حضور و غیاب، پیامرسانی، اعلانها (Push/SMS)، لایو استریم، فروشگاه ویژه مربیان، پنل مدیریت، و در نهایت اشتراک ماهانه برای دورههای بلندمدت.
نقشه راه
MVP
Auth OTP، پروفایل/مدارک، کلاس/جلسه، ثبتنام، فاکتور/پرداخت، حضور و غیاب، چت کلاسی، Push اصلی، پنل ادمین پایه.
V1
استریم زنده، فروشگاه مربیان، SMS رخدادهای کلیدی، گزارشگیری مالی/حضور، ارتقای Coach با مدارک نسخهدار.
V2
اشتراک ماهانه (صدور خودکار فاکتور، دِنینگ)، پرو-ریت، بازپخش جلسات، کوپن/تخفیف، آنالیتیکس.
نمای کلی دامنه و مدل داده
هسته مدل داده شامل این موجودیتهاست: Users, Documents, Classes, Class Sessions, Enrollments, Attendance, Invoices, Payments, Threads, Messages, Products, Orders, Notifications, Subscriptions. روابط کلیدی بین این موجودیتها، اجرای قوانین کسبوکار را ممکن میسازد (ظرفیت ثبتنام، پرداخت، حضور، چت، و اشتراک ماهانه).
احراز هویت و آنبوردینگ
ورود/ثبتنام با OTP (فقط موبایل)
کاربر بتواند با شماره موبایل و کد یکبارمصرف وارد شود.
Acceptance Criteria
- Given موبایل معتبر؛ When درخواست OTP؛ Then کد ارسال و نرخدهی محدود شود.
- Given کد صحیح؛ When ارسال؛ Then توکن (Sanctum) صادر و ورود کامل شود.
- Given کد ناصحیح؛ Then خطای 422 با پیام استاندارد برگردد.
Definition of Done
- تست Feature OTP، مستند OpenAPI، لاگ تلاشها و Rate Limit.
اسلایدهای معرفی (Onboarding)
اسلایدهای معرفی یکبار پس از نصب نمایش داده شوند.
Acceptance Criteria
- Given اولین اجرا؛ When ورود؛ Then اسلایدها یکبار نمایش داده شود.
- Given کاربر رد کرد؛ Then فلگ 'onboarding_seen' ثبت شود.
Definition of Done
- ذخیره فلگ در پروفایل؛ رندر سبک RN.
نقش اولیه ورزشکار
تمام کاربران در شروع نقش Athlete داشته باشند؛ ارتقا به Coach بعداً.
Acceptance Criteria
- Given ثبتنام جدید؛ Then نقش Athlete اختصاص یابد.
- Given درخواست ارتقا؛ Then مسیر بررسی مدارک فعال شود.
Definition of Done
- Policyهای نقش اعمال؛ تست دسترسی.
پروفایل و مدارک
ویرایش پروفایل
ویرایش نام، آواتار و تنظیمات پایه.
Acceptance Criteria
- Given تصویر معتبر؛ When آپلود؛ Then آواتار با URL امضاشده ذخیره شود.
- Given کاربر خواست حذف آواتار؛ Then تصویر پیشفرض اعمال شود.
Definition of Done
- ولیدیشن فایل، Signed URLs، تست ولیدیشن.
بارگذاری مدارک با وضعیت
آپلود بیمه/مدرک مربی با وضعیتهای pending/approved/rejected.
Acceptance Criteria
- Given فایل آپلود؛ Then نسخه جدید مدرک ساخته و pending شود.
- Given ادمین رد کرد؛ Then دلیل رد ثبت و اعلان ارسال شود.
Definition of Done
- نسخهگذاری، پردازش صف (تولید پیشنمایش)، مستندسازی.
درخواست ارتقا به مربی
ورزشکار بتواند با ارسال مدارک به Coach ارتقا یابد.
Acceptance Criteria
- Given مدارک کامل؛ When ارسال؛ Then تسک بررسی برای ادمین ایجاد شود.
- Given تایید ادمین؛ Then نقش Coach و اعلان برای کاربر.
Definition of Done
- ایمیل/Push به ادمین، Audit log اقدام.
کلاسها و جلسات
تعریف کلاس توسط مربی
مربی کلاس را با عنوان، توضیح، ظرفیت، شهریه و قوانین بسازد.
Acceptance Criteria
- Given کلاس جدید؛ Then حالت draft ایجاد شود.
- When انتشار؛ Then state=published و اعلان به دنبالکنندگان اختیاری.
Definition of Done
- Policy Coach-only؛ تست ایجاد/ویرایش/انتشار.
لیست و جستوجوی کلاسها
ورزشکار بتواند کلاسها را جستوجو و فیلتر کند.
Acceptance Criteria
- Given پارامترها؛ Then صفحهبندی Cursor و فیلتر مربی/قیمت/ظرفیت کار کند.
- Then پاسخ ≤200ms روی دیتای نمونه 10k رکورد.
Definition of Done
- ایندکسهای DB روی فیلدهای کلیدی، تست Performance محلی.
ثبتنام در کلاس (Enrollment)
ورزشکار در کلاس ثبتنام کند.
Acceptance Criteria
- Given ظرفیت و شرایط پرداخت؛ When درخواست؛ Then ایجاد Enrollment یکتا.
- Then جلوگیری از ثبتنام تکراری، اعلان موفقیت.
Definition of Done
- تراکنش اتمیک DB؛ رویداد EnrollmentCreated.
مدیریت جلسات کلاس
مربی جلسات کلاس را بسازد و ویرایش کند.
Acceptance Criteria
- Given بازه زمانی؛ Then جلوگیری از تداخل، ذخیره starts_at/ends_at.
- When تغییر؛ Then اعلان به اعضای کلاس.
Definition of Done
- ولیدیشن بازهها، تست CRUD جلسات.
حضور و غیاب دستی/QR
ثبت حضور/غیاب برای اعضا.
Acceptance Criteria
- Then وضعیت present/absent/late ثبت شود.
- Optional: QR برای تایید سریع حضور مربی.
Definition of Done
- ثبت زمان/روش، گزارش حضور ساده.
مالی و پرداخت
ایجاد فاکتور (Invoice)
هنگام ثبتنام یا شهریه، فاکتور ساخته شود.
Acceptance Criteria
- Then مبلغ، due_at، status=unpaid ثبت شود.
- Given لغو؛ Then status=canceled.
Definition of Done
- مدل Invoice مرتبط با Enrollment؛ تستها.
پرداخت آنلاین با Webhook
پرداخت امن و نهاییسازی از طریق Webhook.
Acceptance Criteria
- Given پرداخت موفق در درگاه؛ Then Webhook تایید نهایی را ثبت کند.
- Given قطع مسیر بازگشت؛ Then همگامسازی با Webhook حفظ شود.
Definition of Done
- امضای درخواست Webhook، لاگ تراکنشها، تست سناریوها.
داشبورد پرداخت برای مربی
نمایش وضعیت پرداختهای اعضای کلاس.
Acceptance Criteria
- Then فیلتر براساس وضعیت/ماه؛ Export CSV.
Definition of Done
- ایندکسها و کوئریهای بهینه.
رزرو ظرفیت پیش از پرداخت
ظرفیت برای مدت کوتاه لاک شود تا اوربوک نشود.
Acceptance Criteria
- Then lock 15 دقیقهای با انقضای خودکار.
- Then در انقضا، رزرو آزاد شود.
Definition of Done
- Job زمانبندیشده برای release؛ idempotent.
پیامرسانی و اعلانها
چت گروهی کلاس
تاپیک گفتگوی اعضای هر کلاس.
Acceptance Criteria
- Then Thread per Class؛ تاریخچه پیامها؛ Push پیام جدید.
Definition of Done
- Rate limit ارسال، ریپورت/بلاک پایه.
گفتگوی مستقیم مربی↔️ورزشکار
پیام خصوصی بین مربی و ورزشکار.
Acceptance Criteria
- Then شروع گفتگو از پروفایل؛ بلاک کاربر؛ اعلان.
Definition of Done
- Policy دسترسی، تست DM.
اعلانهای ادمین (Broadcast)
ادمین بتواند به نقش/کلاس/همه پیام بدهد.
Acceptance Criteria
- Then هدفگیری Segment؛ صف ارسال Push.
Definition of Done
- Audit log ارسالها.
Push برای رویدادهای کلیدی
اطلاعرسانی ثبتنام/پرداخت/جلسه.
Acceptance Criteria
- Then T-15m برای شروع جلسه؛ پرداخت موفق؛ سررسید فاکتور.
Definition of Done
- مدیریت ترجیحات کاربر، مستند قالب پیامها.
SMS برای رخدادهای حیاتی (OTP/بدهی)
ارسال پیامک برای OTP و بدهی مهم.
Acceptance Criteria
- Then الگوهای پیام؛ محدودیت هزینه؛ fallback بعد از Push ناموفق.
Definition of Done
- تنظیم کانالها و درگاه SMS.
لایو استریم جلسات
شروع لایو توسط مربی
مربی جلسه را بهصورت زنده پخش کند.
Acceptance Criteria
- Then توکن دسترسی موقت (Server-issued) فقط برای اعضای کلاس.
- Then پایان خودکار با اتمام جلسه.
Definition of Done
- یکپارچهسازی LiveKit/Agora/Daily؛ تست توکن.
مشاهده لایو توسط اعضا
اعضای کلاس لایو را تماشا کنند.
Acceptance Criteria
- Then کنترل دسترسی؛ شمارنده بینندگان؛ ثبت اختیاری حضور.
Definition of Done
- کیفیت سازگار با شبکه؛ fallback پیام خطا.
فروشگاه مربیان
مشاهده کاتالوگ (Coach-only)
مربی محصولات فروشگاه را ببیند.
Acceptance Criteria
- Then فیلتر/جستوجو؛ نمایش موجودی/قیمت.
Definition of Done
- Policy Coach-only؛ تست لیست.
ثبت سفارش با تأیید ادمین
مربی سفارش ثبت کند و ادمین تایید/رد کند.
Acceptance Criteria
- Then وضعیت pending/approved/rejected؛ اعلان طرفین.
Definition of Done
- فاکتور فروشگاهی مستقل؛ Export سفارشها.
مدیریت محصولات در پنل ادمین
ادمین کاتالوگ را مدیریت کند.
Acceptance Criteria
- Then CRUD محصول/تصویر/موجودی؛ فعال/غیرفعالسازی.
Definition of Done
- گزارش فروش پایه؛ ولیدیشن دادهها.
پنل مدیریت
مدیریت کاربران و نقشها
ادمین نقش/مجوزها را مدیریت کند.
Acceptance Criteria
- Then تعیین نقشها؛ تعلیق کاربر؛ مدیریت دسترسی.
Definition of Done
- Spatie Permissions؛ Audit log.
بررسی و تأیید مدارک
ادمین مدارک را تایید/رد کند.
Acceptance Criteria
- Then درج دلیل رد؛ اعلان نتیجه به کاربر.
Definition of Done
- نسخهبرداری مدارک؛ تاریخچه اقدامات.
گزارشهای نظارتی
گزارش ثبتنام/حضور/پرداخت.
Acceptance Criteria
- Then بازه زمانی؛ فیلتر؛ خروجی CSV/Excel.
Definition of Done
- Queryهای بهینه؛ ایندکس مناسب.
تنظیمات سیستم
پیکربندی درگاه، SMS، FCM و کلیدها.
Acceptance Criteria
- Then تست اتصال؛ مدیریت Secrets؛ health-check.
Definition of Done
- صفحه وضعیت سرویسها.
اشتراک/اقساط ماهانه
پلن ماهانه برای دورههای بلندمدت
تعریف دوره با Billing ماهانه.
Acceptance Criteria
- Then انتخاب نوع پرداخت ماهانه؛ ارتباط با کلاس/پلن.
Definition of Done
- مدل subscriptions با periodها.
تولید خودکار فاکتور ماهانه
هر ماه برای مشترکین فاکتور تولید شود.
Acceptance Criteria
- Then Job زمانبندی؛ due_at؛ idempotency برای جلوگیری از تکرار.
Definition of Done
- لاگ ساخت؛ اعلان به کاربر؛ تست شبیهسازی Cron.
یادآوری و ریترای پرداخت (Dunning)
یادآوریهای T-3/T0/T+3 و تعلیق در T+7.
Acceptance Criteria
- Then past_due و نهایتاً suspended در عدم پرداخت.
Definition of Done
- قابلپیکربندی در پنل؛ تمپلیت پیامها.
پرو-ریت دوره (اختیاری)
محاسبه مبلغ بر اساس روزهای باقیمانده.
Acceptance Criteria
- Then محاسبه دقیق در شروع وسطماه.
Definition of Done
- تست واحد سناریوهای مختلف.
لغو اشتراک
ورزشکار بتواند اشتراک را لغو کند.
Acceptance Criteria
- Then توقف صدور فاکتورهای بعدی؛ تاریخ اثر.
Definition of Done
- ثبت دلیل لغو؛ سیاست بازگشت وجه قابل تنظیم.
سیاستها و کیفیت سیستم
ترجیحات اعلان
کاربر بتواند ترجیحات Push/SMS را مدیریت کند.
Acceptance Criteria
- Then روشن/خاموش برای هر نوع رویداد.
Definition of Done
- ذخیره در notification_settings؛ تست API.
طرح خطای یکنواخت API
الگوی خطا واحد برای همه اندپوینتها.
Acceptance Criteria
- Then `{code,message,details}` در خطاها برگردد.
Definition of Done
- OpenAPI examples؛ مپ خطاها.
لاگ و مانیتورینگ
لاگ ساختاریافته و Health-check.
Acceptance Criteria
- Then آلارم روی 5xx؛ صفحه وضعیت.
Definition of Done
- Sentry/Log Channel؛ تست Health endpoint.