package com.spring.infra.batch;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.cloud.context.config.annotation.RefreshScope;

/**
 * 배치 작업에 대한 메타데이터를 정의하는 어노테이션입니다.
 * <p>
 * 이 어노테이션은 배치 작업의 그룹, 이름 및 cron 표현식을 설정하는 데 사용됩니다.
 * </p>
 */
@RefreshScope
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface BatchJobInfo {
    /**
     * 배치 작업의 그룹을 정의합니다.
     * <p>
     * 기본값은 "DEFAULT"입니다.
     * </p>
     * 
     * @return 배치 작업 그룹 이름
     */
    String group() default "DEFAULT";

    /**
     * 배치 작업의 이름을 정의합니다.
     * <p>
     * 이 값은 배치 작업을 식별하는 데 사용됩니다.
     * </p>
     * 
     * @return 배치 작업 이름
     */
    String jobName() default "";

    /**
     * 배치 작업의 cron 표현식을 정의합니다.
     * <p>
     * 이 표현식은 배치 작업의 실행 주기를 설정하는 데 사용됩니다.
     * </p>
     * 
     * @return cron 표현식
     */
    String cronExpression() default "";
    /**
     * 배치 작업의 설명을 지정합니다.
     * 
     * @return 작업의 설명
     */
    String description() default "";
}
