<?php

namespace App\Swagger\v1;

/**
 * @OA\Tag(name="Shipments", description="출하 관리")
 *
 * @OA\Schema(
 *     schema="Shipment",
 *     type="object",
 *     description="출하 정보",
 *
 *     @OA\Property(property="id", type="integer", example=1, description="출하 ID"),
 *     @OA\Property(property="tenant_id", type="integer", example=1, description="테넌트 ID"),
 *     @OA\Property(property="shipment_no", type="string", example="SHP-20251226-0001", description="출하번호"),
 *     @OA\Property(property="lot_no", type="string", example="LOT-001", nullable=true, description="LOT번호"),
 *     @OA\Property(property="order_id", type="integer", nullable=true, description="수주 ID"),
 *     @OA\Property(property="scheduled_date", type="string", format="date", example="2025-12-26", description="출고예정일"),
 *     @OA\Property(property="status", type="string", enum={"scheduled","ready","shipping","completed"}, example="scheduled", description="상태"),
 *     @OA\Property(property="status_label", type="string", example="출고예정", description="상태 라벨"),
 *     @OA\Property(property="priority", type="string", enum={"urgent","normal","low"}, example="normal", description="우선순위"),
 *     @OA\Property(property="priority_label", type="string", example="보통", description="우선순위 라벨"),
 *     @OA\Property(property="delivery_method", type="string", enum={"pickup","direct","logistics"}, example="pickup", description="배송방식"),
 *     @OA\Property(property="delivery_method_label", type="string", example="상차", description="배송방식 라벨"),
 *     @OA\Property(property="client_id", type="integer", nullable=true, description="거래처 ID"),
 *     @OA\Property(property="customer_name", type="string", example="(주)고객사", nullable=true, description="발주처명"),
 *     @OA\Property(property="site_name", type="string", example="서울현장", nullable=true, description="현장명"),
 *     @OA\Property(property="delivery_address", type="string", example="서울시 강남구", nullable=true, description="배송주소"),
 *     @OA\Property(property="receiver", type="string", example="홍길동", nullable=true, description="인수자"),
 *     @OA\Property(property="receiver_contact", type="string", example="010-1234-5678", nullable=true, description="인수자 연락처"),
 *     @OA\Property(property="can_ship", type="boolean", example=true, description="출하가능 여부"),
 *     @OA\Property(property="deposit_confirmed", type="boolean", example=true, description="입금확인 여부"),
 *     @OA\Property(property="invoice_issued", type="boolean", example=false, description="세금계산서 발행 여부"),
 *     @OA\Property(property="customer_grade", type="string", example="A", nullable=true, description="거래처 등급"),
 *     @OA\Property(property="loading_manager", type="string", example="김상차", nullable=true, description="상차담당자"),
 *     @OA\Property(property="loading_completed_at", type="string", format="date-time", nullable=true, description="상차완료 일시"),
 *     @OA\Property(property="loading_time", type="string", format="date-time", nullable=true, description="상차시간(입차예정)"),
 *     @OA\Property(property="logistics_company", type="string", example="CJ대한통운", nullable=true, description="물류사"),
 *     @OA\Property(property="vehicle_tonnage", type="string", example="5톤", nullable=true, description="차량 톤수"),
 *     @OA\Property(property="shipping_cost", type="number", example=150000, nullable=true, description="운송비"),
 *     @OA\Property(property="vehicle_no", type="string", example="12가1234", nullable=true, description="차량번호"),
 *     @OA\Property(property="driver_name", type="string", example="이운전", nullable=true, description="운전자명"),
 *     @OA\Property(property="driver_contact", type="string", example="010-9876-5432", nullable=true, description="운전자 연락처"),
 *     @OA\Property(property="expected_arrival", type="string", format="date-time", nullable=true, description="입차예정시간"),
 *     @OA\Property(property="confirmed_arrival", type="string", format="date-time", nullable=true, description="입차확정시간"),
 *     @OA\Property(property="remarks", type="string", nullable=true, description="비고"),
 *     @OA\Property(property="is_urgent", type="boolean", example=false, description="긴급 여부"),
 *     @OA\Property(property="item_count", type="integer", example=3, description="품목 수"),
 *     @OA\Property(property="total_quantity", type="number", format="float", example=150.5, description="총 수량"),
 *     @OA\Property(property="created_at", type="string", format="date-time"),
 *     @OA\Property(property="updated_at", type="string", format="date-time")
 * )
 *
 * @OA\Schema(
 *     schema="ShipmentItem",
 *     type="object",
 *     description="출하 품목 정보",
 *
 *     @OA\Property(property="id", type="integer", example=1, description="품목 ID"),
 *     @OA\Property(property="shipment_id", type="integer", example=1, description="출하 ID"),
 *     @OA\Property(property="seq", type="integer", example=1, description="순번"),
 *     @OA\Property(property="item_code", type="string", example="ITEM-001", nullable=true, description="품목코드"),
 *     @OA\Property(property="item_name", type="string", example="제품 A", description="품목명"),
 *     @OA\Property(property="floor_unit", type="string", example="1층/M01", nullable=true, description="층/M호"),
 *     @OA\Property(property="specification", type="string", example="100x200mm", nullable=true, description="규격"),
 *     @OA\Property(property="quantity", type="number", format="float", example=10.5, description="수량"),
 *     @OA\Property(property="unit", type="string", example="EA", nullable=true, description="단위"),
 *     @OA\Property(property="lot_no", type="string", example="LOT-001", nullable=true, description="LOT번호"),
 *     @OA\Property(property="stock_lot_id", type="integer", nullable=true, description="재고 LOT ID"),
 *     @OA\Property(property="remarks", type="string", nullable=true, description="비고"),
 *     @OA\Property(property="created_at", type="string", format="date-time"),
 *     @OA\Property(property="updated_at", type="string", format="date-time")
 * )
 *
 * @OA\Schema(
 *     schema="ShipmentWithItems",
 *     type="object",
 *     description="출하 상세 정보 (품목 포함)",
 *     allOf={
 *         @OA\Schema(ref="#/components/schemas/Shipment"),
 *         @OA\Schema(
 *
 *             @OA\Property(
 *                 property="items",
 *                 type="array",
 *                 description="출하 품목 목록",
 *
 *                 @OA\Items(ref="#/components/schemas/ShipmentItem")
 *             )
 *         )
 *     }
 * )
 *
 * @OA\Schema(
 *     schema="ShipmentStats",
 *     type="object",
 *     description="출하 통계",
 *
 *     @OA\Property(property="total", type="integer", example=100, description="전체 건수"),
 *     @OA\Property(property="scheduled", type="integer", example=30, description="출고예정 건수"),
 *     @OA\Property(property="ready", type="integer", example=20, description="출하대기 건수"),
 *     @OA\Property(property="shipping", type="integer", example=15, description="배송중 건수"),
 *     @OA\Property(property="completed", type="integer", example=35, description="배송완료 건수"),
 *     @OA\Property(property="urgent", type="integer", example=5, description="긴급 건수"),
 *     @OA\Property(property="today_scheduled", type="integer", example=10, description="오늘 출고예정 건수")
 * )
 *
 * @OA\Schema(
 *     schema="ShipmentStatsByStatus",
 *     type="object",
 *     description="상태별 출하 통계",
 *
 *     @OA\Property(
 *         property="scheduled",
 *         type="object",
 *         @OA\Property(property="label", type="string", example="출고예정"),
 *         @OA\Property(property="count", type="integer", example=30)
 *     ),
 *     @OA\Property(
 *         property="ready",
 *         type="object",
 *         @OA\Property(property="label", type="string", example="출하대기"),
 *         @OA\Property(property="count", type="integer", example=20)
 *     ),
 *     @OA\Property(
 *         property="shipping",
 *         type="object",
 *         @OA\Property(property="label", type="string", example="배송중"),
 *         @OA\Property(property="count", type="integer", example=15)
 *     ),
 *     @OA\Property(
 *         property="completed",
 *         type="object",
 *         @OA\Property(property="label", type="string", example="배송완료"),
 *         @OA\Property(property="count", type="integer", example=35)
 *     )
 * )
 *
 * @OA\Schema(
 *     schema="ShipmentStoreRequest",
 *     type="object",
 *     required={"scheduled_date"},
 *
 *     @OA\Property(property="shipment_no", type="string", example="SHP-20251226-0001", description="출하번호 (자동 생성 가능)"),
 *     @OA\Property(property="lot_no", type="string", example="LOT-001", description="LOT번호"),
 *     @OA\Property(property="order_id", type="integer", example=1, description="수주 ID"),
 *     @OA\Property(property="scheduled_date", type="string", format="date", example="2025-12-26", description="출고예정일"),
 *     @OA\Property(property="status", type="string", enum={"scheduled","ready","shipping","completed"}, example="scheduled", description="상태"),
 *     @OA\Property(property="priority", type="string", enum={"urgent","normal","low"}, example="normal", description="우선순위"),
 *     @OA\Property(property="delivery_method", type="string", enum={"pickup","direct","logistics"}, example="pickup", description="배송방식"),
 *     @OA\Property(property="client_id", type="integer", description="거래처 ID"),
 *     @OA\Property(property="customer_name", type="string", example="(주)고객사", description="발주처명"),
 *     @OA\Property(property="site_name", type="string", example="서울현장", description="현장명"),
 *     @OA\Property(property="delivery_address", type="string", example="서울시 강남구", description="배송주소"),
 *     @OA\Property(property="receiver", type="string", example="홍길동", description="인수자"),
 *     @OA\Property(property="receiver_contact", type="string", example="010-1234-5678", description="인수자 연락처"),
 *     @OA\Property(property="can_ship", type="boolean", example=true, description="출하가능 여부"),
 *     @OA\Property(property="deposit_confirmed", type="boolean", example=true, description="입금확인 여부"),
 *     @OA\Property(property="invoice_issued", type="boolean", example=false, description="세금계산서 발행 여부"),
 *     @OA\Property(property="loading_manager", type="string", description="상차담당자"),
 *     @OA\Property(property="loading_time", type="string", format="date-time", description="상차시간"),
 *     @OA\Property(property="logistics_company", type="string", description="물류사"),
 *     @OA\Property(property="vehicle_tonnage", type="string", description="차량 톤수"),
 *     @OA\Property(property="shipping_cost", type="number", description="운송비"),
 *     @OA\Property(property="vehicle_no", type="string", description="차량번호"),
 *     @OA\Property(property="driver_name", type="string", description="운전자명"),
 *     @OA\Property(property="driver_contact", type="string", description="운전자 연락처"),
 *     @OA\Property(property="expected_arrival", type="string", format="date-time", description="입차예정시간"),
 *     @OA\Property(property="remarks", type="string", description="비고"),
 *     @OA\Property(
 *         property="items",
 *         type="array",
 *         description="출하 품목",
 *
 *         @OA\Items(
 *             type="object",
 *
 *             @OA\Property(property="seq", type="integer", example=1),
 *             @OA\Property(property="item_code", type="string", example="ITEM-001"),
 *             @OA\Property(property="item_name", type="string", example="제품 A"),
 *             @OA\Property(property="floor_unit", type="string", example="1층/M01"),
 *             @OA\Property(property="specification", type="string", example="100x200mm"),
 *             @OA\Property(property="quantity", type="number", example=10.5),
 *             @OA\Property(property="unit", type="string", example="EA"),
 *             @OA\Property(property="lot_no", type="string", example="LOT-001"),
 *             @OA\Property(property="stock_lot_id", type="integer"),
 *             @OA\Property(property="remarks", type="string")
 *         )
 *     )
 * )
 *
 * @OA\Schema(
 *     schema="ShipmentUpdateStatusRequest",
 *     type="object",
 *     required={"status"},
 *
 *     @OA\Property(property="status", type="string", enum={"scheduled","ready","shipping","completed"}, example="shipping", description="변경할 상태"),
 *     @OA\Property(property="loading_time", type="string", format="date-time", description="상차시간 (ready 상태 시)"),
 *     @OA\Property(property="loading_completed_at", type="string", format="date-time", description="상차완료 일시 (shipping 상태 시)"),
 *     @OA\Property(property="vehicle_no", type="string", description="차량번호 (shipping 상태 시)"),
 *     @OA\Property(property="driver_name", type="string", description="운전자명 (shipping 상태 시)"),
 *     @OA\Property(property="driver_contact", type="string", description="운전자 연락처 (shipping 상태 시)"),
 *     @OA\Property(property="confirmed_arrival", type="string", format="date-time", description="입차확정시간 (completed 상태 시)")
 * )
 *
 * @OA\Schema(
 *     schema="LotOption",
 *     type="object",
 *     description="LOT 옵션",
 *
 *     @OA\Property(property="id", type="integer", example=1, description="LOT ID"),
 *     @OA\Property(property="lot_no", type="string", example="251226-01", description="LOT번호"),
 *     @OA\Property(property="item_code", type="string", example="ITEM-001", description="품목코드"),
 *     @OA\Property(property="item_name", type="string", example="원재료 A", description="품목명"),
 *     @OA\Property(property="qty", type="number", format="float", example=100.0, description="수량"),
 *     @OA\Property(property="available_qty", type="number", format="float", example=80.0, description="가용수량"),
 *     @OA\Property(property="unit", type="string", example="EA", description="단위"),
 *     @OA\Property(property="location", type="string", example="A-01-01", description="위치"),
 *     @OA\Property(property="fifo_order", type="integer", example=1, description="FIFO 순서")
 * )
 */
