مطالعه موردی مهندسی
هاب مشتری 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 که فرانتاند را صادق نگه میدارد.
خویشتنداری هم نشان میدهد. فیچرهایی که بکاند کارآمد نداشتند بهجای عرضه به شکل صفحهی خالی، از فهرست تبها حذف شدند، و هر نوشتنی که ارزش مشتری را لمس میکند برگشتپذیر ساخته شد.