package dev.lions.unionflow.client.interceptor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import jakarta.interceptor.InterceptorBinding;

/**
 * Annotation pour marquer les méthodes ou classes à intercepter pour le logging automatique.
 * 
 * <p>Cette annotation active l'intercepteur {@link BackendCallInterceptor} qui logge automatiquement
 * tous les appels aux services backend avec:
 * - Méthode appelée
 * - Paramètres (masqués si sensibles)
 * - Temps d'exécution
 * - Résultat ou erreur
 * 
 * <p><strong>Usage:</strong>
 * <pre>{@code
 * @LogBackendCall
 * public interface OrganisationService {
 *     @LogBackendCall
 *     OrganisationResponse creer(OrganisationResponse organisation);
 * }
 * }</pre>
 * 
 * @author UnionFlow Team
 * @version 1.0
 * @since 2025-12-24
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@InterceptorBinding
public @interface LogBackendCall {
}

