refactor: products/materials 테이블 및 관련 코드 삭제
- products, materials, product_components 테이블 삭제 마이그레이션 - FK 제약조건 정리 (orders, order_items, material_receipts, lots) - 관련 Models 삭제: Product, Material, ProductComponent 등 - 관련 Controllers 삭제: ProductController, MaterialController, ProductBomItemController - 관련 Services 삭제: ProductService, MaterialService, ProductBomService - 관련 Requests, Swagger 파일 삭제 - 라우트 정리: /products, /materials 엔드포인트 제거 모든 품목 관리는 /items 엔드포인트로 통합됨 item_id_mappings 테이블에 ID 매핑 보존 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -35,14 +35,14 @@
|
||||
use App\Http\Controllers\Api\V1\ItemsBomController;
|
||||
use App\Http\Controllers\Api\V1\ItemsController;
|
||||
use App\Http\Controllers\Api\V1\ItemsFileController;
|
||||
use App\Http\Controllers\Api\V1\MaterialController;
|
||||
// use App\Http\Controllers\Api\V1\MaterialController; // REMOVED: materials 테이블 삭제됨
|
||||
use App\Http\Controllers\Api\V1\MenuController;
|
||||
use App\Http\Controllers\Api\V1\ModelSetController;
|
||||
use App\Http\Controllers\Api\V1\PermissionController;
|
||||
use App\Http\Controllers\Api\V1\PostController;
|
||||
use App\Http\Controllers\Api\V1\PricingController;
|
||||
use App\Http\Controllers\Api\V1\ProductBomItemController;
|
||||
use App\Http\Controllers\Api\V1\ProductController;
|
||||
// use App\Http\Controllers\Api\V1\ProductBomItemController; // REMOVED: products 테이블 삭제됨
|
||||
// use App\Http\Controllers\Api\V1\ProductController; // REMOVED: products 테이블 삭제됨
|
||||
use App\Http\Controllers\Api\V1\QuoteController;
|
||||
use App\Http\Controllers\Api\V1\RefreshController;
|
||||
use App\Http\Controllers\Api\V1\RegisterController;
|
||||
@@ -409,35 +409,10 @@
|
||||
Route::get('/{id}/revisions', [PricingController::class, 'revisions'])->whereNumber('id')->name('v1.pricing.revisions'); // 변경이력
|
||||
});
|
||||
|
||||
// Products & Materials (제품/자재 통합 관리)
|
||||
Route::prefix('products')->group(function () {
|
||||
// REMOVED: Products & Materials 라우트 삭제됨 (products/materials 테이블 삭제)
|
||||
// 모든 품목 관리는 /items 엔드포인트 사용
|
||||
|
||||
// 제품 카테고리 (기존 product/category에서 이동)
|
||||
Route::get('/categories', [ProductController::class, 'getCategory'])->name('v1.products.categories'); // 제품 카테고리
|
||||
|
||||
// 자재 관리 (기존 독립 materials에서 이동) - ProductController 기본 라우팅보다 앞에 위치
|
||||
Route::get('/materials', [MaterialController::class, 'index'])->name('v1.products.materials.index'); // 자재 목록
|
||||
Route::post('/materials', [MaterialController::class, 'store'])->name('v1.products.materials.store'); // 자재 생성
|
||||
Route::get('/materials/{id}', [MaterialController::class, 'show'])->name('v1.products.materials.show'); // 자재 단건
|
||||
Route::patch('/materials/{id}', [MaterialController::class, 'update'])->name('v1.products.materials.update'); // 자재 수정
|
||||
Route::delete('/materials/{id}', [MaterialController::class, 'destroy'])->name('v1.products.materials.destroy'); // 자재 삭제
|
||||
|
||||
// (선택) 드롭다운/모달용 간편 검색 & 활성 토글
|
||||
Route::get('/search', [ProductController::class, 'search'])->name('v1.products.search');
|
||||
Route::post('/{id}/toggle', [ProductController::class, 'toggle'])->name('v1.products.toggle');
|
||||
|
||||
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)
|
||||
|
||||
// BOM 카테고리
|
||||
Route::get('bom/categories', [ProductBomItemController::class, 'suggestCategories'])->name('v1.products.bom.categories.suggest'); // 전역(테넌트) 추천
|
||||
Route::get('{id}/bom/categories', [ProductBomItemController::class, 'listCategories'])->name('v1.products.bom.categories'); // 해당 제품에서 사용 중
|
||||
});
|
||||
|
||||
// Items (통합 품목 조회 - materials + products UNION)
|
||||
// Items (통합 품목 관리 - items 테이블)
|
||||
Route::prefix('items')->group(function () {
|
||||
Route::get('', [ItemsController::class, 'index'])->name('v1.items.index'); // 통합 목록
|
||||
Route::post('', [ItemsController::class, 'store'])->name('v1.items.store'); // 품목 생성
|
||||
@@ -469,22 +444,8 @@
|
||||
Route::delete('/{fileId}', [ItemsFileController::class, 'delete'])->name('v1.items.files.delete'); // 파일 삭제 (file_id)
|
||||
});
|
||||
|
||||
// BOM (product_components: ref_type=PRODUCT|MATERIAL)
|
||||
Route::prefix('products/{id}/bom')->group(function () {
|
||||
Route::post('/', [ProductBomItemController::class, 'replace'])->name('v1.products.bom.replace');
|
||||
|
||||
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');
|
||||
|
||||
Route::get('/tree', [ProductBomItemController::class, 'tree'])->name('v1.products.bom.tree');
|
||||
});
|
||||
// REMOVED: products/{id}/bom 라우트 삭제됨 (product_components 테이블 삭제)
|
||||
// BOM 관리는 /items/{id}/bom 엔드포인트 사용
|
||||
|
||||
// 설계 전용 (Design) - 운영과 분리된 네임스페이스/경로
|
||||
Route::prefix('design')->group(function () {
|
||||
|
||||
Reference in New Issue
Block a user