جهت مشاهدهی چالش هفتهی قبل اینجا کلیک کنید.
پیشزمینه:
در این چالش، به دنیای پیچیده مدلسازی سفارش در یک سامانه جامع خدمات گردشگری آنلاین میپردازیم. این سامانه طیف وسیعی از خدمات از جمله رزرو بلیط هواپیما، قطار، اقامتگاه، اجاره خودرو، خرید بیمه سفر و رزرو تورهای گردشگری را ارائه میدهد.
سناریو:
شما در حال پیادهسازی و طراحی یک سیستم مدیریت سفارشات در شرکت MyGlobalTravel.Com هستید. این سامانه به کاربران امکان میدهد تا ترکیبی از خدمات مختلف را در یک سفارش خریداری کنند. برای مثال، یک کاربر میتواند همزمان بلیط هواپیما، رزرو هتل، اجاره خودرو و بیمه سفر را در یک سفارش خریداری کند. همچنین، سامانه باید قابلیت شخصیسازی سفارشها را برای کاربران فراهم کند. به عنوان مثال، یک کاربر میتواند برای پرواز خود صندلی خاص، وعده غذایی ویژه یا خدمات اضافی را درخواست کند.
ویژگیهای خاص این سامانه:
- سفارشهای چندگانه: کاربران میتوانند چندین سفارش جداگانه ایجاد کنند یا سفارشهای موجود را ویرایش کنند.
- سفارشهای گروهی: کاربران میتوانند سفارشهای گروهی ایجاد کنند و برای چندین نفر به طور همزمان رزرو انجام دهند.
- سفارشهای سفارشی: کاربران میتوانند سفارشهای خود را با توجه به نیازهای خاص خود شخصیسازی کنند.
- پرداختهای چند مرحلهای: کاربران میتوانند سفارش خود را در چند مرحله پرداخت کنند.
- لغو و تغییر سفارش: کاربران میتوانند سفارش خود را لغو یا تغییر دهند و هزینههای مربوط به آن را مشاهده کنند.
- امتیازدهی و نظرات: کاربران میتوانند پس از اتمام سفر خود به خدمات ارائه شده امتیاز دهند و نظرات خود را ثبت کنند.
صورت مسئله:
با توجه به سناریوی بالا، به سوالات زیر پاسخ دهید:
- سفارش را مدلسازی کنید. آیا سفارش یک Aggregate است؟ اگر بله، مرزهای آن را مشخص کنید. چه مفاهیمی مانند جزئیات مسافر، آیتمهای سفارش (بلیط، اقامتگاه، اجاره خودرو، بیمه)، وضعیت پرداخت، تاریخ سفر، درخواستهای ویژه و … را در این Aggregate قرار میدهید؟
- چندین مدل برای سفارش ارائه دهید.
- چگونه روابط بین آیتمهای مختلف یک سفارش را مدل میکنید؟ مثلاً چگونه یک سفارش میتواند شامل چندین بلیط برای مسافران مختلف باشد و هر بلیط دارای ویژگیهای خاص خود باشد؟
- چگونه سفارشهای گروهی را مدل میکنید؟
- چگونه سفارشهای سفارشی را با درخواستهای ویژه کاربران مدیریت میکنید؟
- چگونه روشهای پرداخت مختلف (کارت اعتباری، پرداخت آنلاین، پرداخت نقدی) را مدل میکنید؟
- چگونه پرداختهای چند مرحلهای را مدیریت میکنید؟
اهداف چالش:
- درک عمیقتر مفاهیم DDD
- طراحی یک مدل سفارش جامع و انعطافپذیر برای یک سامانه گردشگری آنلاین پیچیده
- بررسی چالشهای مربوط به شخصیسازی، مدیریت موجودی، پرداخت و تغییرات در سفارشها
- تقویت مهارتهای مدلسازی دامنه در حوزههای پیچیده
این چالش به شما کمک میکند تا درک عمیقتری از مفاهیم DDD پیدا کرده و بتوانید مدلهای دامنه پیچیده را به صورت مؤثر طراحی کنید.