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:
2026-01-13 19:48:54 +09:00
parent fc6d88bd26
commit e571f8c38e
10 changed files with 172 additions and 20 deletions

View File

@@ -144,6 +144,7 @@
* @OA\Property( * @OA\Property(
* property="data", * property="data",
* type="array", * type="array",
*
* @OA\Items(ref="#/components/schemas/AdminFcmToken") * @OA\Items(ref="#/components/schemas/AdminFcmToken")
* ) * )
* ) * )
@@ -159,6 +160,7 @@
* @OA\Property( * @OA\Property(
* property="data", * property="data",
* type="array", * type="array",
*
* @OA\Items(ref="#/components/schemas/AdminFcmSendLog") * @OA\Items(ref="#/components/schemas/AdminFcmSendLog")
* ) * )
* ) * )
@@ -177,6 +179,7 @@ class AdminFcmApi
* header="X-Sender-Id", * header="X-Sender-Id",
* description="발송자 ID (MNG 관리자 ID)", * description="발송자 ID (MNG 관리자 ID)",
* required=false, * required=false,
*
* @OA\Schema(type="integer", example=10) * @OA\Schema(type="integer", example=10)
* ), * ),
* *
@@ -216,6 +219,7 @@ class AdminFcmApi
* *
* @OA\JsonContent(ref="#/components/schemas/ErrorResponse") * @OA\JsonContent(ref="#/components/schemas/ErrorResponse")
* ), * ),
*
* @OA\Response(response=401, description="인증 실패", @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() {} public function history() {}
} }

View File

