Files
sam-api/app/Swagger/v1/BendingItemApi.php
강영보 7083057d59 feat: [bending] 절곡품 관리 API 완성 + 데이터 마이그레이션
- GuiderailModelController/Service/Resource: 가이드레일/케이스/하단마감재 통합 CRUD
- item_category 필터 (GUIDERAIL_MODEL/SHUTTERBOX_MODEL/BOTTOMBAR_MODEL)
- BendingItemResource: legacy_bending_num 노출 추가
- ApiKeyMiddleware: guiderail-models, files 화이트리스트 추가
- Swagger: BendingItemApi, GuiderailModelApi 문서 (케이스/하단마감재 필드 포함)
- 마이그레이션 커맨드 5개: GuiderailImportLegacy, BendingProductImportLegacy, BendingImportImages, BendingModelImportImages, BendingModelImportAssemblyImages
- 데이터: GR 20건 + SB 30건 + BB 10건 + 이미지 473건 R2 업로드
2026-03-17 12:50:26 +09:00

139 lines
6.6 KiB
PHP

<?php
namespace App\Swagger\v1;
/**
* @OA\Tag(name="BendingItem", description="절곡품 기초관리")
*
* @OA\Schema(
* schema="BendingItem",
* @OA\Property(property="id", type="integer", example=15862),
* @OA\Property(property="code", type="string", example="BD-BE-30"),
* @OA\Property(property="name", type="string", example="하단마감재(스크린) EGI 3000mm"),
* @OA\Property(property="item_type", type="string", example="PT"),
* @OA\Property(property="item_category", type="string", example="BENDING"),
* @OA\Property(property="unit", type="string", example="EA"),
* @OA\Property(property="is_active", type="boolean", example=true),
* @OA\Property(property="item_name", type="string", example="하단마감재"),
* @OA\Property(property="item_sep", type="string", enum={"스크린","철재"}),
* @OA\Property(property="item_bending", type="string", example="하단마감재"),
* @OA\Property(property="item_spec", type="string", nullable=true, example="60*40"),
* @OA\Property(property="material", type="string", example="EGI 1.55T"),
* @OA\Property(property="model_name", type="string", nullable=true, example="KSS01"),
* @OA\Property(property="model_UA", type="string", nullable=true, enum={"인정","비인정"}),
* @OA\Property(property="search_keyword", type="string", nullable=true),
* @OA\Property(property="rail_width", type="integer", nullable=true),
* @OA\Property(property="registration_date", type="string", format="date", nullable=true),
* @OA\Property(property="author", type="string", nullable=true),
* @OA\Property(property="memo", type="string", nullable=true),
* @OA\Property(property="exit_direction", type="string", nullable=true),
* @OA\Property(property="front_bottom_width", type="integer", nullable=true),
* @OA\Property(property="box_width", type="integer", nullable=true),
* @OA\Property(property="box_height", type="integer", nullable=true),
* @OA\Property(property="bendingData", type="array", nullable=true, @OA\Items(
* @OA\Property(property="no", type="integer"),
* @OA\Property(property="input", type="number"),
* @OA\Property(property="rate", type="string"),
* @OA\Property(property="sum", type="number"),
* @OA\Property(property="color", type="boolean"),
* @OA\Property(property="aAngle", type="boolean")
* )),
* @OA\Property(property="prefix", type="string", nullable=true, example="BE"),
* @OA\Property(property="length_code", type="string", nullable=true, example="30"),
* @OA\Property(property="length_mm", type="integer", nullable=true, example=3000),
* @OA\Property(property="legacy_bending_num", type="integer", nullable=true, description="레거시 chandj bending.num (운영 전 삭제 예정)"),
* @OA\Property(property="width_sum", type="integer", nullable=true, example=193),
* @OA\Property(property="bend_count", type="integer", example=5),
* @OA\Property(property="created_at", type="string", format="date-time"),
* @OA\Property(property="updated_at", type="string", format="date-time")
* )
*/
class BendingItemApi
{
/**
* @OA\Get(
* path="/api/v1/bending-items",
* tags={"BendingItem"},
* summary="절곡품 목록 조회",
* @OA\Parameter(name="item_sep", in="query", required=false, @OA\Schema(type="string", enum={"스크린","철재"})),
* @OA\Parameter(name="item_bending", in="query", required=false, @OA\Schema(type="string")),
* @OA\Parameter(name="material", in="query", required=false, @OA\Schema(type="string")),
* @OA\Parameter(name="model_UA", in="query", required=false, @OA\Schema(type="string", enum={"인정","비인정"})),
* @OA\Parameter(name="search", in="query", required=false, @OA\Schema(type="string")),
* @OA\Parameter(name="page", in="query", required=false, @OA\Schema(type="integer")),
* @OA\Parameter(name="size", in="query", required=false, @OA\Schema(type="integer", default=50)),
* @OA\Response(response=200, description="성공")
* )
*/
public function index() {}
/**
* @OA\Get(
* path="/api/v1/bending-items/filters",
* tags={"BendingItem"},
* summary="절곡품 필터 옵션 조회",
* @OA\Response(response=200, description="성공")
* )
*/
public function filters() {}
/**
* @OA\Get(
* path="/api/v1/bending-items/{id}",
* tags={"BendingItem"},
* summary="절곡품 상세 조회",
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
* @OA\Response(response=200, description="성공")
* )
*/
public function show() {}
/**
* @OA\Post(
* path="/api/v1/bending-items",
* tags={"BendingItem"},
* summary="절곡품 등록",
* @OA\RequestBody(@OA\JsonContent(
* required={"code","name","item_name","item_sep","item_bending","material"},
* @OA\Property(property="code", type="string"),
* @OA\Property(property="name", type="string"),
* @OA\Property(property="item_name", type="string"),
* @OA\Property(property="item_sep", type="string", enum={"스크린","철재"}),
* @OA\Property(property="item_bending", type="string"),
* @OA\Property(property="material", type="string"),
* @OA\Property(property="bendingData", type="array", nullable=true, @OA\Items(type="object"))
* )),
* @OA\Response(response=200, description="성공")
* )
*/
public function store() {}
/**
* @OA\Put(
* path="/api/v1/bending-items/{id}",
* tags={"BendingItem"},
* summary="절곡품 수정",
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
* @OA\RequestBody(@OA\JsonContent(
* @OA\Property(property="code", type="string"),
* @OA\Property(property="name", type="string"),
* @OA\Property(property="memo", type="string"),
* @OA\Property(property="bendingData", type="array", nullable=true, @OA\Items(type="object"))
* )),
* @OA\Response(response=200, description="성공")
* )
*/
public function update() {}
/**
* @OA\Delete(
* path="/api/v1/bending-items/{id}",
* tags={"BendingItem"},
* summary="절곡품 삭제",
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
* @OA\Response(response=200, description="성공")
* )
*/
public function destroy() {}
}