STORY-029 پنل ادمین › پشتیبانی › کمپین تخفیف › ایجاد کمپین › سکشن «محدوده اعمال»

محدود کردن اعمال کمپین تخفیف به پلتفرم اپلیکیشن یا وب‌سایت

افزودن یک فیلد چند انتخابی به سکشن «محدوده اعمال» — دو گزینه در v1 (اپلیکیشن موبایل و وب‌سایت). چک پلتفرم فقط در دو نقطه: مرور و پیش‌فاکتور.

راهنمای انواع متن‌ها و بَج‌ها در این پروتوتایپ

قبل از پیاده‌سازی، تفاوت این متن‌ها و بَج‌ها را بادقت متوجه شوید — فقط بعضی‌ها باید در UI پیاده‌سازی شوند.

این متن‌ها در UI پیاده‌سازی می‌شوند و به کاربر نمایش داده می‌شوند
مثال: اگر چیزی انتخاب نکنید، کمپین در همه پلتفرم‌ها اعمال می‌شود.
متن راهنما (helper) — دقیقاً همین متن با همین کلمات باید زیر فیلد در پنل ادمین به اپراتور نمایش داده شود. جزء UI است.
این متن‌ها و بَج‌ها در UI پیاده‌سازی نمی‌شوند — صرفاً برای فهم بهتر تیم توسعه‌دهنده از انتظار ما هستند
۱. متن‌های زیر فیلد
🛠 یادداشت برای تیم پیاده‌سازی — مثال: اپلیکیشن شامل هر دو نسخه اندروید و iOS است.
یادداشت برای تیم پیاده‌سازی — نکته فنی، محدودیت scope، یا ارجاع به تصمیم. این متن‌ها را در پنل نشان ندهید.
💡 مثال: توضیح رفتار پلتفرم در سایت/اپ کاربر و نقاط چک.
توضیح قاعده / رفتار سیستم — spec رفتار پویا در سمت کاربر (نه در پنل ادمین). این جعبه‌ی آبی را در پنل نشان ندهید — راهنمای spec برای تیم توسعه است.
۲. بَج‌های کنار عنوان فیلدها

بَج‌های رنگی کنار عنوان فیلد هیچ‌کدام نباید در پنل نمایش داده شوند. صرفاً برای فهم توسعه‌دهنده:

فیلد جدید
فیلد کاملاً جدید که با این استوری به فرم اضافه می‌شود. در فرم فعلی وجود ندارد.
بدون تغییر نام
فیلد جدید نیست — از قبل در سکشن محدوده اعمال بوده. این‌جا برای این آمده که فهرست کامل سکشن شفاف باشد.

۴ محدوده اعمال

تخفیف روی چه محتوایی، در چه پلتفرمی، و در چه زمانی فعال است؟

اگر هیچ سینمایی انتخاب نشود، کمپین روی همه‌ی سینماها اعمال می‌شود.
اگر هیچ فیلمی انتخاب نشود، کمپین روی همه‌ی فیلم‌ها اعمال می‌شود.
اگر سالن انتخاب شود، تخفیف روی همه‌ی سانس‌های آن سالن اعمال می‌شود.
انتخاب سانس‌های خاص برای اعمال تخفیف.
✓ خالی = کمپین در همه پلتفرم‌ها اعمال می‌شود اگر چیزی انتخاب نکنید، کمپین در همه پلتفرم‌ها اعمال می‌شود. چند انتخابی (multi-select). «اپلیکیشن موبایل» شامل هر دو نسخه‌ی اندروید و iOS است؛ تفکیک اندروید/iOS در scope این استوری نیست و در آینده با جایگزین کردن این گزینه با «اپ اندروید» و «اپ iOS» (نه اضافه کردن به آن) انجام می‌شود. گزینه‌ی صریح «همه پلتفرم‌ها» عمداً وجود ندارد — عدم انتخاب همین معنی را می‌دهد.

در صفحه لیست کمپین‌ها: اگر این فیلد برای کمپینی خالی است، به‌جای سلول خالی «همه پلتفرم‌ها» نمایش داده شود.

