feat: 1200%룰 이연 분급 도래월 지급(PayInstallmentStep) + 코드베이스 신입교육 주석
PayInstallmentStep(Step 4.5): 1200%룰로 이연된 분급(installment_plan SCHEDULED)을 도래월(settle_month=정산월)에 recruit_ledger로 편입해 실제 지급. 이전엔 이연만 되고 도래월 지급 절차가 없어 차액이 영구 미지급되던 갭을 메움. - BatchConfig job flow에 step4b(calcRecruit→payInstallment→calcMaintain) 등록 - InstallmentPlanMapper.resetPaidToScheduledByMonth(+XML)로 재실행 멱등 (진입 시 PAID→SCHEDULED 역산, Step4 deleteBySettleMonth가 원장 정리) - RecruitLedgerMapper insert에 reconcile_status 컬럼, SettlementContext.installmentPaidCount - 단위테스트 3건(정상지급/멱등/계약미존재) GREEN 신입교육 주석: 컨트롤러/서비스/공통/프론트 전반에 도메인·코드 설명 주석 추가 (동작 변경 없음 — 빌드/테스트/타입체크 전부 GREEN으로 무회귀 확인). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,17 +6,34 @@ import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* 엑셀 컬럼 매핑 어노테이션. ExcelExporter / ExcelImporter 가 사용.
|
||||
* 엑셀 컬럼 매핑 어노테이션. VO(데이터 클래스)의 필드에 붙여서 엑셀의 어느 열에 어떤 형식으로
|
||||
* 출력/입력될지를 선언한다.
|
||||
*
|
||||
* <p>왜 필요한가: 정산 데이터는 엑셀 내려받기/올리기가 잦다. 필드마다 헤더명·순서·서식을 코드로
|
||||
* 일일이 다루면 번거롭고 실수가 많으므로, 필드 위에 이 어노테이션만 달면 ExcelService(엑셀 처리기)가
|
||||
* 리플렉션으로 읽어 자동으로 엑셀을 생성/파싱한다.
|
||||
*
|
||||
* <p>어떻게 쓰이나: {@code ExcelColumnParser}가 VO의 각 필드에서 이 어노테이션을 읽어
|
||||
* {@code ExcelColumnInfo} 목록으로 변환하고, {@code ExcelService}가 그 목록으로 엑셀을 만든다.
|
||||
*/
|
||||
// @Target(FIELD): VO의 멤버 필드에만 붙인다. @Retention(RUNTIME): 실행 중 리플렉션으로 읽으므로 필수.
|
||||
@Target(ElementType.FIELD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface ExcelColumn {
|
||||
/** 엑셀 첫 행에 표시될 헤더(컬럼 제목). */
|
||||
String header();
|
||||
/** 컬럼 표시 순서(작을수록 왼쪽). */
|
||||
int order();
|
||||
/** 컬럼 너비(엑셀 단위). 기본 15. */
|
||||
int width() default 15;
|
||||
/** 셀 표시 서식(예: 날짜/숫자 포맷). 비우면 기본 서식. */
|
||||
String format() default "";
|
||||
/** 공통코드 그룹. 코드값을 사람이 읽는 코드명으로 변환해 표시할 때 사용. */
|
||||
String codeGroup() default "";
|
||||
/** true면 민감정보(주민번호 등)를 마스킹하여 출력. */
|
||||
boolean masked() default false;
|
||||
/** 값이 비어있을 때 채울 기본값. */
|
||||
String defaultValue() default "";
|
||||
/** true면 엑셀 업로드(임포트) 시 필수 입력 컬럼으로 검증. */
|
||||
boolean required() default false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user