only(['type', 'search', 'q', 'category_id']); $perPage = (int) ($request->input('size') ?? 20); return $this->service->getItems($filters, $perPage); }, __('message.fetched')); } /** * 단일 품목 조회 * * GET /api/v1/items/{id}?item_type=PRODUCT|MATERIAL&include_price=true&client_id=1&price_date=2025-01-10 */ public function show(Request $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { $itemType = strtoupper($request->input('item_type', 'PRODUCT')); $includePrice = filter_var($request->input('include_price', false), FILTER_VALIDATE_BOOLEAN); $clientId = $request->input('client_id') ? (int) $request->input('client_id') : null; $priceDate = $request->input('price_date'); return $this->service->getItem($itemType, $id, $includePrice, $clientId, $priceDate); }, __('message.fetched')); } }