@@ -12,6 +12,7 @@
* schema="Bill", * schema="Bill",
* type="object", * type="object",
* required={"id", "tenant_id", "bill_number", "bill_type", "amount", "issue_date", "maturity_date", "status"}, * 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="id", type="integer", example=1),
* @OA\Property(property="tenant_id", type="integer", example=1), * @OA\Property(property="tenant_id", type="integer", example=1),
* @OA\Property(property="bill_number", type="string", example="202412000001", description="어음번호"), * @OA\Property(property="bill_number", type="string", example="202412000001", description="어음번호"),
@@ -49,6 +50,7 @@
* @OA\Property( * @OA\Property(
* property="installments", * property="installments",
* type="array", * type="array",
*
* @OA\Items(ref="#/components/schemas/BillInstallment") * @OA\Items(ref="#/components/schemas/BillInstallment")
* ) * )
* ) * )
@@ -56,6 +58,7 @@
* @OA\Schema( * @OA\Schema(
* schema="BillInstallment", * schema="BillInstallment",
* type="object", * type="object",
*
* @OA\Property(property="id", type="integer", example=1), * @OA\Property(property="id", type="integer", example=1),
* @OA\Property(property="bill_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="차수 일자"), * @OA\Property(property="installment_date", type="string", format="date", example="2024-12-15", description="차수 일자"),
@@ -68,11 +71,14 @@
* @OA\Schema( * @OA\Schema(
* schema="BillPagination", * schema="BillPagination",
* type="object", * type="object",
*
* @OA\Property( * @OA\Property(
* property="data", * property="data",
* type="array", * type="array",
*
* @OA\Items(ref="#/components/schemas/Bill") * @OA\Items(ref="#/components/schemas/Bill")
* ), * ),
*
* @OA\Property(property="current_page", type="integer", example=1), * @OA\Property(property="current_page", type="integer", example=1),
* @OA\Property(property="last_page", type="integer", example=5), * @OA\Property(property="last_page", type="integer", example=5),
* @OA\Property(property="per_page", type="integer", example=20), * @OA\Property(property="per_page", type="integer", example=20),
@@ -85,6 +91,7 @@
* schema="BillCreateRequest", * schema="BillCreateRequest",
* type="object", * type="object",
* required={"bill_type", "amount", "issue_date", "maturity_date"}, * required={"bill_type", "amount", "issue_date", "maturity_date"},
*
* @OA\Property(property="bill_number", type="string", nullable=true, example="202412000001", description="어음번호 (미입력시 자동생성)"), * @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="bill_type", type="string", enum={"received", "issued"}, example="received", description="어음 구분"),
* @OA\Property(property="client_id", type="integer", nullable=true, example=10, description="거래처 ID"), * @OA\Property(property="client_id", type="integer", nullable=true, example=10, description="거래처 ID"),
@@ -101,8 +108,10 @@
* property="installments", * property="installments",
* type="array", * type="array",
* nullable=true, * nullable=true,
*
* @OA\Items( * @OA\Items(
* type="object", * type="object",
*
* @OA\Property(property="date", type="string", format="date", example="2024-12-15"), * @OA\Property(property="date", type="string", format="date", example="2024-12-15"),
* @OA\Property(property="amount", type="number", example=5000000), * @OA\Property(property="amount", type="number", example=5000000),
* @OA\Property(property="note", type="string", nullable=true, example="1차 분할") * @OA\Property(property="note", type="string", nullable=true, example="1차 분할")
@@ -113,6 +122,7 @@
* @OA\Schema( * @OA\Schema(
* schema="BillUpdateRequest", * schema="BillUpdateRequest",
* type="object", * type="object",
*
* @OA\Property(property="bill_number", type="string", nullable=true, example="202412000001"), * @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="bill_type", type="string", enum={"received", "issued"}, nullable=true),
* @OA\Property(property="client_id", type="integer", nullable=true), * @OA\Property(property="client_id", type="integer", nullable=true),
@@ -131,14 +141,17 @@
* @OA\Schema( * @OA\Schema(
* schema="BillSummary", * schema="BillSummary",
* type="object", * type="object",
*
* @OA\Property(property="total_amount", type="number", example=50000000, description="총 금액"), * @OA\Property(property="total_amount", type="number", example=50000000, description="총 금액"),
* @OA\Property(property="total_count", type="integer", example=10, description="총 건수"), * @OA\Property(property="total_count", type="integer", example=10, description="총 건수"),
* @OA\Property( * @OA\Property(
* property="by_type", * property="by_type",
* type="object", * type="object",
* description="구분별 합계", * description="구분별 합계",
*
* @OA\AdditionalProperties( * @OA\AdditionalProperties(
* type="object", * type="object",
*
* @OA\Property(property="bill_type", type="string"), * @OA\Property(property="bill_type", type="string"),
* @OA\Property(property="total", type="number"), * @OA\Property(property="total", type="number"),
* @OA\Property(property="count", type="integer") * @OA\Property(property="count", type="integer")
@@ -162,6 +175,7 @@ class BillApi
* summary="어음 목록 조회", * summary="어음 목록 조회",
* description="어음 목록을 페이지네이션하여 조회합니다.", * description="어음 목록을 페이지네이션하여 조회합니다.",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="search", in="query", description="검색어 (어음번호, 거래처명, 메모)", @OA\Schema(type="string")), * @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="bill_type", in="query", description="어음 구분", @OA\Schema(type="string", enum={"received", "issued"})),
* @OA\Parameter(name="status", in="query", description="상태", @OA\Schema(type="string")), * @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="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="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\Parameter(name="page", in="query", description="페이지 번호", @OA\Schema(type="integer", default=1)),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."), * @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
* @OA\Property(property="data", ref="#/components/schemas/BillPagination") * @OA\Property(property="data", ref="#/components/schemas/BillPagination")
@@ -196,19 +213,25 @@ public function index() {}
* summary="어음 등록", * summary="어음 등록",
* description="새로운 어음을 등록합니다.", * description="새로운 어음을 등록합니다.",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent(ref="#/components/schemas/BillCreateRequest") * @OA\JsonContent(ref="#/components/schemas/BillCreateRequest")
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=201, * response=201,
* description="생성 성공", * description="생성 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="생성되었습니다."), * @OA\Property(property="message", type="string", example="생성되었습니다."),
* @OA\Property(property="data", ref="#/components/schemas/Bill") * @OA\Property(property="data", ref="#/components/schemas/Bill")
* ) * )
* ), * ),
*
* @OA\Response(response=422, description="유효성 검사 실패") * @OA\Response(response=422, description="유효성 검사 실패")
* ) * )
*/ */
@@ -222,16 +245,21 @@ public function store() {}
* summary="어음 상세 조회", * summary="어음 상세 조회",
* description="특정 어음의 상세 정보를 조회합니다.", * description="특정 어음의 상세 정보를 조회합니다.",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."), * @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
* @OA\Property(property="data", ref="#/components/schemas/Bill") * @OA\Property(property="data", ref="#/components/schemas/Bill")
* ) * )
* ), * ),
*
* @OA\Response(response=404, description="어음을 찾을 수 없음") * @OA\Response(response=404, description="어음을 찾을 수 없음")
* ) * )
*/ */
@@ -245,20 +273,27 @@ public function show() {}
* summary="어음 수정", * summary="어음 수정",
* description="기존 어음 정보를 수정합니다.", * description="기존 어음 정보를 수정합니다.",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")),
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent(ref="#/components/schemas/BillUpdateRequest") * @OA\JsonContent(ref="#/components/schemas/BillUpdateRequest")
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="수정 성공", * description="수정 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="수정되었습니다."), * @OA\Property(property="message", type="string", example="수정되었습니다."),
* @OA\Property(property="data", ref="#/components/schemas/Bill") * @OA\Property(property="data", ref="#/components/schemas/Bill")
* ) * )
* ), * ),
*
* @OA\Response(response=404, description="어음을 찾을 수 없음"), * @OA\Response(response=404, description="어음을 찾을 수 없음"),
* @OA\Response(response=422, description="유효성 검사 실패") * @OA\Response(response=422, description="유효성 검사 실패")
* ) * )
@@ -273,16 +308,21 @@ public function update() {}
* summary="어음 삭제", * summary="어음 삭제",
* description="어음을 삭제합니다. (Soft Delete)", * description="어음을 삭제합니다. (Soft Delete)",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="삭제 성공", * description="삭제 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="삭제되었습니다."), * @OA\Property(property="message", type="string", example="삭제되었습니다."),
* @OA\Property(property="data", type="null") * @OA\Property(property="data", type="null")
* ) * )
* ), * ),
*
* @OA\Response(response=404, description="어음을 찾을 수 없음") * @OA\Response(response=404, description="어음을 찾을 수 없음")
* ) * )
*/ */
@@ -296,23 +336,31 @@ public function destroy() {}
* summary="어음 상태 변경", * summary="어음 상태 변경",
* description="어음의 상태를 변경합니다.", * description="어음의 상태를 변경합니다.",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, description="어음 ID", @OA\Schema(type="integer")),
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent( * @OA\JsonContent(
* required={"status"}, * required={"status"},
*
* @OA\Property(property="status", type="string", example="paymentComplete", description="변경할 상태") * @OA\Property(property="status", type="string", example="paymentComplete", description="변경할 상태")
* ) * )
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="상태 변경 성공", * description="상태 변경 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="수정되었습니다."), * @OA\Property(property="message", type="string", example="수정되었습니다."),
* @OA\Property(property="data", ref="#/components/schemas/Bill") * @OA\Property(property="data", ref="#/components/schemas/Bill")
* ) * )
* ), * ),
*
* @OA\Response(response=404, description="어음을 찾을 수 없음"), * @OA\Response(response=404, description="어음을 찾을 수 없음"),
* @OA\Response(response=422, description="유효성 검사 실패") * @OA\Response(response=422, description="유효성 검사 실패")
* ) * )
@@ -327,15 +375,19 @@ public function updateStatus() {}
* summary="어음 요약 조회", * summary="어음 요약 조회",
* description="기간별 어음 요약 정보를 조회합니다.", * description="기간별 어음 요약 정보를 조회합니다.",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="bill_type", in="query", description="어음 구분", @OA\Schema(type="string", enum={"received", "issued"})), * @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_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="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_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\Parameter(name="maturity_end_date", in="query", description="만기일 종료", @OA\Schema(type="string", format="date")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."), * @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
* @OA\Property(property="data", ref="#/components/schemas/BillSummary") * @OA\Property(property="data", ref="#/components/schemas/BillSummary")

