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

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

هاب مشتری WooCommerce

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

مسئله تجاری

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

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

  • یک ماژول مرکز مشتری داخل a2-crm-plugin که با یک شورت‌کد رندر می‌شود و تب‌هایی برای داشبورد، سفارش‌ها، وفاداری، کیف پول، اخیراً دیده‌شده و پروفایل دارد.
  • یک REST API زیر فضای نام customer-hub/v1 با مسیرهای خلاصه، سفارش‌ها، وفاداری، کیف پول و اخیراً دیده‌شده، به‌علاوه‌ی مسیرهای خواندن و نوشتن برای پروفایل و آدرس‌ها.
  • یک موتور امتیاز که سفارش‌های پرداخت‌شده به‌ازای هر واحد مبلغ ثابت امتیاز می‌گیرند، و سطح‌ها (برنز، نقره، طلا، VIP) از امتیاز مادام‌العمر در آستانه‌های ۰، ۵۰۰، ۱۵۰۰ و ۵۰۰۰ resolve می‌شوند.
  • جدول‌های دفتر اختصاصی برای امتیاز و کیف پول به‌جای چپاندن موجودی در متای کاربر.
  • ردیابی اخیراً دیده‌شده با سقف ۲۰ محصول به‌ازای هر مشتری و انقضای ۳۰ روزه.

رویکرد فنی

  • امتیازها روی woocommerce_order_status_changed اعمال می‌شوند وقتی سفارش به وضعیت پرداخت‌شده می‌رسد، و روی لغو، بازپرداخت، ناموفق یا زباله خودکار برمی‌گردند.
  • هر نوشتن امتیاز از یک بررسی idempotency می‌گذرد تا یک تغییر وضعیت بازپخش‌شده نتواند دوبار به مشتری اعتبار بدهد.
  • بازدید محصول روی template_redirect و فقط برای کاربران لاگین‌شده ثبت می‌شود، سپس با یک روال پاک‌سازی هرس می‌شود تا جدول نتواند بی‌کران رشد کند.
  • تب‌ها پیکربندی‌اند و در یک آپشن زندگی می‌کنند؛ تیکت، دانلود و لیست علاقه‌مندی را از فهرست در دسترس حذف کردم چون مسیرهای REST‌شان هنوز وجود نداشت.

نتیجه و شواهد

این مرکز عرضه شده و به‌عنوان بخشی از a2-crm-plugin در پروداکشن اجرا می‌شود، در حال حاضر روی نسخه‌ی ۳٫۲٫۱۷. اندازه‌گیری رسمی قبل و بعد رویش انجام نداده‌ام و آن را آرایش هم نمی‌کنم؛ شاهدش این است که در استفاده‌ی روزانه از ریلیزهای نگهداری پیاپی جان سالم به‌در برده.

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

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

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

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

خلاصه_اجرایی {
  پروژه: "WooCommerce Customer Hub"
  پشته: "PHP (وردپرس + ووکامرس)، جاوااسکریپت خالص، MySQL"
  ماژول: "a2-crm-plugin/includes/customer-hub"
  api: "customer-hub/v1 ← خلاصه، سفارش‌ها، وفاداری، کیف پول،
        اخیراً دیده‌شده، پروفایل، آدرس‌ها"
  جدول‌ها: "دفتر امتیاز، دفتر کیف پول، اخیراً دیده‌شده"
  هوک‌ها: "woocommerce_order_status_changed ← اعمال/برگشت امتیاز
           template_redirect ← ردیابی بازدید"
  وفاداری: "سطح برنز/نقره/طلا/VIP در ۰/۵۰۰/۱۵۰۰/۵۰۰۰ امتیاز"
  ایمنی: "هر نوشتن امتیاز idempotent؛ بازپخش دوبار اعتبار نمی‌دهد"
}

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

این ماژول نمونه‌ای است از اینکه چطور ووکامرس را گسترش می‌دهم بدون جنگیدن با آن: جدول اختصاصی جایی که هسته مدلی ندارد، هوک‌های هسته جایی که دارد، و یک لایه‌ی REST که فرانت‌اند را صادق نگه می‌دارد.

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