package com.lesingle.edu.common.annotation;

import com.lesingle.edu.common.enums.LogModule;
import com.lesingle.edu.common.enums.LogOperationType;

import java.lang.annotation.*;

/**
 * 操作日志注解
 * <p>
 * 用于标记需要记录操作日志的方法
 * </p>
 *
 * @author reading-platform
 * @since 2026-03-13
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log {

    /**
     * 操作模块
     * <p>
     * 例如：用户管理、课程管理、学校管理等
     * </p>
     */
    LogModule module() default LogModule.OTHER;

    /**
     * 操作类型
     * <p>
     * 例如：新增、修改、删除、查询、导出等
     * </p>
     */
    LogOperationType type() default LogOperationType.OTHER;

    /**
     * 操作描述
     * <p>
     * 例如：创建新用户、修改课程信息、删除学校记录等
     * </p>
     */
    String description() default "";

    /**
     * 是否记录请求参数
     * <p>
     * true：记录请求参数到数据库
     * false：不记录请求参数
     * </p>
     * 默认：true
     */
    boolean recordParams() default true;
}
