# Boost Offer/Options Finalization Audit (Phase A)

This audit maps the current implementation and flags what will be addressed in phases B–F.

## Key Backend Routes
- Admin options: `routes/admin.php` (`admin.option.*`)
- Admin seller types: `routes/admin.php` (`admin.seller-type.*`)
- Admin seller type scoping: `routes/admin.php` (`admin.seller-type-scope.*`, `admin.categories.seller-types.*`, `admin.products.seller-types.*`)
- Admin binding manager: `routes/admin.php` (`admin.option-binding.*`)
- Admin additional items approval: `routes/admin.php` (`admin.seller-additional-items.*`)
- API product detail: `routes/api.php` (`GET products/{productId}/detail`)
- API offer form data + pricing: `routes/api.php` (`api/seller/offers/form-data`, `api/seller/offers`, `api/seller/offers/types`)

## Key Backend Files
- Option CRUD + show_as_filter: `app/Http/Controllers/Admin/OptionController.php`
- SellerType CRUD + level support: `app/Http/Controllers/Admin/SellerTypeControoler.php`
- SellerType scoping: `app/Http/Controllers/Admin/SellerTypeScopeController.php`
- Binding UI/controller: `app/Http/Controllers/Admin/OptionBindingController.php`, `resources/views/admin/optionBinding/index.blade.php`
- SellerType admin UI: `resources/views/admin/sellerType/create.blade.php`, `resources/views/admin/sellerType/edit.blade.php`
- Option admin UI (level inputs): `resources/views/admin/option/create.blade.php`, `resources/views/admin/option/edit.blade.php`
- Offer matching/pricing: `app/Services/OfferMatchingService.php`, `app/Services/OfferPricingService.php`, `app/Services/OfferMatchingEvaluator.php`
- Offer APIs + binding resolution: `app/Http/Controllers/Api/OfferController.php`
- Buyer product detail payload: `app/Http/Controllers/Api/ProductDetailController.php`
- Binding models: `app/Models/SellerTypeOptionBinding.php`, `app/Models/SellerTypeItemOptionItemBinding.php`
- Binding schema: `database/migrations/2026_01_05_000003_create_seller_type_option_bindings_table.php`,
  `database/migrations/2026_01_05_000004_create_seller_type_item_option_item_bindings_table.php`

## Key Frontend Files (/Frontend)
- Seller offer editor modal (pricing/modifiers/levels/additional items): `Frontend/src/components/modals/SellerOfferTypeModal.tsx`
- Seller offers listing/editor entry: `Frontend/src/app/offers/page.tsx`
- Buyer product page (offers, add-ons, breakdown): `Frontend/src/app/product/[categorySlug]/[productSlug]/page.tsx`
- Offer/option typing: `Frontend/src/types/product.ts`

## Findings to Fix (Phases B–F)
### Phase B — show_as_filter
- `OptionController@store` reads `show_in_filter` but form sends `show_as_filter`.
- `SellerTypeControoler@store` and `@update` read `show_in_filter` but form sends `show_as_filter`.

### Phase C — SellerType level support
- `SellerTypeControoler` validation still requires `item.*` for level input types.
- Admin SellerType UI shows items even for `input_type=level`; needs scope-aware messaging and config fields.
- Ensure `ui_mode` + `config_json` persist reliably for level input type.

### Phase D — Binding integrity
- `seller_type_item_option_item_bindings` only unique on pair; needs one-to-one constraint and dedupe migration.
- Controller validation lacks scope checks (seller type scope, option scope, option-item relationship).

### Phase E — Admin binding UX
- Current Blade UI is global and not scope-aware; needs cascading selections, mapped/unmapped panels, and safe saves.
- Add/adjust endpoints to support scoped binding manager if missing.

### Phase F — Seller/Buyer UX polish
- Seller offer editor in `SellerOfferTypeModal` needs auto-build 0-value modifiers, bulk apply, preview breakdown, and clearer additional items statuses.
- Buyer product page needs clearer seller-specific add-on labeling, optional sorting, and friendly breakdown/errors display.

