package com.ycwl.basic.pipeline.annotation;

import com.ycwl.basic.pipeline.enums.StageOptionalMode;

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

/**
 * Stage 配置注解，统一声明 Stage 的元信息与可选性控制。
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface StageConfig {

    /**
     * Stage 唯一标识，用于外部配置或监控引用。
     */
    String stageId();

    /**
     * 可选性模式，默认不受外部控制。
     */
    StageOptionalMode optionalMode() default StageOptionalMode.UNSUPPORT;

    /**
     * 描述信息，便于文档与日志。
     */
    String description() default "";

    /**
     * 默认是否启用，仅在 optionalMode=SUPPORT 时生效。
     */
    boolean defaultEnabled() default true;
}
