docs(API): Swagger API 문서 업데이트
- AdminFcmApi, BillApi, ExpectedExpenseApi 개선 - PositionApi, ProcessApi, QuoteApi 개선 - ReceivablesApi, ShipmentApi, StockApi, VendorLedgerApi 개선 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -144,6 +144,7 @@
|
||||
* @OA\Property(
|
||||
* property="data",
|
||||
* type="array",
|
||||
*
|
||||
* @OA\Items(ref="#/components/schemas/AdminFcmToken")
|
||||
* )
|
||||
* )
|
||||
@@ -159,6 +160,7 @@
|
||||
* @OA\Property(
|
||||
* property="data",
|
||||
* type="array",
|
||||
*
|
||||
* @OA\Items(ref="#/components/schemas/AdminFcmSendLog")
|
||||
* )
|
||||
* )
|
||||
@@ -177,6 +179,7 @@ class AdminFcmApi
|
||||
* header="X-Sender-Id",
|
||||
* description="발송자 ID (MNG 관리자 ID)",
|
||||
* required=false,
|
||||
*
|
||||
* @OA\Schema(type="integer", example=10)
|
||||
* ),
|
||||
*
|
||||
@@ -216,6 +219,7 @@ class AdminFcmApi
|
||||
*
|
||||
* @OA\JsonContent(ref="#/components/schemas/ErrorResponse")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=401, description="인증 실패", @OA\JsonContent(ref="#/components/schemas/ErrorResponse"))
|
||||
* )
|
||||
*/
|
||||
@@ -559,4 +563,4 @@ public function deleteToken() {}
|
||||
* )
|
||||
*/
|
||||
public function history() {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
* schema="Bill",
|
||||
* type="object",
|
||||
* required={"id", "tenant_id", "bill_number", "bill_type", "amount", "issue_date", "maturity_date", "status"},
|
||||
*
|
||||
* @OA\Property(property="id", type="integer", example=1),
|
||||
* @OA\Property(property="tenant_id", type="integer", example=1),
|
||||
* @OA\Property(property="bill_number", type="string", example="202412000001", description="어음번호"),
|
||||
@@ -49,6 +50,7 @@
|
||||
* @OA\Property(
|
||||
* property="installments",
|
||||
* type="array",
|
||||
*
|
||||
* @OA\Items(ref="#/components/schemas/BillInstallment")
|
||||
* )
|
||||
* )
|
||||
@@ -56,6 +58,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="BillInstallment",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="id", type="integer", example=1),
|
||||
* @OA\Property(property="bill_id", type="integer", example=1),
|
||||
* @OA\Property(property="installment_date", type="string", format="date", example="2024-12-15", description="차수 일자"),
|
||||
@@ -68,11 +71,14 @@
|
||||
* @OA\Schema(
|
||||
* schema="BillPagination",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(
|
||||
* property="data",
|
||||
* type="array",
|
||||
*
|
||||
* @OA\Items(ref="#/components/schemas/Bill")
|
||||
* ),
|
||||
*
|
||||
* @OA\Property(property="current_page", type="integer", example=1),
|
||||
* @OA\Property(property="last_page", type="integer", example=5),
|
||||
* @OA\Property(property="per_page", type="integer", example=20),
|
||||
@@ -85,6 +91,7 @@
|
||||
* schema="BillCreateRequest",
|
||||
* type="object",
|
||||
* required={"bill_type", "amount", "issue_date", "maturity_date"},
|
||||
*
|
||||
* @OA\Property(property="bill_number", type="string", nullable=true, example="202412000001", description="어음번호 (미입력시 자동생성)"),
|
||||
* @OA\Property(property="bill_type", type="string", enum={"received", "issued"}, example="received", description="어음 구분"),
|
||||
* @OA\Property(property="client_id", type="integer", nullable=true, example=10, description="거래처 ID"),
|
||||
@@ -101,8 +108,10 @@
|
||||
* property="installments",
|
||||
* type="array",
|
||||
* nullable=true,
|
||||
*
|
||||
* @OA\Items(
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="date", type="string", format="date", example="2024-12-15"),
|
||||
* @OA\Property(property="amount", type="number", example=5000000),
|
||||
* @OA\Property(property="note", type="string", nullable=true, example="1차 분할")
|
||||
@@ -113,6 +122,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="BillUpdateRequest",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="bill_number", type="string", nullable=true, example="202412000001"),
|
||||
* @OA\Property(property="bill_type", type="string", enum={"received", "issued"}, nullable=true),
|
||||
* @OA\Property(property="client_id", type="integer", nullable=true),
|
||||
@@ -131,14 +141,17 @@
|
||||
* @OA\Schema(
|
||||
* schema="BillSummary",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="total_amount", type="number", example=50000000, description="총 금액"),
|
||||
* @OA\Property(property="total_count", type="integer", example=10, description="총 건수"),
|
||||
* @OA\Property(
|
||||
* property="by_type",
|
||||
* type="object",
|
||||
* description="구분별 합계",
|
||||
*
|
||||
* @OA\AdditionalProperties(
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="bill_type", type="string"),
|
||||
* @OA\Property(property="total", type="number"),
|
||||
* @OA\Property(property="count", type="integer")
|
||||
@@ -162,6 +175,7 @@ class BillApi
|
||||
* summary="어음 목록 조회",
|
||||
* description="어음 목록을 페이지네이션하여 조회합니다.",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="search", in="query", description="검색어 (어음번호, 거래처명, 메모)", @OA\Schema(type="string")),
|
||||
* @OA\Parameter(name="bill_type", in="query", description="어음 구분", @OA\Schema(type="string", enum={"received", "issued"})),
|
||||
* @OA\Parameter(name="status", in="query", description="상태", @OA\Schema(type="string")),
|
||||
@@ -175,10 +189,13 @@ class BillApi
|
||||
* @OA\Parameter(name="sort_dir", in="query", description="정렬 방향", @OA\Schema(type="string", enum={"asc", "desc"}, default="desc")),
|
||||
* @OA\Parameter(name="per_page", in="query", description="페이지당 건수", @OA\Schema(type="integer", default=20)),
|
||||
* @OA\Parameter(name="page", in="query", description="페이지 번호", @OA\Schema(type="integer", default=1)),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/BillPagination")
|
||||
@@ -196,19 +213,25 @@ public function index() {}
|
||||
* summary="어음 등록",
|
||||
* description="새로운 어음을 등록합니다.",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* required=true,
|
||||
*
|
||||
* @OA\JsonContent(ref="#/components/schemas/BillCreateRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=201,
|
||||
* description="생성 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="생성되었습니다."),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Bill")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=422, description="유효성 검사 실패")
|
||||
* )
|
||||
*/
|
||||
@@ -222,16 +245,21 @@ public function store() {}
|
||||
* 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(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Bill")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=404, description="어음을 찾을 수 없음")
|
||||
* )
|
||||
*/
|
||||
@@ -245,20 +273,27 @@ public function show() {}
|
||||
* 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/BillUpdateRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="수정 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="수정되었습니다."),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Bill")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=404, description="어음을 찾을 수 없음"),
|
||||
* @OA\Response(response=422, description="유효성 검사 실패")
|
||||
* )
|
||||
@@ -273,16 +308,21 @@ public function update() {}
|
||||
* summary="어음 삭제",
|
||||
* description="어음을 삭제합니다. (Soft Delete)",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="삭제 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="삭제되었습니다."),
|
||||
* @OA\Property(property="data", type="null")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=404, description="어음을 찾을 수 없음")
|
||||
* )
|
||||
*/
|
||||
@@ -296,23 +336,31 @@ public function destroy() {}
|
||||
* 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(
|
||||
* required={"status"},
|
||||
*
|
||||
* @OA\Property(property="status", type="string", example="paymentComplete", description="변경할 상태")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="상태 변경 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="수정되었습니다."),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Bill")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=404, description="어음을 찾을 수 없음"),
|
||||
* @OA\Response(response=422, description="유효성 검사 실패")
|
||||
* )
|
||||
@@ -327,15 +375,19 @@ public function updateStatus() {}
|
||||
* summary="어음 요약 조회",
|
||||
* description="기간별 어음 요약 정보를 조회합니다.",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="bill_type", in="query", description="어음 구분", @OA\Schema(type="string", enum={"received", "issued"})),
|
||||
* @OA\Parameter(name="issue_start_date", in="query", description="발행일 시작", @OA\Schema(type="string", format="date")),
|
||||
* @OA\Parameter(name="issue_end_date", in="query", description="발행일 종료", @OA\Schema(type="string", format="date")),
|
||||
* @OA\Parameter(name="maturity_start_date", in="query", description="만기일 시작", @OA\Schema(type="string", format="date")),
|
||||
* @OA\Parameter(name="maturity_end_date", in="query", description="만기일 종료", @OA\Schema(type="string", format="date")),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/BillSummary")
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="ExpectedExpense",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="id", type="integer", example=1),
|
||||
* @OA\Property(property="tenant_id", type="integer", example=1),
|
||||
* @OA\Property(property="expected_payment_date", type="string", format="date", example="2025-01-15"),
|
||||
@@ -46,6 +47,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="ExpectedExpensePagination",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="current_page", type="integer", example=1),
|
||||
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/ExpectedExpense")),
|
||||
* @OA\Property(property="first_page_url", type="string"),
|
||||
@@ -64,6 +66,7 @@
|
||||
* schema="ExpectedExpenseCreateRequest",
|
||||
* type="object",
|
||||
* required={"expected_payment_date", "transaction_type", "amount"},
|
||||
*
|
||||
* @OA\Property(property="expected_payment_date", type="string", format="date", example="2025-01-15"),
|
||||
* @OA\Property(property="settlement_date", type="string", format="date", nullable=true, example="2025-01-10"),
|
||||
* @OA\Property(property="transaction_type", type="string", enum={"purchase","advance","suspense","rent","salary","insurance","tax","utilities","other"}, example="purchase"),
|
||||
@@ -80,6 +83,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="ExpectedExpenseUpdateRequest",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="expected_payment_date", type="string", format="date", example="2025-01-20"),
|
||||
* @OA\Property(property="settlement_date", type="string", format="date", nullable=true),
|
||||
* @OA\Property(property="transaction_type", type="string", enum={"purchase","advance","suspense","rent","salary","insurance","tax","utilities","other"}),
|
||||
@@ -96,6 +100,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="ExpectedExpenseSummary",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="total_amount", type="number", format="float", example=15000000),
|
||||
* @OA\Property(property="total_count", type="integer", example=12),
|
||||
* @OA\Property(property="by_payment_status", type="object"),
|
||||
@@ -111,6 +116,7 @@ class ExpectedExpenseApi
|
||||
* summary="미지급비용 목록 조회",
|
||||
* tags={"ExpectedExpense"},
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="search", in="query", description="검색어 (거래처명, 계정과목, 적요)", @OA\Schema(type="string")),
|
||||
* @OA\Parameter(name="start_date", in="query", description="시작일", @OA\Schema(type="string", format="date")),
|
||||
* @OA\Parameter(name="end_date", in="query", description="종료일", @OA\Schema(type="string", format="date")),
|
||||
@@ -122,10 +128,13 @@ class ExpectedExpenseApi
|
||||
* @OA\Parameter(name="sort_dir", in="query", description="정렬 방향", @OA\Schema(type="string", enum={"asc","desc"}, default="asc")),
|
||||
* @OA\Parameter(name="per_page", in="query", description="페이지당 항목 수", @OA\Schema(type="integer", default=50)),
|
||||
* @OA\Parameter(name="page", in="query", description="페이지 번호", @OA\Schema(type="integer", default=1)),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpensePagination")
|
||||
@@ -141,14 +150,19 @@ public function index() {}
|
||||
* summary="미지급비용 등록",
|
||||
* tags={"ExpectedExpense"},
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* required=true,
|
||||
*
|
||||
* @OA\JsonContent(ref="#/components/schemas/ExpectedExpenseCreateRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=201,
|
||||
* description="생성 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense")
|
||||
@@ -164,11 +178,15 @@ public function store() {}
|
||||
* summary="미지급비용 상세 조회",
|
||||
* tags={"ExpectedExpense"},
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="id", in="path", required=true, description="미지급비용 ID", @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense")
|
||||
@@ -184,15 +202,21 @@ public function show() {}
|
||||
* summary="미지급비용 수정",
|
||||
* tags={"ExpectedExpense"},
|
||||
* 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/ExpectedExpenseUpdateRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="수정 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense")
|
||||
@@ -208,11 +232,15 @@ public function update() {}
|
||||
* summary="미지급비용 삭제",
|
||||
* tags={"ExpectedExpense"},
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="id", in="path", required=true, description="미지급비용 ID", @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="삭제 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string")
|
||||
* )
|
||||
@@ -227,16 +255,22 @@ public function destroy() {}
|
||||
* summary="미지급비용 일괄 삭제",
|
||||
* tags={"ExpectedExpense"},
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* required=true,
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="ids", type="array", @OA\Items(type="integer"), example={1, 2, 3})
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="일괄 삭제 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", type="object",
|
||||
@@ -254,17 +288,23 @@ public function destroyMany() {}
|
||||
* summary="예상 지급일 일괄 변경",
|
||||
* tags={"ExpectedExpense"},
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* required=true,
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="ids", type="array", @OA\Items(type="integer"), example={1, 2, 3}),
|
||||
* @OA\Property(property="expected_payment_date", type="string", format="date", example="2025-02-01")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="일괄 변경 성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", type="object",
|
||||
@@ -282,13 +322,17 @@ public function updateExpectedPaymentDate() {}
|
||||
* summary="미지급비용 요약 (기간별 합계)",
|
||||
* tags={"ExpectedExpense"},
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="start_date", in="query", description="시작일", @OA\Schema(type="string", format="date")),
|
||||
* @OA\Parameter(name="end_date", in="query", description="종료일", @OA\Schema(type="string", format="date")),
|
||||
* @OA\Parameter(name="payment_status", in="query", description="지급상태", @OA\Schema(type="string")),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpenseSummary")
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
* schema="Position",
|
||||
* type="object",
|
||||
* required={"id", "tenant_id", "type", "name", "sort_order", "is_active"},
|
||||
*
|
||||
* @OA\Property(property="id", type="integer", example=1),
|
||||
* @OA\Property(property="tenant_id", type="integer", example=287),
|
||||
* @OA\Property(property="type", type="string", enum={"rank", "title"}, example="rank", description="유형: rank(직급), title(직책)"),
|
||||
@@ -26,6 +27,7 @@
|
||||
* schema="PositionCreateRequest",
|
||||
* type="object",
|
||||
* required={"type", "name"},
|
||||
*
|
||||
* @OA\Property(property="type", type="string", enum={"rank", "title"}, example="rank", description="유형: rank(직급), title(직책)"),
|
||||
* @OA\Property(property="name", type="string", example="과장", description="명칭"),
|
||||
* @OA\Property(property="sort_order", type="integer", example=3, description="정렬 순서 (생략시 자동)"),
|
||||
@@ -35,6 +37,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="PositionUpdateRequest",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="name", type="string", example="과장", description="명칭"),
|
||||
* @OA\Property(property="sort_order", type="integer", example=3, description="정렬 순서"),
|
||||
* @OA\Property(property="is_active", type="boolean", example=true, description="활성화 여부")
|
||||
@@ -44,12 +47,15 @@
|
||||
* schema="PositionReorderRequest",
|
||||
* type="object",
|
||||
* required={"items"},
|
||||
*
|
||||
* @OA\Property(
|
||||
* property="items",
|
||||
* type="array",
|
||||
*
|
||||
* @OA\Items(
|
||||
* type="object",
|
||||
* required={"id", "sort_order"},
|
||||
*
|
||||
* @OA\Property(property="id", type="integer", example=1),
|
||||
* @OA\Property(property="sort_order", type="integer", example=1)
|
||||
* )
|
||||
@@ -64,15 +70,19 @@ class PositionApi
|
||||
* tags={"Position"},
|
||||
* summary="직급/직책 목록 조회",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="type", in="query", description="유형 필터 (rank: 직급, title: 직책)", @OA\Schema(type="string", enum={"rank", "title"})),
|
||||
* @OA\Parameter(name="is_active", in="query", description="활성화 필터", @OA\Schema(type="boolean")),
|
||||
* @OA\Parameter(name="q", in="query", description="검색어 (명칭)", @OA\Schema(type="string")),
|
||||
* @OA\Parameter(name="per_page", in="query", description="페이지당 개수 (생략시 전체)", @OA\Schema(type="integer")),
|
||||
* @OA\Parameter(name="page", in="query", description="페이지 번호", @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/Position"))
|
||||
@@ -88,19 +98,25 @@ public function index() {}
|
||||
* tags={"Position"},
|
||||
* summary="직급/직책 생성",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* required=true,
|
||||
*
|
||||
* @OA\JsonContent(ref="#/components/schemas/PositionCreateRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Position")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=409, description="중복 오류")
|
||||
* )
|
||||
*/
|
||||
@@ -112,16 +128,21 @@ public function store() {}
|
||||
* tags={"Position"},
|
||||
* summary="직급/직책 단건 조회",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Position")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=404, description="찾을 수 없음")
|
||||
* )
|
||||
*/
|
||||
@@ -133,20 +154,27 @@ public function show() {}
|
||||
* tags={"Position"},
|
||||
* summary="직급/직책 수정",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* required=true,
|
||||
*
|
||||
* @OA\JsonContent(ref="#/components/schemas/PositionUpdateRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Position")
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=404, description="찾을 수 없음"),
|
||||
* @OA\Response(response=409, description="중복 오류")
|
||||
* )
|
||||
@@ -159,11 +187,15 @@ public function update() {}
|
||||
* tags={"Position"},
|
||||
* summary="직급/직책 삭제",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", type="object",
|
||||
@@ -172,6 +204,7 @@ public function update() {}
|
||||
* )
|
||||
* )
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=404, description="찾을 수 없음")
|
||||
* )
|
||||
*/
|
||||
@@ -183,14 +216,19 @@ public function destroy() {}
|
||||
* tags={"Position"},
|
||||
* summary="직급/직책 순서 변경 (벌크)",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\RequestBody(
|
||||
* required=true,
|
||||
*
|
||||
* @OA\JsonContent(ref="#/components/schemas/PositionReorderRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(
|
||||
* response=200,
|
||||
* description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string"),
|
||||
* @OA\Property(property="data", type="object",
|
||||
@@ -202,4 +240,4 @@ public function destroy() {}
|
||||
* )
|
||||
*/
|
||||
public function reorder() {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="ProcessItem",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="id", type="integer", example=1),
|
||||
* @OA\Property(property="process_id", type="integer", example=1),
|
||||
* @OA\Property(property="item_id", type="integer", example=123),
|
||||
@@ -28,6 +29,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="ProcessClassificationRule",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="id", type="integer", example=1),
|
||||
* @OA\Property(property="process_id", type="integer", example=1),
|
||||
* @OA\Property(property="registration_type", type="string", example="pattern"),
|
||||
@@ -42,6 +44,7 @@
|
||||
* @OA\Schema(
|
||||
* schema="Process",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="id", type="integer", example=1),
|
||||
* @OA\Property(property="tenant_id", type="integer", example=1),
|
||||
* @OA\Property(property="process_code", type="string", example="P-001"),
|
||||
@@ -63,6 +66,7 @@
|
||||
* schema="ProcessCreateRequest",
|
||||
* type="object",
|
||||
* required={"process_name", "process_type"},
|
||||
*
|
||||
* @OA\Property(property="process_name", type="string", maxLength=100, example="스크린 생산"),
|
||||
* @OA\Property(property="description", type="string", nullable=true),
|
||||
* @OA\Property(property="process_type", type="string", enum={"생산", "검사", "포장", "조립"}),
|
||||
@@ -75,9 +79,11 @@
|
||||
* @OA\Property(property="is_active", type="boolean", nullable=true),
|
||||
* @OA\Property(property="classification_rules", type="array", nullable=true,
|
||||
* description="패턴 기반 분류 규칙",
|
||||
*
|
||||
* @OA\Items(
|
||||
* type="object",
|
||||
* required={"rule_type", "matching_type", "condition_value"},
|
||||
*
|
||||
* @OA\Property(property="rule_type", type="string", enum={"품목코드", "품목명", "품목구분"}),
|
||||
* @OA\Property(property="matching_type", type="string", enum={"startsWith", "endsWith", "contains", "equals"}),
|
||||
* @OA\Property(property="condition_value", type="string", maxLength=255),
|
||||
@@ -88,6 +94,7 @@
|
||||
* ),
|
||||
* @OA\Property(property="item_ids", type="array", nullable=true,
|
||||
* description="개별 품목 ID 배열",
|
||||
*
|
||||
* @OA\Items(type="integer", example=123)
|
||||
* )
|
||||
* )
|
||||
@@ -100,13 +107,17 @@ class ProcessApi
|
||||
* tags={"Process"},
|
||||
* summary="공정 목록 조회",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="page", in="query", @OA\Schema(type="integer", default=1)),
|
||||
* @OA\Parameter(name="size", in="query", @OA\Schema(type="integer", default=20)),
|
||||
* @OA\Parameter(name="q", in="query", description="검색어", @OA\Schema(type="string")),
|
||||
* @OA\Parameter(name="status", in="query", @OA\Schema(type="string", enum={"active", "inactive"})),
|
||||
* @OA\Parameter(name="process_type", in="query", @OA\Schema(type="string", enum={"생산", "검사", "포장", "조립"})),
|
||||
*
|
||||
* @OA\Response(response=200, description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/Process"))
|
||||
* )
|
||||
@@ -121,9 +132,13 @@ public function index() {}
|
||||
* tags={"Process"},
|
||||
* summary="공정 상세 조회",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\Response(response=200, description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Process")
|
||||
* )
|
||||
@@ -138,11 +153,16 @@ public function show() {}
|
||||
* tags={"Process"},
|
||||
* summary="공정 생성",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\RequestBody(required=true,
|
||||
*
|
||||
* @OA\JsonContent(ref="#/components/schemas/ProcessCreateRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=201, description="생성됨",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="message.created"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Process")
|
||||
@@ -158,12 +178,18 @@ public function store() {}
|
||||
* tags={"Process"},
|
||||
* summary="공정 수정",
|
||||
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
|
||||
*
|
||||
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
|
||||
*
|
||||
* @OA\RequestBody(required=true,
|
||||
*
|
||||
* @OA\JsonContent(ref="#/components/schemas/ProcessCreateRequest")
|
||||
* ),
|
||||
*
|
||||
* @OA\Response(response=200, description="성공",
|
||||
*
|
||||
* @OA\JsonContent(
|
||||
*
|
||||
* @OA\Property(property="success", type="boolean", example=true),
|
||||
* @OA\Property(property="message", type="string", example="message.updated"),
|
||||
* @OA\Property(property="data", ref="#/components/schemas/Process")
|
||||
|
||||
@@ -277,8 +277,10 @@
|
||||
* description="다건 BOM 기반 자동산출 요청. React QuoteFormItem 필드명(camelCase)과 API 변수명(약어) 모두 지원합니다.",
|
||||
*
|
||||
* @OA\Property(property="items", type="array", minItems=1, description="견적 품목 배열",
|
||||
*
|
||||
* @OA\Items(ref="#/components/schemas/QuoteBomBulkItemInput")
|
||||
* ),
|
||||
*
|
||||
* @OA\Property(property="debug", type="boolean", example=false, description="디버그 모드 (10단계 디버깅 정보 포함)")
|
||||
* )
|
||||
*
|
||||
@@ -321,7 +323,9 @@
|
||||
* @OA\Property(property="grand_total", type="number", format="float", example=1500000, description="성공한 품목 총계")
|
||||
* ),
|
||||
* @OA\Property(property="items", type="array", description="품목별 산출 결과",
|
||||
*
|
||||
* @OA\Items(type="object",
|
||||
*
|
||||
* @OA\Property(property="index", type="integer", example=0, description="요청 배열에서의 인덱스"),
|
||||
* @OA\Property(property="finished_goods_code", type="string", example="SC-1000"),
|
||||
* @OA\Property(property="inputs", type="object", description="정규화된 입력 변수"),
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
*
|
||||
* @OA\Items(type="integer", example=1)
|
||||
* ),
|
||||
*
|
||||
* @OA\Property(
|
||||
* property="categories",
|
||||
* type="array",
|
||||
|
||||
@@ -77,7 +77,6 @@
|
||||
* type="object",
|
||||
* description="출하 상세 정보 (품목 포함)",
|
||||
* allOf={
|
||||
*
|
||||
* @OA\Schema(ref="#/components/schemas/Shipment"),
|
||||
* @OA\Schema(
|
||||
*
|
||||
@@ -114,31 +113,24 @@
|
||||
* @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)
|
||||
* )
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
* type="object",
|
||||
* description="재고 상세 정보 (LOT 포함)",
|
||||
* allOf={
|
||||
*
|
||||
* @OA\Schema(ref="#/components/schemas/Stock"),
|
||||
* @OA\Schema(
|
||||
*
|
||||
@@ -98,43 +97,34 @@
|
||||
* @OA\Property(
|
||||
* property="raw_material",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="label", type="string", example="원자재"),
|
||||
* @OA\Property(property="count", type="integer", example=50),
|
||||
* @OA\Property(property="total_qty", type="number", format="float", example=5000.0)
|
||||
* ),
|
||||
*
|
||||
* @OA\Property(
|
||||
* property="bent_part",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="label", type="string", example="절곡부품"),
|
||||
* @OA\Property(property="count", type="integer", example=30),
|
||||
* @OA\Property(property="total_qty", type="number", format="float", example=2500.0)
|
||||
* ),
|
||||
*
|
||||
* @OA\Property(
|
||||
* property="purchased_part",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="label", type="string", example="구매부품"),
|
||||
* @OA\Property(property="count", type="integer", example=40),
|
||||
* @OA\Property(property="total_qty", type="number", format="float", example=3000.0)
|
||||
* ),
|
||||
*
|
||||
* @OA\Property(
|
||||
* property="sub_material",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="label", type="string", example="부자재"),
|
||||
* @OA\Property(property="count", type="integer", example=20),
|
||||
* @OA\Property(property="total_qty", type="number", format="float", example=1500.0)
|
||||
* ),
|
||||
*
|
||||
* @OA\Property(
|
||||
* property="consumable",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="label", type="string", example="소모품"),
|
||||
* @OA\Property(property="count", type="integer", example=10),
|
||||
* @OA\Property(property="total_qty", type="number", format="float", example=500.0)
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
* schema="VendorLedgerPagination",
|
||||
* description="거래처원장 목록 페이지네이션",
|
||||
* type="object",
|
||||
*
|
||||
* @OA\Property(property="current_page", type="integer", example=1),
|
||||
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/VendorLedgerItem")),
|
||||
* @OA\Property(property="first_page_url", type="string"),
|
||||
|
||||
Reference in New Issue
Block a user