Migration کمپین‌های موجود: همه‌ی کمپین‌های قبلی خودکار مقدار «خالی = همه پلتفرم‌ها» می‌گیرند — هیچ migration دستی نیاز نیست.
روزها و ساعت فعالیت کمپین بدون تغییر
اگر هیچ روزی انتخاب نشود، کمپین در همه‌ی روزهای هفته فعال است. در روزهای انتخاب‌شده، از «زمان شروع» تا «زمان پایان» کمپین فعال است؛ اگر خالی بمانند، از ۰۰:۰۰ تا ۲۳:۵۹ فعال خواهد بود.
روز هفته زمان شروع زمان پایان

💡پیش‌نمایش رفتار کاربر در سایت/اپ (بر اساس انتخاب فعلی «پلتفرم اعمال کمپین»)

هر چهار حالت در ادامه آمده است. حالت مطابق با چیپ‌های بالا با حاشیه‌ی آبی مشخص می‌شود.

خالی → همه پلتفرم‌ها (پیش‌فرض): هیچ محدودیتی اعمال نمی‌شود. رفتار فعلی سیستم حفظ می‌شود — بَج تخفیف در هر دو پلتفرم روی کارت سانس/فیلم/سینما نمایش داده می‌شود و کد تخفیف در هر دو پلتفرم کار می‌کند.
فقط «اپلیکیشن موبایل» انتخاب شده:
  • نقطه چک ۱ (مرور در وب‌سایت): بَج تخفیف روی کارت سانس/فیلم/سینما نمایش داده نمی‌شود.
  • نقطه چک ۲ (پیش‌فاکتور در وب): اگر کاربر کد تخفیف را وارد کند، این پیام را می‌بیند:
«این کد تخفیف فقط از طریق اپلیکیشن سینماتیکت قابل استفاده است. برای دریافت اپ به [لینک اپ] بروید.»
فقط «وب‌سایت» انتخاب شده:
  • نقطه چک ۱ (مرور در اپ): بَج تخفیف روی کارت سانس/فیلم/سینما نمایش داده نمی‌شود.
  • نقطه چک ۲ (پیش‌فاکتور در اپ): اگر کاربر کد تخفیف را وارد کند، این پیام را می‌بیند:
«این کد تخفیف فقط از طریق وب‌سایت سینماتیکت قابل استفاده است.»
هر دو انتخاب شده: از نظر رفتاری معادل حالت «خالی» است — کمپین در هر دو پلتفرم اعمال می‌شود. توصیه به اپراتور: انتخاب هر دو با انتخاب هیچ‌کدام یکسان است؛ می‌توانید فیلد را خالی بگذارید.
🎯 نقاط چک پلتفرم — فقط دو نقطه
  1. مرحله‌ی مرور (browse): در هر جای محصول که کاربر می‌گردد (کارت فیلم، کارت سینما، کارت سانس، صفحه لیست، ...) بَج تخفیف فقط برای پلتفرمی نمایش داده می‌شود که در کمپین مجاز است.
  2. مرحله‌ی پیش‌فاکتور (وارد کردن کد تخفیف): پلتفرم فعلی کاربر با پلتفرم‌های مجاز کمپین مقایسه می‌شود؛ اگر مطابق نبود، پیام خطای شفاف نمایش داده می‌شود.
مرحله‌ی پرداخت چک نمی‌شود. اگر در پیش‌فاکتور پلتفرم مطابق بود و کد اعمال شد، در لحظه‌ی پرداخت پلتفرم مجدداً چک نمی‌شود. این تصمیم آگاهانه برای کاهش پیچیدگی است — جرنی معمول کاربر تک‌پلتفرمی است و حالت‌های استثنائی (تعویض پلتفرم بین پیش‌فاکتور و پرداخت) ارزش پیچیدگی چک دوم را ندارند.
سطح مقاومت در برابر جعل: تشخیص پلتفرم باید در حد «به راحتی و دم‌دستی جعل نشدن» باشد، نه صد در صد ضدجعل. ریسک تجاری این feature محدود است (نهایتاً یک کاربر یک کد تخفیف را در پلتفرم غیرمجاز استفاده می‌کند)؛ افزودن پیچیدگی سنگین ارزش هزینه‌ی توسعه را ندارد.

متن دقیق پیام‌های خطا: پیشنهاد بالا نقطه‌ی شروع است؛ متن نهایی با مارکتینگ نهایی می‌شود. لینک اپ در پیام «فقط اپلیکیشن موبایل» باید در زمان پیاده‌سازی تعیین شود.