Amirali Yaghoutiمهندس ارشد نرم‌افزار

مطالعه موردی مهندسی

اصلاحات رابط اسنپ‌پی

چهار برند ساعت فروشگاه طبق قرارداد از اقساط اسنپ‌پی کنار گذاشته شده‌اند. خود افزونه‌ی پرداخت یا همه‌چیز را نشان می‌داد یا هیچ‌چیز. تولتیپی هم که باید دلیل نبودن اقساط را می‌گفت، داخل باکس خودش بریده می‌شد. نتیجه: مشتری یک دکمه‌ی مرده می‌دید، بدون هیچ توضیحی.

مسئله تجاری

حذف کل باکس اسنپ‌پی روی برندهای مستثنا ساده‌ترین راه است و اشتباه‌ترین. مشتری اصلاً نمی‌فهمد اقساطی وجود دارد یا نه و همان سؤال سر از پشتیبانی درمی‌آورد. اگر باکس بماند، حالت غیرفعال باید خودش توضیح بدهد. مشکل اینجا بود که آن توضیح داخل کانتینری رندر می‌شد که overflow محدود داشت و دقیقاً در همان اندازه‌های صفحه بریده می‌شد که بیشترین اهمیت را داشتند.

آنچه تحویل دادم

  • a2-snappay-blocked-product-override.php، که روی برندهای مستثنا باکس اسنپ‌پی و دکمه‌ی افزودن به سبد را نگه می‌دارد و فقط ماشین‌حساب و کنترل‌های اعتباری را می‌بندد.
  • حذف متن مبلغ اقساط روی همان محصولات، تا رقمی جلوی چشم مشتری نباشد که عملاً نمی‌تواند از آن استفاده کند.
  • a2-snappay-blocked-tooltip-portal.php، که تولتیپ توضیحی را کاملاً بیرون از باکس اقساط رندر می‌کند و از کانتینری که آن را می‌برید بیرون می‌آید.
  • محدودکردن برندها بر اساس دسته‌ی محصول، آن هم فقط روی صفحه‌ی محصول؛ پس این منطق در آرشیو و سبد اصلاً اجرا نمی‌شود.

رویکرد فنی

  • فهرست برندهای مستثنا یکی است و هر دو ماژول از همان می‌خوانند، تا هیچ‌وقت سر اینکه کدام محصول مشمول است با هم اختلاف پیدا نکنند.
  • هر دو ماژول اول بررسی می‌کنند که درخواست، نمای تک‌محصول باشد. این‌طور هزینه‌ی اجرا از بقیه‌ی صفحه‌ها برداشته می‌شود.
  • تولتیپ portal می‌شود، نه اینکه استایلش را بازنویسی کنم. کلنجار با overflow کانتینر والد از راه CSS، همان اصلاحی است که با اولین آپدیت مارک‌آپ افزونه‌ی پرداخت می‌شکند.
  • خود افزونه‌ی اسنپ‌پی دست‌نخورده می‌ماند. همه‌چیز از افزونه‌های MU دور آن انجام می‌شود، تا آپدیت فروشنده نتواند بی‌سروصدا رفتار را برگرداند.

نتیجه و شواهد

مشتری روی برندهای مستثنا می‌بیند که اقساط وجود دارد، می‌بیند که برای این محصول فعال نیست، و دلیلش را هم می‌خواند — بدون اینکه سراغ پشتیبانی برود. حالت غیرفعال درست در همان نقطه‌ای توضیح داده می‌شود که سردرگمی می‌سازد.

اهمیت برای کارفرما

اصطکاک پرداختی که توضیح ندارد، آخرش یا تیکت پشتیبانی می‌شود یا سبد رهاشده. توضیح‌دادن یک محدودیت تقریباً رایگان است و معمولاً از گفت‌وگویی که جلویش را می‌گیرد ارزان‌تر تمام می‌شود.

خلاصه-اجرایی-پروژه

خلاصه اجرایی خوانا

خلاصه_اجرایی {
  پروژه: "SnappPay UI Fixes"
  فایل‌ها: "a2-snappay-blocked-product-override.php (۲۷۹ خط)
            a2-snappay-blocked-tooltip-portal.php (۱۷۵ خط)"
  دامنه: "چهار برند ساعت مستثنا، فقط صفحات محصول"
  نگه_می‌دارد: "باکس اسنپ‌پی و افزودن به سبد قابل‌دیدن"
  غیرفعال: "ماشین‌حساب و دکمه‌های اعتباری، رقم اقساط"
  تولتیپ: "بیرون از باکس رندر می‌شود تا بریده نشود"
  مرز: "افزونه‌ی فروشنده دست‌نخورده؛ رفتار در MU پیاده شده"
}

ارزش حرفه‌ای این پروژه

جلوی آن غریزه‌ی اول را باید گرفت: کنترلی که پشتیبانی نمی‌شود، بهتر است پنهان نشود. یک حالت غیرفعالِ دیده‌شده به‌همراه دلیلش، تقریباً همیشه برای مشتری بهتر از عنصری است که اصلاً وجود ندارد.

portal کردن تولتیپ به‌جای دست‌بردن در overflow، انتخاب قابل‌نگهداری است. ترجیح می‌دهم یک عنصر را جابه‌جا کنم تا اینکه با افزونه‌ای که ماه بعد آپدیت می‌شود سر specificity کشتی بگیرم.