Implement a tiered loyalty and rewards program engine to incentivize repeat purchases. This includes a RewardPoints entity linked to user profiles, a listener for order.completed events to calculate and grant points (e.g., 10 points per $1 spent), and redemption logic for converting points.
- **Context:** It is 5x cheaper to keep an existing customer than to acquire a new one. A loyalty program incentivizes repeat purchases. - **Problem:** There is currently no mechanism to reward frequent buyers or high-volume sellers. - **Acceptance Criteria:** - Implement a `RewardPoints` entity linked to the User profile. - Create a listener for `order.completed` events that calculates and grants points (e.g., 10 points per $1 spent). - Build a redemption logic where points can be converted into `DiscountCoupons` or applied directly to the `Checkout` flow to reduce the final total.