Boost Offer Pricing Integration Notes

Current flow summary
- Product option pricing is driven by `option_item_price_products` rows (prefix +, *, %, =).
- Buyer option selection is parsed in `App\Http\Controllers\User\ProductController::product_detail` and `App\Http\Controllers\Api\PaymentController::productPayment`.
- Offer data is flat (base `unit_price`) and seller attribute selections are stored in `seller_type_offer_items` (no option-level pricing).
- Offer selection on buyer product detail returns all offers with seller type items; no matching by buyer selections.

Key integration points for new features
- Offer matching: replace "return all offers" in `App\Http\Controllers\User\ProductController::product_detail` with `OfferMatchingService`.
- Offer pricing: replace manual option price math in `ProductController::product_detail` and `PaymentController::productPayment` with `OfferPricingService`.
- Fallback behavior: if no seller-specific modifier exists for a selected standard option item, continue using `option_item_price_products` logic.
- Order storage: reuse `order_options` and `order_option_items` to persist selected items; for level/range selections, store from/to in `text_value` or add a new structure later.

Data models currently in use
- Offers: `app/Models/Offer.php` (fields include `unit_price`, `product_id`, `user_id`).
- Options: `app/Models/Option.php` with items in `app/Models/OptionItem.php`.
- Product option grouping: `option_group_products`, `option_group_options`.
- Product-specific option item pricing: `option_item_price_products` (prefix/value).
- Seller types: `seller_type`, `seller_type_items`, `seller_type_offer_items`.

Planned hook locations
- `OfferMatchingService` queried by product detail endpoint to filter offers by selections (items, additional items, level ranges).
- `OfferPricingService` called by:
  - product detail endpoint to compute `final_price` for each matched offer
  - order creation/payment flow to ensure checkout uses the same pricing engine.
