feat(core): OrganizationSaveReq + 상태 Enum 4종 추가 (리뷰 1단계)

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를 사용하도록 변경 예정.
This commit is contained in:
GA Pro
2026-05-12 22:49:38 +09:00
parent 418ff7c13e
commit 5e58a54128
5 changed files with 99 additions and 0 deletions
@@ -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();
}
}
@@ -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();
}
}
@@ -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";
}
@@ -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();
}
}
@@ -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();
}
}