feat:테넌트설정 API 및 다수 서비스 개선

- TenantSetting CRUD API 추가
- Calendar, Entertainment, VAT 서비스 개선
- 5130 BOM 계산 로직 수정
- quote_items에 item_type 컬럼 추가
- tenant_settings 테이블 마이그레이션
- Swagger 문서 업데이트
This commit is contained in:
2026-01-26 20:29:22 +09:00
parent f2da990771
commit 6d05ab815f
54 changed files with 2090 additions and 110 deletions

View File

@@ -13,6 +13,7 @@
* type="object",
* description="오늘의 이슈 항목",
* required={"id", "badge", "content", "time"},
*
* @OA\Property(property="id", type="string", example="order_123", description="항목 고유 ID"),
* @OA\Property(
* property="badge",
@@ -32,12 +33,15 @@
* schema="TodayIssueSummaryResponse",
* type="object",
* description="오늘의 이슈 리스트 응답",
*
* @OA\Property(
* property="items",
* type="array",
* description="이슈 항목 리스트",
*
* @OA\Items(ref="#/components/schemas/TodayIssueItem")
* ),
*
* @OA\Property(property="total_count", type="integer", example=25, description="전체 이슈 건수")
* )
*
@@ -46,6 +50,7 @@
* type="object",
* description="읽지 않은 이슈 항목 (헤더 알림용)",
* required={"id", "badge", "content", "time", "created_at"},
*
* @OA\Property(property="id", type="integer", example=123, description="이슈 고유 ID"),
* @OA\Property(
* property="badge",
@@ -72,12 +77,15 @@
* schema="TodayIssueUnreadResponse",
* type="object",
* description="읽지 않은 이슈 목록 응답",
*
* @OA\Property(
* property="items",
* type="array",
* description="읽지 않은 이슈 항목 리스트",
*
* @OA\Items(ref="#/components/schemas/TodayIssueUnreadItem")
* ),
*
* @OA\Property(property="total", type="integer", example=5, description="읽지 않은 전체 이슈 건수")
* )
*
@@ -85,6 +93,7 @@
* schema="TodayIssueUnreadCountResponse",
* type="object",
* description="읽지 않은 이슈 개수 응답",
*
* @OA\Property(property="count", type="integer", example=5, description="읽지 않은 이슈 건수")
* )
*
@@ -92,6 +101,7 @@
* schema="TodayIssueMarkAllReadResponse",
* type="object",
* description="모든 이슈 읽음 처리 응답",
*
* @OA\Property(property="count", type="integer", example=5, description="읽음 처리된 이슈 건수")
* )
*/
@@ -111,14 +121,17 @@ class TodayIssueApi
* in="query",
* description="조회할 최대 항목 수",
* required=false,
*
* @OA\Schema(type="integer", default=30, minimum=1, maximum=100)
* ),
*
* @OA\Response(
* response=200,
* description="성공",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
* @OA\Property(
@@ -131,8 +144,10 @@ class TodayIssueApi
* @OA\Response(
* response=401,
* description="인증 실패",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=false),
* @OA\Property(property="message", type="string", example="인증에 실패했습니다.")
* )
@@ -155,14 +170,17 @@ public function summary() {}
* in="query",
* description="조회할 최대 항목 수 (기본 10)",
* required=false,
*
* @OA\Schema(type="integer", default=10, minimum=1, maximum=50)
* ),
*
* @OA\Response(
* response=200,
* description="성공",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
* @OA\Property(
@@ -175,8 +193,10 @@ public function summary() {}
* @OA\Response(
* response=401,
* description="인증 실패",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=false),
* @OA\Property(property="message", type="string", example="인증에 실패했습니다.")
* )
@@ -197,8 +217,10 @@ public function unread() {}
* @OA\Response(
* response=200,
* description="성공",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="데이터를 조회했습니다."),
* @OA\Property(
@@ -211,8 +233,10 @@ public function unread() {}
* @OA\Response(
* response=401,
* description="인증 실패",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=false),
* @OA\Property(property="message", type="string", example="인증에 실패했습니다.")
* )
@@ -235,14 +259,17 @@ public function unreadCount() {}
* in="path",
* description="이슈 ID",
* required=true,
*
* @OA\Schema(type="integer", example=123)
* ),
*
* @OA\Response(
* response=200,
* description="성공",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="알림을 읽음 처리했습니다.")
* )
@@ -251,8 +278,10 @@ public function unreadCount() {}
* @OA\Response(
* response=404,
* description="이슈를 찾을 수 없음",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=false),
* @OA\Property(property="message", type="string", example="데이터를 찾을 수 없습니다.")
* )
@@ -261,8 +290,10 @@ public function unreadCount() {}
* @OA\Response(
* response=401,
* description="인증 실패",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=false),
* @OA\Property(property="message", type="string", example="인증에 실패했습니다.")
* )
@@ -283,8 +314,10 @@ public function markAsRead() {}
* @OA\Response(
* response=200,
* description="성공",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=true),
* @OA\Property(property="message", type="string", example="모든 알림을 읽음 처리했습니다."),
* @OA\Property(
@@ -297,8 +330,10 @@ public function markAsRead() {}
* @OA\Response(
* response=401,
* description="인증 실패",
*
* @OA\JsonContent(
* type="object",
*
* @OA\Property(property="success", type="boolean", example=false),
* @OA\Property(property="message", type="string", example="인증에 실패했습니다.")
* )
@@ -306,4 +341,4 @@ public function markAsRead() {}
* )
*/
public function markAllAsRead() {}
}
}