From 5e58a54128b9c9479a200e8703403b9e1c8dbb42 Mon Sep 17 00:00:00 2001 From: GA Pro Date: Tue, 12 May 2026 22:49:38 +0900 Subject: [PATCH] =?UTF-8?q?feat(core):=20OrganizationSaveReq=20+=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=20Enum=204=EC=A2=85=20=EC=B6=94=EA=B0=80=20(?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=201=EB=8B=A8=EA=B3=84)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ga-api 코드 리뷰에서 식별된 P0 이슈 해결의 1단계. 추가: - vo/org/OrganizationSaveReq.java — 감사필드 제외, @Valid 적용 - vo/org/AgentStatus.java {ACTIVE, LEAVE, SUSPEND} - vo/product/ContractStatus.java {ACTIVE, LAPSE, REVIVE, TERMINATE} - vo/settle/SettleStatus.java {CALCULATED, CONFIRMED, HOLD, PAID} - vo/ledger/ApproveStatus.java {PENDING, APPROVED, REJECTED} 값 결정 근거: V1/V2/V5/V6 DDL 주석 + V12 공통코드 (AGENT_STATUS, CONTRACT_STATUS, SETTLE_STATUS, APPROVE_STATUS). 다음 단계(api-developer)가 ga-api 서비스의 매직 스트링을 이 Enum으로 교체하고 OrganizationSaveReq를 사용하도록 변경 예정. --- .../com/ga/core/vo/ledger/ApproveStatus.java | 15 ++++++++ .../java/com/ga/core/vo/org/AgentStatus.java | 15 ++++++++ .../ga/core/vo/org/OrganizationSaveReq.java | 37 +++++++++++++++++++ .../ga/core/vo/product/ContractStatus.java | 16 ++++++++ .../com/ga/core/vo/settle/SettleStatus.java | 16 ++++++++ 5 files changed, 99 insertions(+) create mode 100644 ga-core/src/main/java/com/ga/core/vo/ledger/ApproveStatus.java create mode 100644 ga-core/src/main/java/com/ga/core/vo/org/AgentStatus.java create mode 100644 ga-core/src/main/java/com/ga/core/vo/org/OrganizationSaveReq.java create mode 100644 ga-core/src/main/java/com/ga/core/vo/product/ContractStatus.java create mode 100644 ga-core/src/main/java/com/ga/core/vo/settle/SettleStatus.java diff --git a/ga-core/src/main/java/com/ga/core/vo/ledger/ApproveStatus.java b/ga-core/src/main/java/com/ga/core/vo/ledger/ApproveStatus.java new file mode 100644 index 0000000..1154537 --- /dev/null +++ b/ga-core/src/main/java/com/ga/core/vo/ledger/ApproveStatus.java @@ -0,0 +1,15 @@ +package com.ga.core.vo.ledger; + +/** + * 승인 상태 코드 (common_code_group: APPROVE_STATUS, V12 기준) + * DB exception_ledger.approve_status: PENDING / APPROVED / REJECTED + */ +public enum ApproveStatus { + PENDING, // 대기 + APPROVED, // 승인 + REJECTED; // 반려 + + public String code() { + return this.name(); + } +} diff --git a/ga-core/src/main/java/com/ga/core/vo/org/AgentStatus.java b/ga-core/src/main/java/com/ga/core/vo/org/AgentStatus.java new file mode 100644 index 0000000..06e8cee --- /dev/null +++ b/ga-core/src/main/java/com/ga/core/vo/org/AgentStatus.java @@ -0,0 +1,15 @@ +package com.ga.core.vo.org; + +/** + * 설계사 상태 코드 (common_code_group: AGENT_STATUS, V12 기준) + * DB agent.status: ACTIVE / LEAVE / SUSPEND + */ +public enum AgentStatus { + ACTIVE, // 정상 + LEAVE, // 퇴사 + SUSPEND; // 정지 + + public String code() { + return this.name(); + } +} diff --git a/ga-core/src/main/java/com/ga/core/vo/org/OrganizationSaveReq.java b/ga-core/src/main/java/com/ga/core/vo/org/OrganizationSaveReq.java new file mode 100644 index 0000000..017b57b --- /dev/null +++ b/ga-core/src/main/java/com/ga/core/vo/org/OrganizationSaveReq.java @@ -0,0 +1,37 @@ +package com.ga.core.vo.org; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.time.LocalDate; + +@Data +public class OrganizationSaveReq { + + @NotBlank(message = "조직명은 필수입니다") + @Size(max = 100) + private String orgName; + + // null이면 최상위 조직 + private Long parentOrgId; + + @NotBlank(message = "조직유형은 필수입니다") + @Size(max = 10) + private String orgType; // HQ / BR / TM + + @NotNull(message = "조직레벨은 필수입니다") + private Integer orgLevel; + + @Size(max = 50) + private String region; + + @NotNull(message = "유효시작일은 필수입니다") + private LocalDate effectiveFrom; + + private LocalDate effectiveTo; + + @Size(max = 1) + private String isActive = "Y"; +} diff --git a/ga-core/src/main/java/com/ga/core/vo/product/ContractStatus.java b/ga-core/src/main/java/com/ga/core/vo/product/ContractStatus.java new file mode 100644 index 0000000..68cd2a3 --- /dev/null +++ b/ga-core/src/main/java/com/ga/core/vo/product/ContractStatus.java @@ -0,0 +1,16 @@ +package com.ga.core.vo.product; + +/** + * 계약 상태 코드 (common_code_group: CONTRACT_STATUS, V12 기준) + * DB contract.status: ACTIVE / LAPSE / REVIVE / TERMINATE + */ +public enum ContractStatus { + ACTIVE, // 유효 + LAPSE, // 실효 + REVIVE, // 부활 + TERMINATE; // 해지 + + public String code() { + return this.name(); + } +} diff --git a/ga-core/src/main/java/com/ga/core/vo/settle/SettleStatus.java b/ga-core/src/main/java/com/ga/core/vo/settle/SettleStatus.java new file mode 100644 index 0000000..40036f9 --- /dev/null +++ b/ga-core/src/main/java/com/ga/core/vo/settle/SettleStatus.java @@ -0,0 +1,16 @@ +package com.ga.core.vo.settle; + +/** + * 정산 상태 코드 (common_code_group: SETTLE_STATUS, V12 기준) + * DB settle_master.status: CALCULATED / CONFIRMED / HOLD / PAID + */ +public enum SettleStatus { + CALCULATED, // 계산완료 + CONFIRMED, // 확정 + HOLD, // 보류 + PAID; // 지급완료 + + public String code() { + return this.name(); + } +}