fix : 카테고리, 제품등록, BOM등록 API (일부 개발 - BOM 추가 작업 필요)
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Api\V1\ClassificationController;
|
||||
use App\Http\Controllers\Api\V1\CategoryLogController;
|
||||
use App\Http\Controllers\Api\V1\ProductBomItemController;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use App\Http\Controllers\Api\V1\CommonController;
|
||||
@@ -24,6 +25,9 @@
|
||||
use App\Http\Controllers\Api\V1\TenantOptionValueController;
|
||||
use App\Http\Controllers\Api\V1\TenantUserProfileController;
|
||||
use App\Http\Controllers\Api\V1\CategoryController;
|
||||
use App\Http\Controllers\Api\V1\CategoryFieldController;
|
||||
use App\Http\Controllers\Api\V1\CategoryTemplateController;
|
||||
use App\Http\Controllers\Api\V1\ClassificationController;
|
||||
|
||||
// error test
|
||||
Route::get('/test-error', function () {
|
||||
@@ -239,7 +243,51 @@
|
||||
Route::delete('/{id}', [CategoryController::class, 'destroy'])->name('v1.categories.destroy'); // 삭제(soft)
|
||||
});
|
||||
|
||||
// Product API
|
||||
// Category Field API
|
||||
Route::prefix('categories')->group(function () {
|
||||
// 목록/생성 (카테고리 기준)
|
||||
Route::get ('/{id}/fields', [CategoryFieldController::class, 'index'])->name('v1.categories.fields.index'); // ?page&size&sort&order
|
||||
Route::post ('/{id}/fields', [CategoryFieldController::class, 'store'])->name('v1.categories.fields.store');
|
||||
|
||||
// 단건
|
||||
Route::get ('/fields/{field}', [CategoryFieldController::class, 'show'])->name('v1.categories.fields.show');
|
||||
Route::patch ('/fields/{field}', [CategoryFieldController::class, 'update'])->name('v1.categories.fields.update');
|
||||
Route::delete('/fields/{field}', [CategoryFieldController::class, 'destroy'])->name('v1.categories.fields.destroy');
|
||||
|
||||
// 일괄 정렬/업서트
|
||||
Route::post ('/{id}/fields/reorder', [CategoryFieldController::class, 'reorder'])->name('v1.categories.fields.reorder'); // [{id,sort_order}]
|
||||
Route::put ('/{id}/fields/bulk-upsert', [CategoryFieldController::class, 'bulkUpsert'])->name('v1.categories.fields.bulk'); // [{id?,field_key,...}]
|
||||
});
|
||||
|
||||
|
||||
// Category Template API
|
||||
Route::prefix('categories')->group(function () {
|
||||
// 버전 목록/생성 (카테고리 기준)
|
||||
Route::get ('/{id}/templates', [CategoryTemplateController::class, 'index'])->name('v1.categories.templates.index'); // ?page&size
|
||||
Route::post ('/{id}/templates', [CategoryTemplateController::class, 'store'])->name('v1.categories.templates.store'); // 새 버전 등록
|
||||
|
||||
// 단건
|
||||
Route::get ('/templates/{tpl}', [CategoryTemplateController::class, 'show'])->name('v1.categories.templates.show');
|
||||
Route::patch ('/templates/{tpl}', [CategoryTemplateController::class, 'update'])->name('v1.categories.templates.update'); // remarks 등 메타 수정
|
||||
Route::delete('/templates/{tpl}', [CategoryTemplateController::class, 'destroy'])->name('v1.categories.templates.destroy');
|
||||
|
||||
// 운영 편의
|
||||
Route::post ('/{id}/templates/{tpl}/apply', [CategoryTemplateController::class, 'apply'])->name('v1.categories.templates.apply'); // 해당 버전 활성화
|
||||
Route::get ('/{id}/templates/{tpl}/preview', [CategoryTemplateController::class, 'preview'])->name('v1.categories.templates.preview');// 렌더용 스냅샷
|
||||
// (선택) 버전 간 diff
|
||||
Route::get ('/{id}/templates/diff', [CategoryTemplateController::class, 'diff'])->name('v1.categories.templates.diff'); // ?a=ver&b=ver
|
||||
});
|
||||
|
||||
|
||||
// Category Log API
|
||||
Route::prefix('categories')->group(function () {
|
||||
Route::get ('/{id}/logs', [CategoryLogController::class, 'index'])->name('v1.categories.logs.index'); // ?action=&from=&to=&page&size
|
||||
Route::get ('/logs/{log}', [CategoryLogController::class, 'show'])->name('v1.categories.logs.show');
|
||||
// (선택) 특정 변경 시점으로 카테고리 복구(템플릿/필드와 별개)
|
||||
// Route::post('{id}/logs/{log}/restore', [CategoryLogController::class, 'restore'])->name('v1.categories.logs.restore');
|
||||
});
|
||||
|
||||
// Classifications API
|
||||
Route::prefix('classifications')->group(function () {
|
||||
Route::get ('', [ClassificationController::class, 'index'])->name('v1.classifications.index'); // 목록
|
||||
Route::post ('', [ClassificationController::class, 'store'])->name('v1.classifications.store'); // 생성
|
||||
@@ -248,5 +296,31 @@
|
||||
Route::delete('/{id}', [ClassificationController::class, 'destroy'])->whereNumber('id')->name('v1.classifications.destroy'); // 삭제
|
||||
});
|
||||
|
||||
// Products (모델/부품/서브어셈블리)
|
||||
Route::prefix('products')->group(function () {
|
||||
Route::get ('', [ProductController::class, 'index'])->name('v1.products.index'); // 목록/검색(q, category_id, product_type, active, page/size)
|
||||
Route::post ('', [ProductController::class, 'store'])->name('v1.products.store'); // 생성
|
||||
Route::get ('/{id}', [ProductController::class, 'show'])->name('v1.products.show'); // 단건
|
||||
Route::patch ('/{id}', [ProductController::class, 'update'])->name('v1.products.update'); // 수정
|
||||
Route::delete('/{id}', [ProductController::class, 'destroy'])->name('v1.products.destroy'); // 삭제(soft)
|
||||
|
||||
// (선택) 드롭다운/모달용 간편 검색 & 활성 토글
|
||||
Route::get ('/search', [ProductController::class, 'search'])->name('v1.products.search');
|
||||
Route::post ('/{id}/toggle', [ProductController::class, 'toggle'])->name('v1.products.toggle');
|
||||
});
|
||||
|
||||
// BOM (product_components: ref_type=PRODUCT|MATERIAL)
|
||||
Route::prefix('products/{id}/bom')->group(function () {
|
||||
Route::get ('/items', [ProductBomItemController::class, 'index'])->name('v1.products.bom.items.index'); // 조회(제품+자재 병합)
|
||||
Route::post ('/items/bulk', [ProductBomItemController::class, 'bulkUpsert'])->name('v1.products.bom.items.bulk'); // 대량 업서트
|
||||
Route::patch ('/items/{item}', [ProductBomItemController::class, 'update'])->name('v1.products.bom.items.update'); // 단건 수정
|
||||
Route::delete('/items/{item}', [ProductBomItemController::class, 'destroy'])->name('v1.products.bom.items.destroy'); // 단건 삭제
|
||||
Route::post ('/items/reorder', [ProductBomItemController::class, 'reorder'])->name('v1.products.bom.items.reorder'); // 정렬 변경
|
||||
|
||||
// (선택) 합계/검증
|
||||
Route::get ('/summary', [ProductBomItemController::class, 'summary'])->name('v1.products.bom.summary');
|
||||
Route::get ('/validate', [ProductBomItemController::class, 'validateBom'])->name('v1.products.bom.validate');
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user