تور‌اپ: بازنویسی بک‌اند پلتفرم رزرو تور

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

نسخه قدیمی بک‌اند را از ابتدا بازنویسی کردم و روی Laravel 12، Filament 5 و PostgreSQL آوردم. شرط اصلی این بود که اپلیکیشن‌های موجود بدون هیچ تغییری به کار خود ادامه بدهند.

تکنولوژی‌ها: Laravel 12، Filament 5، PostgreSQL، PHP 8.2+، Pest، Docker، CI

نحوه انتقال

۱. تحلیل و مستندسازی قبل از کد. ابتدا کد قدیمی را کامل بررسی کردم و برای هر اندپوینت یک سند قرارداد نوشتم (مسیر، ورودی، خروجی و نمونه پاسخ). یک فایل OpenAPI هم از همه اندپوینت‌ها ساختم.

۲. قرارداد API منجمد. مسیر، متد، ورودی و خروجی هر اندپوینت عیناً مثل قبل ماند، تا کلاینت‌های موجود به هیچ تغییری نیاز نداشته باشند.

۳. طراحی مجدد دیتابیس. دیتابیس از MySQL به PostgreSQL رفت. ERD از نو و با نام‌گذاری یکدست طراحی شد: ستون‌های صریح و typeدار، وضعیت‌ها با enum، تاریخ‌ها به UTC و مبالغ به تومان.

۴. جایگزینی API مدیریتی با پنل Filament. دو پنل مدیریتی ساخته شد، یکی برای ادمین و یکی برای لیدر تور.

۵. انتقال داده. داده‌های دیتابیس قدیمی با یک دستور Artisan به ساختار جدید منتقل شد و صحت انتقال با تست‌های خودکار بررسی شد.

۶. تضمین کیفیت. حدود ۱۶۵۰ تست خودکار با Pest روی PostgreSQL واقعی اجرا می‌شود. هر اندپوینت یک تست قرارداد دارد و خروجی ۵۱ اندپوینت قدیمی با نمونه‌های اصلی مقایسه شد. تحلیل ایستا (Larastan) و بررسی استایل (Pint) هم در CI اجرا می‌شوند.

۷. استقرار. سند عملیاتی جداگانه‌ای برای سوییچ نهایی از سیستم قدیمی به جدید نوشتم.

نتیجه

  • ۷۲ مسیر API: ۵۱ اندپوینت موروث با قرارداد کاملاً منجمد، ۷ اندپوینت تیکتینگ جدید و چند اندپوینت و کال‌بک پرداخت.
  • حدود ۱۶۵۰ تست خودکار سبز.
  • ۲۵ تصمیم معماری مستند (ADR).
  • امکانات جدید پس از تحویل: درگاه‌های پرداخت چندگانه، مقاصد طبیعت‌گردی، برچسب گروه، برنامه معرفی (کد معرف) و بک‌آپ از پنل ادمین.

درس‌ها

  • مستندسازی قبل از کد، هزینه بازنویسی را به‌شدت پایین می‌آورد.
  • در بازنویسی با قرارداد منجمد، حفظ رفتار قبلی از «بهتر کردن» آن مهم‌تر است.

ثبت سفارش شبیه به این نمونه کار

"*"فیلدهای ضروری را نشان می دهد

این فیلد برای هدف اعتبار سنجی است و باید بدون تغییر باقی بماند .

خرید محصولات مرتبط

محصولی مرتبط با این نمونه کار موجود نیست

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *