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

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

جعبه اصلاح سفارش A2

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

مسئله تجاری

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

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

  • یک متاباکس روی صفحه‌ی ویرایش سفارش با سه عملیات: تعویض یک قلم با یک یا چند محصول جدید، افزودن یک ردیف حمل اضافه، یا اصلاح جمع ردیف یک قلم موجود.
  • یک رکورد پرداخت تفکیک‌شده که آنچه از درگاه آمده را از انتقال‌های کارت‌به‌کارت جدا می‌کند و به‌شکل ردیف‌های تفکیکی ذخیره می‌شود.
  • یک اسنپ‌شات کامل سفارش که پیش از هر تغییری گرفته می‌شود، با undo تک‌کلیکی از طریق یک اندپوینت AJAX اختصاصی.
  • یک نشان، ستون و نمای فیلتر برای سفارش‌های اصلاح‌شده روی هر دو فهرست shop_order قدیمی و جدول wc-orders در HPOS، تا سفارش‌های تعمیرشده قابل‌دیدن بمانند.
  • متای ثبت بازپرداخت داخلی، تا پولی که بیرون از درگاه برگردانده می‌شود روی سفارش ثبت شود نه در حافظه‌ی کسی.

رویکرد فنی

  • هر اکشن از طریق admin-ajax پشت یک nonce و یک دروازه‌ی دسترسی اجرا می‌شود.
  • یک مرحله‌ی محاسبه، جمع قدیم، جمع جدید و تفاوت علامت‌دار را پیش از اعمال هر چیزی پیش‌نمایش می‌دهد.
  • این ابزار هیچ‌وقت درگاه پرداخت را صدا نمی‌زند و هیچ‌وقت وضعیت را منتقل نمی‌کند؛ فقط اقلام، کارمزدها و کلیدهای متای خودش را زیر یک پیشوند مشخص ویرایش می‌کند.
  • ورودی‌های عددی رقم‌های فارسی و عربی را نرمال می‌کنند و جداکننده‌های هزارگان را پیش از پارس حذف می‌کنند، چون کارکنان مبالغ را از فاکتور کپی می‌کنند.
  • هر اصلاح اعمال‌شده به یک لاگ تاریخچه با خلاصه‌ی فارسی خوانا اضافه می‌شود.

نتیجه و شواهد

این ماژول روی نسخه‌ی ۱٫۷٫۰ است و روی ادمین فروشگاه زنده اجرا می‌شود. زمان صرفه‌جویی‌شده را رسماً اندازه نگرفته‌ام؛ شاهد عملی این است که سفارش‌های استثنایی داخل یک باکس با یک مسیر undo تعمیر می‌شوند نه از راه ویرایش خام سفارش.

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

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

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

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

خلاصه_اجرایی {
  پروژه: "A2 Order Fix Box"
  پشته: "افزونه‌ی MU وردپرس، ووکامرس، admin-ajax"
  ماژول: "a2-order-replacement-box.php (v1.7.0)"
  عملیات: "تعویض قلم، ردیف حمل اضافه، اصلاح قیمت"
  ajax: "محاسبه، اعمال، بازسازی جمع‌ها، undo"
  متا: "اسنپ‌شات، تاریخچه، ردیف‌های دریافتی خارج از درگاه"
  تضمین‌ها: "بدون فراخوان درگاه، بدون تغییر وضعیت،
             اسنپ‌شات + undo"
  وضعیت: "در پروداکشن روی ادمین گالری جواهریان"
}

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

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

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