View File

@@ -11,6 +11,7 @@
* @OA\Schema( * @OA\Schema(
* schema="ExpectedExpense", * schema="ExpectedExpense",
* type="object", * type="object",
*
* @OA\Property(property="id", type="integer", example=1), * @OA\Property(property="id", type="integer", example=1),
* @OA\Property(property="tenant_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"), * @OA\Property(property="expected_payment_date", type="string", format="date", example="2025-01-15"),
@@ -46,6 +47,7 @@
* @OA\Schema( * @OA\Schema(
* schema="ExpectedExpensePagination", * schema="ExpectedExpensePagination",
* type="object", * type="object",
*
* @OA\Property(property="current_page", type="integer", example=1), * @OA\Property(property="current_page", type="integer", example=1),
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/ExpectedExpense")), * @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/ExpectedExpense")),
* @OA\Property(property="first_page_url", type="string"), * @OA\Property(property="first_page_url", type="string"),
@@ -64,6 +66,7 @@
* schema="ExpectedExpenseCreateRequest", * schema="ExpectedExpenseCreateRequest",
* type="object", * type="object",
* required={"expected_payment_date", "transaction_type", "amount"}, * required={"expected_payment_date", "transaction_type", "amount"},
*
* @OA\Property(property="expected_payment_date", type="string", format="date", example="2025-01-15"), * @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="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"), * @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( * @OA\Schema(
* schema="ExpectedExpenseUpdateRequest", * schema="ExpectedExpenseUpdateRequest",
* type="object", * type="object",
*
* @OA\Property(property="expected_payment_date", type="string", format="date", example="2025-01-20"), * @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="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"}), * @OA\Property(property="transaction_type", type="string", enum={"purchase","advance","suspense","rent","salary","insurance","tax","utilities","other"}),
@@ -96,6 +100,7 @@
* @OA\Schema( * @OA\Schema(
* schema="ExpectedExpenseSummary", * schema="ExpectedExpenseSummary",
* type="object", * type="object",
*
* @OA\Property(property="total_amount", type="number", format="float", example=15000000), * @OA\Property(property="total_amount", type="number", format="float", example=15000000),
* @OA\Property(property="total_count", type="integer", example=12), * @OA\Property(property="total_count", type="integer", example=12),
* @OA\Property(property="by_payment_status", type="object"), * @OA\Property(property="by_payment_status", type="object"),
@@ -111,6 +116,7 @@ class ExpectedExpenseApi
* summary="미지급비용 목록 조회", * summary="미지급비용 목록 조회",
* tags={"ExpectedExpense"}, * tags={"ExpectedExpense"},
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="search", in="query", description="검색어 (거래처명, 계정과목, 적요)", @OA\Schema(type="string")), * @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="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="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="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="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\Parameter(name="page", in="query", description="페이지 번호", @OA\Schema(type="integer", default=1)),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpensePagination") * @OA\Property(property="data", ref="#/components/schemas/ExpectedExpensePagination")
@@ -141,14 +150,19 @@ public function index() {}
* summary="미지급비용 등록", * summary="미지급비용 등록",
* tags={"ExpectedExpense"}, * tags={"ExpectedExpense"},
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent(ref="#/components/schemas/ExpectedExpenseCreateRequest") * @OA\JsonContent(ref="#/components/schemas/ExpectedExpenseCreateRequest")
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=201, * response=201,
* description="생성 성공", * description="생성 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense") * @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense")
@@ -164,11 +178,15 @@ public function store() {}
* summary="미지급비용 상세 조회", * summary="미지급비용 상세 조회",
* tags={"ExpectedExpense"}, * tags={"ExpectedExpense"},
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, description="미지급비용 ID", @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, description="미지급비용 ID", @OA\Schema(type="integer")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense") * @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense")
@@ -184,15 +202,21 @@ public function show() {}
* summary="미지급비용 수정", * summary="미지급비용 수정",
* tags={"ExpectedExpense"}, * tags={"ExpectedExpense"},
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, description="미지급비용 ID", @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, description="미지급비용 ID", @OA\Schema(type="integer")),
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent(ref="#/components/schemas/ExpectedExpenseUpdateRequest") * @OA\JsonContent(ref="#/components/schemas/ExpectedExpenseUpdateRequest")
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="수정 성공", * description="수정 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense") * @OA\Property(property="data", ref="#/components/schemas/ExpectedExpense")
@@ -208,11 +232,15 @@ public function update() {}
* summary="미지급비용 삭제", * summary="미지급비용 삭제",
* tags={"ExpectedExpense"}, * tags={"ExpectedExpense"},
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, description="미지급비용 ID", @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, description="미지급비용 ID", @OA\Schema(type="integer")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="삭제 성공", * description="삭제 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string") * @OA\Property(property="message", type="string")
* ) * )
@@ -227,16 +255,22 @@ public function destroy() {}
* summary="미지급비용 일괄 삭제", * summary="미지급비용 일괄 삭제",
* tags={"ExpectedExpense"}, * tags={"ExpectedExpense"},
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="ids", type="array", @OA\Items(type="integer"), example={1, 2, 3}) * @OA\Property(property="ids", type="array", @OA\Items(type="integer"), example={1, 2, 3})
* ) * )
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="일괄 삭제 성공", * description="일괄 삭제 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", type="object", * @OA\Property(property="data", type="object",
@@ -254,17 +288,23 @@ public function destroyMany() {}
* summary="예상 지급일 일괄 변경", * summary="예상 지급일 일괄 변경",
* tags={"ExpectedExpense"}, * tags={"ExpectedExpense"},
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="ids", type="array", @OA\Items(type="integer"), example={1, 2, 3}), * @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\Property(property="expected_payment_date", type="string", format="date", example="2025-02-01")
* ) * )
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="일괄 변경 성공", * description="일괄 변경 성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", type="object", * @OA\Property(property="data", type="object",
@@ -282,13 +322,17 @@ public function updateExpectedPaymentDate() {}
* summary="미지급비용 요약 (기간별 합계)", * summary="미지급비용 요약 (기간별 합계)",
* tags={"ExpectedExpense"}, * tags={"ExpectedExpense"},
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="start_date", in="query", description="시작일", @OA\Schema(type="string", format="date")), * @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="end_date", in="query", description="종료일", @OA\Schema(type="string", format="date")),
* @OA\Parameter(name="payment_status", in="query", description="지급상태", @OA\Schema(type="string")), * @OA\Parameter(name="payment_status", in="query", description="지급상태", @OA\Schema(type="string")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", ref="#/components/schemas/ExpectedExpenseSummary") * @OA\Property(property="data", ref="#/components/schemas/ExpectedExpenseSummary")

View File

@@ -12,6 +12,7 @@
* schema="Position", * schema="Position",
* type="object", * type="object",
* required={"id", "tenant_id", "type", "name", "sort_order", "is_active"}, * required={"id", "tenant_id", "type", "name", "sort_order", "is_active"},
*
* @OA\Property(property="id", type="integer", example=1), * @OA\Property(property="id", type="integer", example=1),
* @OA\Property(property="tenant_id", type="integer", example=287), * @OA\Property(property="tenant_id", type="integer", example=287),
* @OA\Property(property="type", type="string", enum={"rank", "title"}, example="rank", description="유형: rank(직급), title(직책)"), * @OA\Property(property="type", type="string", enum={"rank", "title"}, example="rank", description="유형: rank(직급), title(직책)"),
@@ -26,6 +27,7 @@
* schema="PositionCreateRequest", * schema="PositionCreateRequest",
* type="object", * type="object",
* required={"type", "name"}, * required={"type", "name"},
*
* @OA\Property(property="type", type="string", enum={"rank", "title"}, example="rank", description="유형: rank(직급), title(직책)"), * @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="name", type="string", example="과장", description="명칭"),
* @OA\Property(property="sort_order", type="integer", example=3, description="정렬 순서 (생략시 자동)"), * @OA\Property(property="sort_order", type="integer", example=3, description="정렬 순서 (생략시 자동)"),
@@ -35,6 +37,7 @@
* @OA\Schema( * @OA\Schema(
* schema="PositionUpdateRequest", * schema="PositionUpdateRequest",
* type="object", * type="object",
*
* @OA\Property(property="name", type="string", example="과장", description="명칭"), * @OA\Property(property="name", type="string", example="과장", description="명칭"),
* @OA\Property(property="sort_order", type="integer", example=3, description="정렬 순서"), * @OA\Property(property="sort_order", type="integer", example=3, description="정렬 순서"),
* @OA\Property(property="is_active", type="boolean", example=true, description="활성화 여부") * @OA\Property(property="is_active", type="boolean", example=true, description="활성화 여부")
@@ -44,12 +47,15 @@
* schema="PositionReorderRequest", * schema="PositionReorderRequest",
* type="object", * type="object",
* required={"items"}, * required={"items"},
*
* @OA\Property( * @OA\Property(
* property="items", * property="items",
* type="array", * type="array",
*
* @OA\Items( * @OA\Items(
* type="object", * type="object",
* required={"id", "sort_order"}, * required={"id", "sort_order"},
*
* @OA\Property(property="id", type="integer", example=1), * @OA\Property(property="id", type="integer", example=1),
* @OA\Property(property="sort_order", type="integer", example=1) * @OA\Property(property="sort_order", type="integer", example=1)
* ) * )
@@ -64,15 +70,19 @@ class PositionApi
* tags={"Position"}, * tags={"Position"},
* summary="직급/직책 목록 조회", * summary="직급/직책 목록 조회",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="type", in="query", description="유형 필터 (rank: 직급, title: 직책)", @OA\Schema(type="string", enum={"rank", "title"})), * @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="is_active", in="query", description="활성화 필터", @OA\Schema(type="boolean")),
* @OA\Parameter(name="q", in="query", description="검색어 (명칭)", @OA\Schema(type="string")), * @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="per_page", in="query", description="페이지당 개수 (생략시 전체)", @OA\Schema(type="integer")),
* @OA\Parameter(name="page", in="query", description="페이지 번호", @OA\Schema(type="integer")), * @OA\Parameter(name="page", in="query", description="페이지 번호", @OA\Schema(type="integer")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/Position")) * @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/Position"))
@@ -88,19 +98,25 @@ public function index() {}
* tags={"Position"}, * tags={"Position"},
* summary="직급/직책 생성", * summary="직급/직책 생성",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent(ref="#/components/schemas/PositionCreateRequest") * @OA\JsonContent(ref="#/components/schemas/PositionCreateRequest")
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", ref="#/components/schemas/Position") * @OA\Property(property="data", ref="#/components/schemas/Position")
* ) * )
* ), * ),
*
* @OA\Response(response=409, description="중복 오류") * @OA\Response(response=409, description="중복 오류")
* ) * )
*/ */
@@ -112,16 +128,21 @@ public function store() {}
* tags={"Position"}, * tags={"Position"},
* summary="직급/직책 단건 조회", * summary="직급/직책 단건 조회",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", ref="#/components/schemas/Position") * @OA\Property(property="data", ref="#/components/schemas/Position")
* ) * )
* ), * ),
*
* @OA\Response(response=404, description="찾을 수 없음") * @OA\Response(response=404, description="찾을 수 없음")
* ) * )
*/ */
@@ -133,20 +154,27 @@ public function show() {}
* tags={"Position"}, * tags={"Position"},
* summary="직급/직책 수정", * summary="직급/직책 수정",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent(ref="#/components/schemas/PositionUpdateRequest") * @OA\JsonContent(ref="#/components/schemas/PositionUpdateRequest")
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", ref="#/components/schemas/Position") * @OA\Property(property="data", ref="#/components/schemas/Position")
* ) * )
* ), * ),
*
* @OA\Response(response=404, description="찾을 수 없음"), * @OA\Response(response=404, description="찾을 수 없음"),
* @OA\Response(response=409, description="중복 오류") * @OA\Response(response=409, description="중복 오류")
* ) * )
@@ -159,11 +187,15 @@ public function update() {}
* tags={"Position"}, * tags={"Position"},
* summary="직급/직책 삭제", * summary="직급/직책 삭제",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", type="object", * @OA\Property(property="data", type="object",
@@ -172,6 +204,7 @@ public function update() {}
* ) * )
* ) * )
* ), * ),
*
* @OA\Response(response=404, description="찾을 수 없음") * @OA\Response(response=404, description="찾을 수 없음")
* ) * )
*/ */
@@ -183,14 +216,19 @@ public function destroy() {}
* tags={"Position"}, * tags={"Position"},
* summary="직급/직책 순서 변경 (벌크)", * summary="직급/직책 순서 변경 (벌크)",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\RequestBody( * @OA\RequestBody(
* required=true, * required=true,
*
* @OA\JsonContent(ref="#/components/schemas/PositionReorderRequest") * @OA\JsonContent(ref="#/components/schemas/PositionReorderRequest")
* ), * ),
*
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="성공", * description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string"), * @OA\Property(property="message", type="string"),
* @OA\Property(property="data", type="object", * @OA\Property(property="data", type="object",
@@ -202,4 +240,4 @@ public function destroy() {}
* ) * )
*/ */
public function reorder() {} public function reorder() {}
} }

