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:
2025-12-14 00:20:09 +09:00
parent a486595d07
commit 039fd623df
23 changed files with 158 additions and 4111 deletions

View File

@@ -1,82 +0,0 @@
<?php
namespace App\Http\Controllers\Api\V1;
use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Http\Requests\Product\ProductStoreRequest;
use App\Http\Requests\Product\ProductUpdateRequest;
use App\Services\ProductService;
use Illuminate\Http\Request;
class ProductController extends Controller
{
public function __construct(private ProductService $service) {}
public function getCategory(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return $this->service->getCategory($request);
}, __('message.product.category_fetched'));
}
// GET /products
public function index(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return $this->service->index($request->all());
}, __('message.product.fetched'));
}
// POST /products
public function store(ProductStoreRequest $request)
{
return ApiResponse::handle(function () use ($request) {
return $this->service->store($request->validated());
}, __('message.product.created'));
}
// GET /products/{id}
public function show(int $id)
{
return ApiResponse::handle(function () use ($id) {
return $this->service->show($id);
}, __('message.product.fetched'));
}
// PATCH /products/{id}
public function update(int $id, ProductUpdateRequest $request)
{
return ApiResponse::handle(function () use ($id, $request) {
return $this->service->update($id, $request->validated());
}, __('message.product.updated'));
}
// DELETE /products/{id}
public function destroy(int $id)
{
return ApiResponse::handle(function () use ($id) {
$this->service->destroy($id);
return 'success';
}, __('message.product.deleted'));
}
// GET /products/search
public function search(Request $request)
{
return ApiResponse::handle(function () use ($request) {
return $this->service->search($request->all());
}, __('message.product.searched'));
}
// Note: toggle 메서드는 is_active 필드 제거로 인해 비활성화됨
// 필요시 attributes JSON이나 별도 필드로 구현
// POST /products/{id}/toggle
// public function toggle(int $id)
// {
// return ApiResponse::handle(function () use ($id) {
// return $this->service->toggle($id);
// }, __('message.product.toggled'));
// }
}