feat: 수동 품목 단가 조회 API 추가 및 디버그 로그 정리

- QuoteController에 getItemPrices 엔드포인트 추가
- QuoteCalculationService에 품목 코드 배열로 단가 조회 기능 추가
- 불필요한 디버그 로그 제거

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-29 09:29:19 +09:00
parent 946e008b02
commit aa7678c358
3 changed files with 51 additions and 13 deletions

View File

@@ -81,19 +81,8 @@ public function store(QuoteStoreRequest $request)
*/
public function update(QuoteUpdateRequest $request, int $id)
{
$validated = $request->validated();
// 🔍 디버깅: 요청 데이터 확인
\Log::info('🔍 [QuoteController::update] 요청 수신', [
'id' => $id,
'raw_options_keys' => $request->input('options') ? array_keys($request->input('options')) : null,
'raw_options_detail_items_count' => $request->input('options.detail_items') ? count($request->input('options.detail_items')) : 0,
'validated_options_keys' => isset($validated['options']) ? array_keys($validated['options']) : null,
'validated_options_detail_items_count' => isset($validated['options']['detail_items']) ? count($validated['options']['detail_items']) : 0,
]);
return ApiResponse::handle(function () use ($validated, $id) {
return $this->quoteService->update($id, $validated);
return ApiResponse::handle(function () use ($request, $id) {
return $this->quoteService->update($id, $request->validated());
}, __('message.quote.updated'));
}
@@ -270,4 +259,22 @@ public function sendHistory(int $id)
return $this->documentService->getSendHistory($id);
}, __('message.fetched'));
}
/**
* 품목 단가 조회
*
* 품목 코드 배열을 받아 단가를 조회합니다.
* 수동 품목 추가 시 단가를 조회하여 견적금액에 반영합니다.
*/
public function getItemPrices(\Illuminate\Http\Request $request)
{
$request->validate([
'item_codes' => 'required|array|min:1',
'item_codes.*' => 'required|string',
]);
return ApiResponse::handle(function () use ($request) {
return $this->calculationService->getItemPrices($request->input('item_codes'));
}, __('message.fetched'));
}
}

View File

@@ -455,4 +455,34 @@ private function getDefaultInputSchema(?string $productCategory = null): array
return $commonSchema;
}
/**
* 품목 단가 조회
*
* 품목 코드 배열을 받아 단가를 조회합니다.
* FormulaEvaluatorService의 getItemPrice 로직을 활용합니다.
*
* @param array $itemCodes 품목 코드 배열
* @return array 품목별 단가 정보 [item_code => ['unit_price' => number, 'item_name' => string]]
*/
public function getItemPrices(array $itemCodes): array
{
$tenantId = $this->tenantId();
if (! $tenantId) {
return [];
}
$result = [];
foreach ($itemCodes as $itemCode) {
$price = $this->formulaEvaluator->getItemPrice($itemCode, $tenantId);
$result[$itemCode] = [
'item_code' => $itemCode,
'unit_price' => $price,
];
}
return $result;
}
}

View File

@@ -13,6 +13,7 @@
use App\Services\Service;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;