View File

@@ -13,6 +13,7 @@
* @OA\Schema( * @OA\Schema(
* schema="ProcessItem", * schema="ProcessItem",
* type="object", * type="object",
*
* @OA\Property(property="id", type="integer", example=1), * @OA\Property(property="id", type="integer", example=1),
* @OA\Property(property="process_id", type="integer", example=1), * @OA\Property(property="process_id", type="integer", example=1),
* @OA\Property(property="item_id", type="integer", example=123), * @OA\Property(property="item_id", type="integer", example=123),
@@ -28,6 +29,7 @@
* @OA\Schema( * @OA\Schema(
* schema="ProcessClassificationRule", * schema="ProcessClassificationRule",
* type="object", * type="object",
*
* @OA\Property(property="id", type="integer", example=1), * @OA\Property(property="id", type="integer", example=1),
* @OA\Property(property="process_id", type="integer", example=1), * @OA\Property(property="process_id", type="integer", example=1),
* @OA\Property(property="registration_type", type="string", example="pattern"), * @OA\Property(property="registration_type", type="string", example="pattern"),
@@ -42,6 +44,7 @@
* @OA\Schema( * @OA\Schema(
* schema="Process", * schema="Process",
* type="object", * type="object",
*
* @OA\Property(property="id", type="integer", example=1), * @OA\Property(property="id", type="integer", example=1),
* @OA\Property(property="tenant_id", type="integer", example=1), * @OA\Property(property="tenant_id", type="integer", example=1),
* @OA\Property(property="process_code", type="string", example="P-001"), * @OA\Property(property="process_code", type="string", example="P-001"),
@@ -63,6 +66,7 @@
* schema="ProcessCreateRequest", * schema="ProcessCreateRequest",
* type="object", * type="object",
* required={"process_name", "process_type"}, * required={"process_name", "process_type"},
*
* @OA\Property(property="process_name", type="string", maxLength=100, example="스크린 생산"), * @OA\Property(property="process_name", type="string", maxLength=100, example="스크린 생산"),
* @OA\Property(property="description", type="string", nullable=true), * @OA\Property(property="description", type="string", nullable=true),
* @OA\Property(property="process_type", type="string", enum={"생산", "검사", "포장", "조립"}), * @OA\Property(property="process_type", type="string", enum={"생산", "검사", "포장", "조립"}),
@@ -75,9 +79,11 @@
* @OA\Property(property="is_active", type="boolean", nullable=true), * @OA\Property(property="is_active", type="boolean", nullable=true),
* @OA\Property(property="classification_rules", type="array", nullable=true, * @OA\Property(property="classification_rules", type="array", nullable=true,
* description="패턴 기반 분류 규칙", * description="패턴 기반 분류 규칙",
*
* @OA\Items( * @OA\Items(
* type="object", * type="object",
* required={"rule_type", "matching_type", "condition_value"}, * required={"rule_type", "matching_type", "condition_value"},
*
* @OA\Property(property="rule_type", type="string", enum={"품목코드", "품목명", "품목구분"}), * @OA\Property(property="rule_type", type="string", enum={"품목코드", "품목명", "품목구분"}),
* @OA\Property(property="matching_type", type="string", enum={"startsWith", "endsWith", "contains", "equals"}), * @OA\Property(property="matching_type", type="string", enum={"startsWith", "endsWith", "contains", "equals"}),
* @OA\Property(property="condition_value", type="string", maxLength=255), * @OA\Property(property="condition_value", type="string", maxLength=255),
@@ -88,6 +94,7 @@
* ), * ),
* @OA\Property(property="item_ids", type="array", nullable=true, * @OA\Property(property="item_ids", type="array", nullable=true,
* description="개별 품목 ID 배열", * description="개별 품목 ID 배열",
*
* @OA\Items(type="integer", example=123) * @OA\Items(type="integer", example=123)
* ) * )
* ) * )
@@ -100,13 +107,17 @@ class ProcessApi
* tags={"Process"}, * tags={"Process"},
* summary="공정 목록 조회", * summary="공정 목록 조회",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="page", in="query", @OA\Schema(type="integer", default=1)), * @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="size", in="query", @OA\Schema(type="integer", default=20)),
* @OA\Parameter(name="q", in="query", description="검색어", @OA\Schema(type="string")), * @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="status", in="query", @OA\Schema(type="string", enum={"active", "inactive"})),
* @OA\Parameter(name="process_type", in="query", @OA\Schema(type="string", enum={"생산", "검사", "포장", "조립"})), * @OA\Parameter(name="process_type", in="query", @OA\Schema(type="string", enum={"생산", "검사", "포장", "조립"})),
*
* @OA\Response(response=200, description="성공", * @OA\Response(response=200, description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/Process")) * @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/Process"))
* ) * )
@@ -121,9 +132,13 @@ public function index() {}
* tags={"Process"}, * tags={"Process"},
* summary="공정 상세 조회", * summary="공정 상세 조회",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
*
* @OA\Response(response=200, description="성공", * @OA\Response(response=200, description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="data", ref="#/components/schemas/Process") * @OA\Property(property="data", ref="#/components/schemas/Process")
* ) * )
@@ -138,11 +153,16 @@ public function show() {}
* tags={"Process"}, * tags={"Process"},
* summary="공정 생성", * summary="공정 생성",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\RequestBody(required=true, * @OA\RequestBody(required=true,
*
* @OA\JsonContent(ref="#/components/schemas/ProcessCreateRequest") * @OA\JsonContent(ref="#/components/schemas/ProcessCreateRequest")
* ), * ),
*
* @OA\Response(response=201, description="생성됨", * @OA\Response(response=201, description="생성됨",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="message.created"), * @OA\Property(property="message", type="string", example="message.created"),
* @OA\Property(property="data", ref="#/components/schemas/Process") * @OA\Property(property="data", ref="#/components/schemas/Process")
@@ -158,12 +178,18 @@ public function store() {}
* tags={"Process"}, * tags={"Process"},
* summary="공정 수정", * summary="공정 수정",
* security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}}, * security={{"ApiKeyAuth": {}}, {"BearerAuth": {}}},
*
* @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")), * @OA\Parameter(name="id", in="path", required=true, @OA\Schema(type="integer")),
*
* @OA\RequestBody(required=true, * @OA\RequestBody(required=true,
*
* @OA\JsonContent(ref="#/components/schemas/ProcessCreateRequest") * @OA\JsonContent(ref="#/components/schemas/ProcessCreateRequest")
* ), * ),
*
* @OA\Response(response=200, description="성공", * @OA\Response(response=200, description="성공",
*
* @OA\JsonContent( * @OA\JsonContent(
*
* @OA\Property(property="success", type="boolean", example=true), * @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="message.updated"), * @OA\Property(property="message", type="string", example="message.updated"),
* @OA\Property(property="data", ref="#/components/schemas/Process") * @OA\Property(property="data", ref="#/components/schemas/Process")

View File

@@ -277,8 +277,10 @@
* description="다건 BOM 기반 자동산출 요청. React QuoteFormItem 필드명(camelCase)과 API 변수명(약어) 모두 지원합니다.", * description="다건 BOM 기반 자동산출 요청. React QuoteFormItem 필드명(camelCase)과 API 변수명(약어) 모두 지원합니다.",
* *
* @OA\Property(property="items", type="array", minItems=1, description="견적 품목 배열", * @OA\Property(property="items", type="array", minItems=1, description="견적 품목 배열",
*
* @OA\Items(ref="#/components/schemas/QuoteBomBulkItemInput") * @OA\Items(ref="#/components/schemas/QuoteBomBulkItemInput")
* ), * ),
*
* @OA\Property(property="debug", type="boolean", example=false, description="디버그 모드 (10단계 디버깅 정보 포함)") * @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="grand_total", type="number", format="float", example=1500000, description="성공한 품목 총계")
* ), * ),
* @OA\Property(property="items", type="array", description="품목별 산출 결과", * @OA\Property(property="items", type="array", description="품목별 산출 결과",
*
* @OA\Items(type="object", * @OA\Items(type="object",
*
* @OA\Property(property="index", type="integer", example=0, description="요청 배열에서의 인덱스"), * @OA\Property(property="index", type="integer", example=0, description="요청 배열에서의 인덱스"),
* @OA\Property(property="finished_goods_code", type="string", example="SC-1000"), * @OA\Property(property="finished_goods_code", type="string", example="SC-1000"),
* @OA\Property(property="inputs", type="object", description="정규화된 입력 변수"), * @OA\Property(property="inputs", type="object", description="정규화된 입력 변수"),

View File

@@ -52,6 +52,7 @@
* *
* @OA\Items(type="integer", example=1) * @OA\Items(type="integer", example=1)
* ), * ),
*
* @OA\Property( * @OA\Property(
* property="categories", * property="categories",
* type="array", * type="array",

View File

@@ -77,7 +77,6 @@
* type="object", * type="object",
* description="출하 상세 정보 (품목 포함)", * description="출하 상세 정보 (품목 포함)",
* allOf={ * allOf={
*
* @OA\Schema(ref="#/components/schemas/Shipment"), * @OA\Schema(ref="#/components/schemas/Shipment"),
* @OA\Schema( * @OA\Schema(
* *
@@ -114,31 +113,24 @@
* @OA\Property( * @OA\Property(
* property="scheduled", * property="scheduled",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="출고예정"), * @OA\Property(property="label", type="string", example="출고예정"),
* @OA\Property(property="count", type="integer", example=30) * @OA\Property(property="count", type="integer", example=30)
* ), * ),
*
* @OA\Property( * @OA\Property(
* property="ready", * property="ready",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="출하대기"), * @OA\Property(property="label", type="string", example="출하대기"),
* @OA\Property(property="count", type="integer", example=20) * @OA\Property(property="count", type="integer", example=20)
* ), * ),
*
* @OA\Property( * @OA\Property(
* property="shipping", * property="shipping",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="배송중"), * @OA\Property(property="label", type="string", example="배송중"),
* @OA\Property(property="count", type="integer", example=15) * @OA\Property(property="count", type="integer", example=15)
* ), * ),
*
* @OA\Property( * @OA\Property(
* property="completed", * property="completed",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="배송완료"), * @OA\Property(property="label", type="string", example="배송완료"),
* @OA\Property(property="count", type="integer", example=35) * @OA\Property(property="count", type="integer", example=35)
* ) * )

View File

@@ -64,7 +64,6 @@
* type="object", * type="object",
* description="재고 상세 정보 (LOT 포함)", * description="재고 상세 정보 (LOT 포함)",
* allOf={ * allOf={
*
* @OA\Schema(ref="#/components/schemas/Stock"), * @OA\Schema(ref="#/components/schemas/Stock"),
* @OA\Schema( * @OA\Schema(
* *
@@ -98,43 +97,34 @@
* @OA\Property( * @OA\Property(
* property="raw_material", * property="raw_material",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="원자재"), * @OA\Property(property="label", type="string", example="원자재"),
* @OA\Property(property="count", type="integer", example=50), * @OA\Property(property="count", type="integer", example=50),
* @OA\Property(property="total_qty", type="number", format="float", example=5000.0) * @OA\Property(property="total_qty", type="number", format="float", example=5000.0)
* ), * ),
*
* @OA\Property( * @OA\Property(
* property="bent_part", * property="bent_part",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="절곡부품"), * @OA\Property(property="label", type="string", example="절곡부품"),
* @OA\Property(property="count", type="integer", example=30), * @OA\Property(property="count", type="integer", example=30),
* @OA\Property(property="total_qty", type="number", format="float", example=2500.0) * @OA\Property(property="total_qty", type="number", format="float", example=2500.0)
* ), * ),
*
* @OA\Property( * @OA\Property(
* property="purchased_part", * property="purchased_part",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="구매부품"), * @OA\Property(property="label", type="string", example="구매부품"),
* @OA\Property(property="count", type="integer", example=40), * @OA\Property(property="count", type="integer", example=40),
* @OA\Property(property="total_qty", type="number", format="float", example=3000.0) * @OA\Property(property="total_qty", type="number", format="float", example=3000.0)
* ), * ),
*
* @OA\Property( * @OA\Property(
* property="sub_material", * property="sub_material",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="부자재"), * @OA\Property(property="label", type="string", example="부자재"),
* @OA\Property(property="count", type="integer", example=20), * @OA\Property(property="count", type="integer", example=20),
* @OA\Property(property="total_qty", type="number", format="float", example=1500.0) * @OA\Property(property="total_qty", type="number", format="float", example=1500.0)
* ), * ),
*
* @OA\Property( * @OA\Property(
* property="consumable", * property="consumable",
* type="object", * type="object",
*
* @OA\Property(property="label", type="string", example="소모품"), * @OA\Property(property="label", type="string", example="소모품"),
* @OA\Property(property="count", type="integer", example=10), * @OA\Property(property="count", type="integer", example=10),
* @OA\Property(property="total_qty", type="number", format="float", example=500.0) * @OA\Property(property="total_qty", type="number", format="float", example=500.0)

View File

@@ -94,6 +94,7 @@
* schema="VendorLedgerPagination", * schema="VendorLedgerPagination",
* description="거래처원장 목록 페이지네이션", * description="거래처원장 목록 페이지네이션",
* type="object", * type="object",
*
* @OA\Property(property="current_page", type="integer", example=1), * @OA\Property(property="current_page", type="integer", example=1),
* @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/VendorLedgerItem")), * @OA\Property(property="data", type="array", @OA\Items(ref="#/components/schemas/VendorLedgerItem")),
* @OA\Property(property="first_page_url", type="string"), * @OA\Property(property="first_page_url", type="string"),