| السيناريو | التصميم الأنسب |
|---|---|
add-to-cart محتاجة productId | تستقبل الـ ID كـ input، وتستخدم entities/cart |
add-to-wishlist محتاجة Product | تعتمد على entities/product عند الحاجة |
| الهيدر محتاج عدد عناصر السلة | يقرأ entities/cart عبر Query |
| الـ Checkout محتاج بيانات السلة | يقرأ Cart ويستخدم Feature مستقلة لإتمام الطلب |
| Apply Coupon محتاجة إجمالي الطلب | تتعامل مع مدخلات وبيانات الـ Checkout عبر واجهة واضحة، أو منطق Domain مناسب |
| Feature محتاجة تنفّذ Feature أخرى | تجنّب الاعتماد المباشر. اجمعهما في Page أو Widget، أو أنشئ Use Case مشتركًا في مكان مناسب |
مش كل منطق مشترك يتحط في shared. لو المنطق خاص بالـ Cart، مكانه الطبيعي entities/cart أو Slice مسؤولة عن الـ Cart، مش Utilities عامة لمجرد إعادة استخدامه.
مش لازم كل API endpoint يبقى جوه Entity. مكانه يتحدد حسب المسؤولية. الـ Checkout ممكن يكون Feature مستقلة لو هو فعل المستخدم الأساسي، بينما Order كيان له بياناته واستعلاماته الخاصة.
خلّصت الفصل لما
🧠 اختبر نفسك
١) منطق خاص بالسلة، أحطه في shared عشان أكتر من فيتشر تستخدمه؟
لأ. مكانه
entities/cart أو شريحة مسؤولة عن السلة.٢) Checkout يبقى Entity ولا Feature؟
Feature لو هو فعل المستخدم. Order هو الكيان اللي له بيانات واستعلامات.