class ShipmentApi
{
    /**
     * @OA\Get(
     *     path="/api/v1/shipments",
     *     tags={"Shipments"},
     *     summary="출하 목록 조회",
     *     description="출하 목록을 조회합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Parameter(name="search", in="query", description="검색어 (출하번호, LOT번호, 발주처명, 현장명)", @OA\Schema(type="string")),
     *     @OA\Parameter(name="status", in="query", description="상태", @OA\Schema(type="string", enum={"scheduled","ready","shipping","completed"})),
     *     @OA\Parameter(name="priority", in="query", description="우선순위", @OA\Schema(type="string", enum={"urgent","normal","low"})),
     *     @OA\Parameter(name="delivery_method", in="query", description="배송방식", @OA\Schema(type="string", enum={"pickup","direct","logistics"})),
     *     @OA\Parameter(name="scheduled_from", in="query", description="예정일 시작", @OA\Schema(type="string", format="date")),
     *     @OA\Parameter(name="scheduled_to", in="query", description="예정일 종료", @OA\Schema(type="string", format="date")),
     *     @OA\Parameter(name="can_ship", in="query", description="출하가능 여부", @OA\Schema(type="boolean")),
     *     @OA\Parameter(name="deposit_confirmed", in="query", description="입금확인 여부", @OA\Schema(type="boolean")),
     *     @OA\Parameter(name="sort_by", in="query", description="정렬 기준", @OA\Schema(type="string", enum={"scheduled_date","shipment_no","customer_name","priority"}, default="scheduled_date")),
     *     @OA\Parameter(name="sort_dir", in="query", description="정렬 방향", @OA\Schema(type="string", enum={"asc","desc"}, default="desc")),
     *     @OA\Parameter(ref="#/components/parameters/Page"),
     *     @OA\Parameter(ref="#/components/parameters/Size"),
     *
     *     @OA\Response(
     *         response=200,
     *         description="조회 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(
     *                         property="data",
     *                         type="object",
     *                         @OA\Property(property="current_page", type="integer", example=1),
     *                         @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/ShipmentWithItems")),
     *                         @OA\Property(property="per_page", type="integer", example=20),
     *                         @OA\Property(property="total", type="integer", example=100)
     *                     )
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function index() {}

    /**
     * @OA\Get(
     *     path="/api/v1/shipments/stats",
     *     tags={"Shipments"},
     *     summary="출하 통계 조회",
     *     description="전체 출하 통계를 조회합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Response(
     *         response=200,
     *         description="조회 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(property="data", ref="#/components/schemas/ShipmentStats")
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function stats() {}

    /**
     * @OA\Get(
     *     path="/api/v1/shipments/stats-by-status",
     *     tags={"Shipments"},
     *     summary="상태별 출하 통계 조회",
     *     description="상태별 출하 통계를 조회합니다 (탭용).",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Response(
     *         response=200,
     *         description="조회 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(property="data", ref="#/components/schemas/ShipmentStatsByStatus")
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function statsByStatus() {}

    /**
     * @OA\Get(
     *     path="/api/v1/shipments/{id}",
     *     tags={"Shipments"},
     *     summary="출하 상세 조회",
     *     description="출하 상세 정보를 조회합니다. 품목 목록이 포함됩니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Parameter(name="id", in="path", required=true, description="출하 ID", @OA\Schema(type="integer")),
     *
     *     @OA\Response(
     *         response=200,
     *         description="조회 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(property="data", ref="#/components/schemas/ShipmentWithItems")
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=404, description="출하 없음", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function show() {}

    /**
     * @OA\Post(
     *     path="/api/v1/shipments",
     *     tags={"Shipments"},
     *     summary="출하 생성",
     *     description="새 출하를 생성합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\RequestBody(
     *         required=true,
     *
     *         @OA\JsonContent(ref="#/components/schemas/ShipmentStoreRequest")
     *     ),
     *
     *     @OA\Response(
     *         response=201,
     *         description="생성 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(property="data", ref="#/components/schemas/ShipmentWithItems")
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=422, description="유효성 검증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function store() {}

    /**
     * @OA\Put(
     *     path="/api/v1/shipments/{id}",
     *     tags={"Shipments"},
     *     summary="출하 수정",
     *     description="출하 정보를 수정합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Parameter(name="id", in="path", required=true, description="출하 ID", @OA\Schema(type="integer")),
     *
     *     @OA\RequestBody(
     *         required=true,
     *
     *         @OA\JsonContent(ref="#/components/schemas/ShipmentStoreRequest")
     *     ),
     *
     *     @OA\Response(
     *         response=200,
     *         description="수정 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(property="data", ref="#/components/schemas/ShipmentWithItems")
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=404, description="출하 없음", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=422, description="유효성 검증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function update() {}

    /**
     * @OA\Patch(
     *     path="/api/v1/shipments/{id}/status",
     *     tags={"Shipments"},
     *     summary="출하 상태 변경",
     *     description="출하 상태를 변경합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Parameter(name="id", in="path", required=true, description="출하 ID", @OA\Schema(type="integer")),
     *
     *     @OA\RequestBody(
     *         required=true,
     *
     *         @OA\JsonContent(ref="#/components/schemas/ShipmentUpdateStatusRequest")
     *     ),
     *
     *     @OA\Response(
     *         response=200,
     *         description="상태 변경 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(property="data", ref="#/components/schemas/ShipmentWithItems")
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=404, description="출하 없음", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=422, description="유효성 검증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function updateStatus() {}

    /**
     * @OA\Delete(
     *     path="/api/v1/shipments/{id}",
     *     tags={"Shipments"},
     *     summary="출하 삭제",
     *     description="출하를 삭제합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Parameter(name="id", in="path", required=true, description="출하 ID", @OA\Schema(type="integer")),
     *
     *     @OA\Response(
     *         response=200,
     *         description="삭제 성공",
     *
     *         @OA\JsonContent(ref="#/components/schemas/ApiResponse")
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=404, description="출하 없음", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function destroy() {}

    /**
     * @OA\Get(
     *     path="/api/v1/shipments/options/lots",
     *     tags={"Shipments"},
     *     summary="LOT 옵션 조회",
     *     description="출고 가능한 LOT 목록을 조회합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Response(
     *         response=200,
     *         description="조회 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/LotOption"))
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function lotOptions() {}

    /**
     * @OA\Get(
     *     path="/api/v1/shipments/options/logistics",
     *     tags={"Shipments"},
     *     summary="물류사 옵션 조회",
     *     description="물류사 목록을 조회합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Response(
     *         response=200,
     *         description="조회 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(
     *                         property="data",
     *                         type="array",
     *
     *                         @OA\Items(
     *                             type="object",
     *
     *                             @OA\Property(property="value", type="string", example="CJ대한통운"),
     *                             @OA\Property(property="label", type="string", example="CJ대한통운")
     *                         )
     *                     )
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function logisticsOptions() {}

    /**
     * @OA\Get(
     *     path="/api/v1/shipments/options/vehicle-tonnage",
     *     tags={"Shipments"},
     *     summary="차량 톤수 옵션 조회",
     *     description="차량 톤수 목록을 조회합니다.",
     *     security={{"ApiKeyAuth":{}},{"BearerAuth":{}}},
     *
     *     @OA\Response(
     *         response=200,
     *         description="조회 성공",
     *
     *         @OA\JsonContent(
     *             allOf={
     *
     *                 @OA\Schema(ref="#/components/schemas/ApiResponse"),
     *                 @OA\Schema(
     *
     *                     @OA\Property(
     *                         property="data",
     *                         type="array",
     *
     *                         @OA\Items(
     *                             type="object",
     *
     *                             @OA\Property(property="value", type="string", example="5톤"),
     *                             @OA\Property(property="label", type="string", example="5톤")
     *                         )
     *                     )
     *                 )
     *             }
     *         )
     *     ),
     *
     *     @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse")),
     *     @OA\Response(response=500, description="서버 에러", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
     * )
     */
    public function vehicleTonnageOptions() {}
}
